delphi7 ado控件访问sqlserver2000 的链接服务器,报 用户 'sa' 登录失败。原因: 未与信任 SQL Server 连接相关联 错误!

  • 主题发起人 主题发起人 sefeng1982
  • 开始时间 开始时间
S

sefeng1982

Unregistered / Unconfirmed
GUEST, unregistred user!
delphi7 ado控件访问sqlserver2000 的链接服务器,报 用户 'sa' 登录失败。原因: 未与信任 SQL Server 连接相关联 错误! ( 积分: 100 )<br />--添加链接服务器的语句
if exists(select 1 from master..sysservers where srvname='srv_lnk')
exec sp_dropserver 'srv_lnk','droplogins'
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','192.168.1.118'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'sa','sa'

--查询语句
select * from srv_lnk.vip.dbo.bos_diqu

如果把添加链接服务器的语句 放adoquery,或者 adostoredproc 里执行后.

然后在adoquery里执行 访问远程链接服务器的语句(查询语句),就会报
未与信任 SQL Server 连接相关联 错误!

但直接在sql 的查询分析器执行可以.

在查询分析器执行随便的访问远程链接服务器的语句后,再在adoquery里执行 访问的语句就又不报错了.但只要在ado里执行过 添加远程链接服务器的语句后,就又开始报 那错误.

关于这个错误的sql配置我已经全部检查过,应该是正确的,而且在sql里 执行这些操作是没任何问题,只要移植ado上就开始报这个错误.

这个问题困扰我很久了.希望得到各位大大的帮忙.
 
可能是程序的错误,重新装个ado控件看看
 
to corpose0:
不会是程序问题,这个问题我已经做过很多试验了.
 
没有用ado 访问 链接服务器的吗???
 
那用dephi6试试,JDBC试试
 
原困是未设置SQL SERVER登录认证模式为混合认证模式,因为SQL SERVER默认安装后认证模式为WINDOWS认证模式,从而导致出错。
 
to teclick:
所有设置都已经按照网上说的各种办法尝试过了.
不是sql访问不了,而只是ado控件访问不了.
刚才追中了下源代码,发现是调用原生recordset 的open 的时候报错. 在追中sqlserver 的事件分析器里没发现这个错误的提示.
 
在企业管理器中添加链接服务器,应该可以的。
 
一般就是teclick说的那种错误,不知道你测试连接成功了没。如果成功了就是你的sql语句的问题
 
TO renyi:
因为需要动态加载的.

to sddzlm:
连接肯定成功的.还有sql 语句就是上面那几句. 问题就是出在 只有在delphi 的ado 去执行添加链接服务器后 才会报那个错误.
 
用原生的ADO试验了下,还是一样的错误.

郁闷~
 
你在没有添加连接的时候,你的
if exists(select 1 from master..sysservers where srvname='srv_lnk')
exec sp_dropserver 'srv_lnk','droplogins'
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','192.168.1.118'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'sa','sa'
这些语句都执行不了的.连接都还没有建立,你怎么用adoquery来执行这个SQL??还没连接就执行肯定会报这个错了.
你在查询分析器里执行当然可以了.因为查询分析器启动的时候就要你进行数据库连接,这个时候查询分析器已经连上了数据库,执行当然不出错了.
语句执行先后顺序问题.你用ado添加这个连接的时候,必需要存在到数据库的连接,如果不存在,你的添加数据库服务器的SQL语句上哪儿去执行?
 
to erqie:
你说的连接是 adoquery的 连接吧?我当然已经 是连接好数据库了,不然adoquery会报 缺少连接的错误. 呵呵,我还不至于犯这种幼稚的错误吧.
 
除了teclick说的之外,如果你的sqlserver是开发版,也会出现你说的情况,即在别的机器用sqlserver自己的用户访问不了。
 
这个问题我遇到过,解决方法其实很筒单,客户机器登陆下服务器或客户机和服务器中退建一共同的用户和密码或在服务器上开放GUEST用户
 
sqlserver是个人版,两边的版本一样.
还有客户机也登陆过服务器,这些我都全部设置过了.

现在问题进展是:

在sqlserver 的查询分析器是很正常的访问,只是ado访问出问题.
如果在查询分析器里访问过了链接服务器,ado访问就正常了;但是如果网络断掉过,ado访问立即就不正常了.
 
正常情況一般都是SQL用戶帳號的問題。。
樓主說的問題看更新服務器和客戶端的MDAC試試
之前好像也有遇到過,記得好像是裝的時候沒有選混合登錄,最後從裝SQL系統再選混合登錄後就可以了。。
 
装的时候肯定是混合登陆的...
 
1.
若是个人版的话通过网络连接肯定是不行的
若是企业版的话请确认连接数

2.
请使用SQL Server和Windows认证的混合模式
 
to z :
你好,总算有人来回答这个问题了.
为什么sql个人版不行呢? 我现在装的就是个人版,但可以添加链接服务器,也可以在查询分析器里执行,就是不能在ado控件里执行.

2,肯定是使用了 混合模式了.

我不知道ado里还能如何修改,现在问题就是出现在调用 ado 控件的时候才会报这个错误,而且在查询分析器里访问过链接服务器 ,它就又不会报了.
 

Similar threads

后退
顶部