插入到远程服务器MSSQL 2005

插入到远程服务器MSSQL 2005,sql,sql-server,database,sql-server-2005,Sql,Sql Server,Database,Sql Server 2005,我想从本地mssql 2005服务器向远程mssql 2005服务器插入触发器中的数据 我有一张桌子;我创建了一个触发器(插入后)来检测是否添加了内容。 我想将该数据复制到另一个远程服务器的同一个表中。 我的问题是,如果我只是在普通查询中执行insert语句(非常简单,只使用静态数据进行测试),它就成功了;我甚至可以从远程服务器进行选择。 但当我将这个简单的插入放入触发器块时:“无法开始分布式事务” 已解决: 将DTC身份验证设置为无 我遇到了一个错误“嵌套事务无法执行,因为XACT_中止已关

我想从本地mssql 2005服务器向远程mssql 2005服务器插入触发器中的数据

我有一张桌子;我创建了一个触发器(插入后)来检测是否添加了内容。 我想将该数据复制到另一个远程服务器的同一个表中。 我的问题是,如果我只是在普通查询中执行insert语句(非常简单,只使用静态数据进行测试),它就成功了;我甚至可以从远程服务器进行选择。 但当我将这个简单的插入放入触发器块时:“无法开始分布式事务”

已解决:

  • 将DTC身份验证设置为无
  • 我遇到了一个错误“嵌套事务无法执行,因为XACT_中止已关闭”,所以在insert语句之前添加了一行:SET XACT_ABORT ON;我不知道什么“嵌套”我做了一个简单的插入,但罚款

在您的情况下,update语句打开本地事务,insert语句也打开与远程服务器的事务,这将是分布式事务的情况

为了使此功能正常工作,您必须启动DTC


要了解有关分布式事务的更多信息,您可以检查两端打开的链接

DTC?…在“正常查询”中尝试执行
开始分布式事务
。在触发器上下文中执行的查询将自动包装到事务中。如果触发器代码中存在任何分布式查询,则事务将自动升级为分布式事务。分布式事务控制在两台服务器上都运行。防火墙关闭了。允许的DTC访问、允许的入站、允许的出..尝试用“开始分布式事务”和“提交事务”括住insert语句失败,出现相同错误。Select语句也以这种方式失败,但如果我保留“distributed”关键字,则Select works insert not。另一台sql server正在virtualbox计算机上运行。已检查Windows事件查看器。mssql或msdtc没有警告或错误。我将双方的身份验证从相互更改为无。当我尝试插入分布式事务时,我得到了这样一句话:“需要嵌套事务,因为XACT_ABORT选项设置为OFF。”。我将authentication设置为none(DTC属性),并在触发器中添加了一行,在插入之前设置XACT_ABORT,看起来它正在工作。
CREATE TRIGGER T_SyrInserted
ON [DBProba].[dbo].[Syr]
AFTER INSERT
AS BEGIN

INSERT INTO [RemoteSrv].[DBProba].[dbo].[Syr] (SyrId, SyrNm ) VALUES (15000734, 'valami')
END