程序通过连接字符串访问sql server数据库,只能用sql native client连接,而不能用ole db provider for sql server连接是怎么回事呢?怎么样设置才能也通过ole db provider for sql server进行连接?
这样能连接:Provider=SQLNCLI.1;Password=123456;Persist Security Info=True;User ID=sa;Initial Catalog=CBTest;Data Source=10.27.1.72
换成这样就连接不上:Provider=SQLOLEDB.1;Password=123456;Persist Security Info=True;User ID=sa;Initial Catalog=CBTest;Data Source=10.27.1.72
而连接其他服务器上的sql2005数据库,一般两种方式都可以连接。
现在应用程序需要用SQLOLEDB.1这种连接方式。
这样能连接:Provider=SQLNCLI.1;Password=123456;Persist Security Info=True;User ID=sa;Initial Catalog=CBTest;Data Source=10.27.1.72
换成这样就连接不上:Provider=SQLOLEDB.1;Password=123456;Persist Security Info=True;User ID=sa;Initial Catalog=CBTest;Data Source=10.27.1.72
而连接其他服务器上的sql2005数据库,一般两种方式都可以连接。
现在应用程序需要用SQLOLEDB.1这种连接方式。
看看有没有 SQLOLEDB.1 这个接口再说
SQLOLEDB 0
DTSPackageDSO 0
SQLReplication.OLEDB 0
MSOLAP 0
MSDMine 0
OraOLEDB.Oracle 0
ADsDSOObject 1
SQLNCLI 1
MSDASQL 1
Microsoft.Jet.OLEDB.4.0 1
MSDAOSP 0
MSDAORA 1
SQLXMLOLEDB 0
SQLXMLOLEDB.4.0 0
MSIDXS 1
如果为非零,则 SQL Server 允许将访问接口实例化为进程内服务器。如果未设置此选项,则默认行为是在 SQL Server 进程外实例化访问接口。在 SQL Server 进程外实例化访问接口,可防止 SQL Server 进程在访问接口中出错。在 SQL Server 进程外实例化访问接口时,不允许更新或插入长的引用列(text、ntext 或 image)。接口之间有的会互相冲突的,慢慢调接口参数,我调过Microsoft.Jet.OLEDB.4.0和Microsoft.ACE.OLEDB.12.0之间的冲突,忘了具体过程。SSMS/对象资源管理器/服务器对象/链接服务器/访问接口,这里有界面的调整方式,good luck
如果安装SQL Server时采用默认实例的话,则两种方式都可以连接;而采用命名实例安装时,用ole db provider for sql server就无法访问,不知何故?用命名实例时连接字符串是用 服务器名/实例名 方式访问,但是不成功