关于存储过程和触发器中使用链接服务器的问题

BestAns1 2003-08-30 03:59:48
我在A服务器上对B服务器建立了一个链接服务器,通过查询分析器已经可以执行在B服务器上的数据查询和更改,但是在A上的存储过程访问B中的表时,被告知以下错误

错误7405: 异类查询要求为连接设置ANSI_NULL和ANSI_WARNINGS选项.这将确保一致的查询语义。

我该怎么做呢?

  有时候还有一个错误: 该操作未能执行,因为 OLE DB 提供程序 'SQLOLEDB' 无法启动分布式事务。
(我已经启动了 SQL DTC)

怎么解决?
...全文
41 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
BestAns1 2003-08-31
  • 打赏
  • 举报
回复
我就是用的 Microsoft OLE DB Provider for SQL Server 啊!
leimin 2003-08-30
  • 打赏
  • 举报
回复
在MSSQLSERVER中,只提供下面的OLEDB的连接可以支持Use in distributed transactions
你可以试试改变OLEDB的Provider
Microsoft OLE DB Provider for SQL Server
Microsoft OLE DB Provider for ODBC
Microsoft OLE DB Provider for Oracle version 2.6
BestAns1 2003-08-30
  • 打赏
  • 举报
回复
现在只有第二个错误:
该操作未能执行,因为 OLE DB 提供程序 'SQLOLEDB' 无法启动分布式事务。

什么意思呢?
BestAns1 2003-08-30
  • 打赏
  • 举报
回复
还是不行啊,那两条我都加上去了,能不能给一个完整的例子呢?
wengdy2000 2003-08-30
  • 打赏
  • 举报
回复
up!
up!
up!
zjcxc 2003-08-30
  • 打赏
  • 举报
回复
楼上两位说得没错.

楼主检查一下.
txlicenhe 2003-08-30
  • 打赏
  • 举报
回复
SET ANSI_NULL_DFLT_ON on
SET ANSI_WARNINGS on

create proc ...



SET ANSI_NULL_DFLT_ON off
SET ANSI_WARNINGS off
pengdali 2003-08-30
  • 打赏
  • 举报
回复
请在查询分析器中创建这个存储过程,以后这个存储过程在企业管理和查询分析器都能修改了。

对于存储过程,SQL Server 使用最初创建存储过程时的 SET ANSI_NULLS 设置值。无论随后何时执行存储过程,SET ANSI_NULLS 的设置都还原为其最初使用的值并生效。当在存储过程内唤醒调用 SET ANSI_NULLS 时,其设置不更改。

在执行分布式查询时应将 SET ANSI_NULLS 设置为 ON。

在执行分布式查询时应将 ANSI_WARNINGS 设置为 ON。

企业管理中的ANSI_NULLS和ANSI_WARNINGS选项不对,但没有方法改动。在查询分析器可以设置ANSI_NULLS和ANSI_WARNINGS选项,而且默认值是对的。所以能在查询分析器创建此类存储过程,而不能在企业管理器创建此类存储过程。

就是:
create proc 名
as
SET ANSI_NULL_DFLT_ON on --注意
SET ANSI_WARNINGS on

select * from open...

22,209

社区成员

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

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