1、去掉事务代码2、
请在查询分析器中创建这个存储过程,以后这个存储过程在企业管理和查询分析器都能修改了。  
 
对于存储过程,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...

解决方案 »

  1.   

    我现在写了一个存储过程,其中使用了分布式事务针对远程数据库进行更新、插入、删除等操作,在局域网内的多台机器的SQLSERVER2K是可以执行并没有任何问题。可通过INTERNET宽带进行时就报错,错误信息如下:
    (该操作未能执行,因为 OLE DB 提供程序 'SQLOLEDB' 无法启动分布式事务。[OLE/DB provider returned message: 新事务不能登记到指定的事务处理器中。 ]OLE DB 错误跟踪[OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned0x8004d00a]。)
    而且在INTERNET上通过企业管理器连接远程服务器没有问题,在查询分析器中使用查询远程数据库的语句也没有问题,现在是一使用存储过程就报错,而且问题主要是在存储过程中的对远程数据库的更新、插入、删除(这些语句使用该方式执行exec(@updatesqltext)
    )就报错误。请各位帮忙解决一下。