请教一个db-library与链接服务器的诡异问题

yuhangding 2012-02-15 10:01:10
使用的是sql2000数据库,安装过sp4补丁。
还有一个古老的用c++写的程序,会调用该数据库的一个存储过程,数据库访问使用的是db-library。
该过程其实是通过链接服务器查询另一个sql2000数据库中一张表的数据。比如:
create procedure p_query_inf
as
select num from webserver.zhdb.dbo.numberinfo;
go

奇怪的是:这个过程写好,在查询分析器中执行没有任何问题,但该c++程序调用时就执行存储过程失败(错误原因不详,因为该程序很老了,基本没有熟悉的人)。
但是如果把c++程序访问的数据库和链接服务器指向的数据放在一台机子上,存储过程中不使用链接服务器程序变为这样
create procedure p_query_inf
as
select num from zhdb.dbo.numberinfo;
go

那个古老的c++程序就调用该过程成功。所以我就怀疑是链接服务器的问题,可是我在查询分析器里使用跟c++程序访问数据库一样的用户,执行该过程就没问题啊。(查询出来结果集不大,就几百条)
真奇怪,请各位高手指点!
...全文
145 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
唐诗三百首 2012-02-16
  • 打赏
  • 举报
回复
debug一下c++程序,应该有详细错误信息的.

靠猜很难搞定D.
yuhangding 2012-02-16
  • 打赏
  • 举报
回复
今天已经解决了,链接服务器建的没有问题。
最终用profiler又跟踪了一下程序启动时候的行为,在设置跟踪事件时,把错误和告警选上,通过跟踪发现调用存储过程时,报7405错误。
这样就有目标了,网上一查是“异类查询要求为连接设置 ANSI_NULLS 和 ANSI_WARNINGS 选项。 这将确保一致的查询语义。请启用这些选项,然后重新发出查询。”
其实就是那个程序启动连接数据库时,没有设置ANSI_NULLS和ANSI_WARNINGS。但是在查询分析器连接数据库后默认是设置了这两个选项的,所以查询分析器执行没有错误。
解决的办法有两个,一个是程序连接数据库后设置那两个选项为ON,再调用存储过程,但是程序很古老了无法修改。
我用的第二个办法,就是右键数据库服务,选择属性,在连接选项卡,默认连接选项中,把ANSI_NULLS,ANSI_WARNINGS都勾选了,就都OK了。
yuhangding 2012-02-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xxyj6450 的回复:]

不是指存储过程中的事务,是指调用存储过程的C是否在调用前开启了事务。分布式事务是个麻烦的东东,稍有不慎就会报错。
你最好在运行C程序的机器上用查询分析器执行一下,看是什么样的结果。
[/Quote]
这倒是可以看看,明天看看C程序的代码,调过程之前还有事务没。
三断笛 2012-02-15
  • 打赏
  • 举报
回复
不是指存储过程中的事务,是指调用存储过程的C是否在调用前开启了事务。分布式事务是个麻烦的东东,稍有不慎就会报错。
你最好在运行C程序的机器上用查询分析器执行一下,看是什么样的结果。
yuhangding 2012-02-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xxyj6450 的回复:]

问题应该不出在C程序中。
1.检查链接服务的设置是否正常。链接服务器设置不正确可能会导致无法执行。比如说链接服务器是否有加端口,即使是1433,在连接时也要记得加上。
2.检查代码中是否有事务,如果有,那要注意配置分布式事务。具体可以百度查。
3。检查链接服务器的权限设置。
4。检查链接服务器的服务配置,是否有开户RPC,MSTDC等等。

最好是提供你的错误描述。
[/Quote]
存储过程中没有任何事务,但怕这个出问题,我把MSDTC也打开了,我觉得权限也不应该有问题,因为我觉得在查询分析器里执行该过程使用的用户,和在C程序里执行该过程使用的用户是一样的。
三断笛 2012-02-15
  • 打赏
  • 举报
回复
问题应该不出在C程序中。
1.检查链接服务的设置是否正常。链接服务器设置不正确可能会导致无法执行。比如说链接服务器是否有加端口,即使是1433,在连接时也要记得加上。
2.检查代码中是否有事务,如果有,那要注意配置分布式事务。具体可以百度查。
3。检查链接服务器的权限设置。
4。检查链接服务器的服务配置,是否有开户RPC,MSTDC等等。

最好是提供你的错误描述。

22,300

社区成员

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

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