使用触发器时碰到 OLE DB provider "SQLNCLI" 错误

gazi82 2010-11-15 11:13:09
本地数据库创建了如下的触发器

CREATE TRIGGER tr_in_t on [Northwind].[dbo].[t]
FOR INSERT
AS
BEGIN
SET NOCOUNT ON
SET XACT_ABORT ON
DECLARE @id INT, @name VARCHAR(20);
SELECT @id=id, @name=name FROM inserted;
INSERT INTO TestLocal.pubs.dbo.test(id,name) VALUES(@id,@name);
END

// 在本地数据库测试插入一条信息时,会不会同步插入到远程数据库指定的表

INSERT INTO [Northwind].[dbo].[t]
([id]
,[name])
VALUES
(3,'sf')


触发器执行,没有报任何错误, 但是单独执行 insert 语句时,总是报错。
link server 是测试过的,没有问题。
报错信息:
OLE DB provider "SQLNCLI" for linked server "TestLocal" returned message
"The partner transaction manager has disabled its support for remote/network transactions.".
Msg 7391, Level 16, State 2, Procedure tr_in_t, Line 9
The operation could not be performed because OLE DB provider "SQLNCLI" for linked server "TestLocal" was unable to begin a distributed transaction.
...全文
160 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gazi82 2010-11-16
  • 打赏
  • 举报
回复
重新找了太 2003 服务器作测试,检查 MSDTC 配置,
begin distributed tran
select * from TestLocal.pubs.dbo.test
commit tran

报错信息变更:
OLE DB provider "SQLNCLI" for linked server "PDSNOMC" returned message "No transaction is active.".

gazi82 2010-11-16
  • 打赏
  • 举报
回复


没人遇到过这个问题么?
gazi82 2010-11-15
  • 打赏
  • 举报
回复

已经看了您的文章,但是问题照旧。

select * from TestLocal.pubs.dbo.test ---查询OK


---
begin distributed tran
select * from TestLocal.pubs.dbo.test
commit tran
-- // 查询出错了。

根据您的文章,确保有三项设置,都参照您的建议,手工重启 MSDTC 还是不行。
还有哪可以检查么?

谢谢
duanzhi1984 2010-11-15
  • 打赏
  • 举报
回复
http://blog.csdn.net/duanzhi1984/archive/2010/01/04/5129097.aspx

请参考我的BLOG文章。和你的问题是一样的。
duanzhi1984 2010-11-15
  • 打赏
  • 举报
回复
请开启分布式事务的功能。

34,591

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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