字符串,表示在注册表中指定的 OLE DB 访问接口的友好名称(或 PROGID)。provider_name 没有默认值。
'datasource'
与某个特定 OLE DB 数据源相对应的字符串常量。datasource 是将传递给访问接口的 IDBProperties 接口以初始化访问接口的 DBPROP_INIT_DATASOURCE 属性。通常,该字符串包含数据库文件的名称、数据库服务器的名称,或者访问接口能理解的用于定位数据库的名称。
'user_id'
字符串常量,它是传递给指定 OLE DB 访问接口的用户名。user_id 为连接指定安全上下文,并作为 DBPROP_AUTH_USERID 属性传入以初始化访问接口。user_id 不能是 Microsoft Windows 登录名称。
'password'
字符串常量,它是传递给 OLE DB 访问接口的用户密码。在初始化访问接口时,password 作为 DBPROP_AUTH_PASSWORD 属性传入。password 不能是 Microsoft Windows 密码。
'provider_string'
访问接口特定的连接字符串,作为 DBPROP_INIT_PROVIDERSTRING 属性传入以初始化 OLE DB 访问接口。通常 provider_string 封装初始化访问接口所需的所有连接信息。有关 SQL 本机客户端 OLE DB 访问接口可识别的关键字列表,请参阅Initialization andAuthorization Properties。
OLE DB 访问接口特定的连接字符串,它可标识唯一的数据源。provider_string 的数据类型为 nvarchar(4000),默认值为 NULL。provstr 或传递给 IDataInitialize 或设置为 DBPROP_INIT_PROVIDERSTRING 属性以初始化 OLE DB 访问接口。
在针对 SQL 本机客户端 OLE DB 访问接口创建链接服务器后,可将 SERVER 关键字用作 SERVER=servername\instancename 来指定实例,以指定特定的 SQL Server 实例。servername 是运行 SQL Server 的计算机名称,instancename 是用户将连接到的特定 SQL Server 实例的名称。
在网上查询了Microsoft OLE DB Provider for Microsoft Jet的资料:发现对于带有密码的access数据库,要在相应的连接字符串参数中进行标注,文章里面还说明了:mdb数据的密码其实是DBPROPSET_JETOLEDB_DBINIT属性里面的DBPROP_JETOLEDB_DATABASEPASSWORD ,我们可以通过对初始化DBPROP_INIT_PROVIDERSTRING对其进行修改,也就是我们平时所说的连接字符串,这下问题就剩下寻找定义数据库密码属性的关键字了。我们发现,其关键字为Jet OLEDB:Database Password,然而在OpenRowSet函数中,由于微软为了兼容性的考虑吧,其关键字为pwd,貌似采用的是odbc的命名模式?
DBPROP_INIT_PROVIDERSTRING
Description: Extended Properties
DBPROP_JETOLEDB_DATABASEPASSWORD
Type: VT_BSTR
Typical R/W: R/W
Description: Jet OLEDB:Database Password
Password used to open the database. This differs from the user password in that the database password is per file, while a user password is per user.
1.OpenRowSet方式 SELECT * FROM OpenRowSet('Microsoft.Jet.OLEDB.4.0',';database=C:\abc.mdb;pwd=test','select * from student where id=1') update OpenRowSet('microsoft.jet.oledb.4.0',';database=C:\abc.mdb;pwd=test','select * from student where id=1') set name='张三' 2.OpenDataSource方式 select * from OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source=C:\abc.mdb;Jet OLEDB:Database Password=test')...student update OpenDataSource('microsoft.jet.oledb.4.0','Data Source=C:\abc.mdb;Jet OLEDB:Database Password=test')...student set name='张三' WHERE id=1 3.链接服务器方式 EXEC sp_addlinkedserver @server = N'serTest', @provider = N'Microsoft.Jet.OLEDB.4.0', @srvproduct = N'OLE DB Provider for Jet', @datasrc = N'C:\abc.mdb', @provstr =N';pwd=test'; EXEC sp_addlinkedsrvlogin 'serTest' EXEC sp_helpserver --EXEC sp_dropserver N'serTest' Go UPDATE serTest...student SET name='张三' WHERE id=1 SELECT * FROM serTest...student WHERE id=1