sql server 2005,只能用sql native client连接,而不能用ole db provider for sql server连接

baochengxin 2011-03-01 03:57:38
程序通过连接字符串访问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这种连接方式。
...全文
1282 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qiufushuang 2013-03-02
  • 打赏
  • 举报
回复
谢啦wdmjhy 刚刚解决我的问题
wdmjhy 2012-03-02
  • 打赏
  • 举报
回复
非默认实例使用ole db provider for sql server链接数据库时,得用“服务器名,port\实例名”来连接
baochengxin 2011-03-03
  • 打赏
  • 举报
回复
问题解决了,原来是与安装SQL Server时是否采用默认实例有关。
如果安装SQL Server时采用默认实例的话,则两种方式都可以连接;而采用命名实例安装时,用ole db provider for sql server就无法访问,不知何故?用命名实例时连接字符串是用 服务器名/实例名 方式访问,但是不成功
Linares 2011-03-01
  • 打赏
  • 举报
回复
allow_in_process(允许进程内)
如果为非零,则 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
baochengxin 2011-03-01
  • 打赏
  • 举报
回复
查询结果如下(其他字段都是0),allow_in_process为0代表是没有这个接口还是接口没有打开呢?请大侠进一步赐教,谢谢

provider_name allow_in_process
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
Linares 2011-03-01
  • 打赏
  • 举报
回复
exec sp_MSset_oledb_prop

看看有没有 SQLOLEDB.1 这个接口再说

22,300

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧