急求:跨数据库表更新问题

flyfox2006 2006-11-22 10:46:46
两个数据库 test1和test2,分别有表t.
现想用触发器控制,当更新或插入数据到 数据库test1中的t表时,数据库test2中
t表相应项对应的更新或插入;

create trigger SetTest2T
on test1.dbo.t
for update,insert
as
update test2.dbo.t /*更新数据库test2中的t表*/
set test2.dbo.t.Tdata=0
from
OPENROWSET('SQLOLEDB','192.168.100.244';'sa';'hongfu',
'select * from test2.dbo.t')
但当对test1的t表更新或插入时就报以下错误;

服务器: 消息 7391,级别 16,状态 1,过程 SetTest2T,行 5
该操作未能执行,因为 OLE DB 提供程序 'SQLOLEDB' 无法启动分布式事务。
[OLE/DB provider returned message: 新事务不能登记到指定的事务处理器中。 ]
OLE DB 错误跟踪[OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a]。

请各位高人帮小弟看看是什么原因~~感激不尽啦!
...全文
255 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dawugui 2006-11-22
  • 打赏
  • 举报
回复
dawugui:如果两个数据库在同一台机器的话就行,但当两个数据库不在同一台机器的话你这样写就不行啦!~~

create trigger myinsert on tt for insert
as
begin
insert into 机器名.tb..tt select * from inserted(前提,保证能连通那个机器)
end
flyfox2006 2006-11-22
  • 打赏
  • 举报
回复
我写的OPENROWSET('SQLOLEDB','192.168.100.244';'sa';'hongfu',
'select * from test2.dbo.t')
是不是有问题啊??
两个服务器是通的
我还试过在同一台机器上建立两个数据库测试过,我的代码也不行,不知道问题出在什么地方
flyfox2006 2006-11-22
  • 打赏
  • 举报
回复
dawugui:如果两个数据库在同一台机器的话就行,但当两个数据库不在同一台机器的话你这样写就不行啦!~~
dawugui 2006-11-22
  • 打赏
  • 举报
回复
你的数据库可在同机器,如果是不同的机器,两机器是否连通?
dawugui 2006-11-22
  • 打赏
  • 举报
回复
我在本机器的两个数据库TA,TB里面都有的表TT试了插入,没有问题.
create trigger myinsert on tt for insert
as
begin
insert into tb..tt select * from inserted
end

insert into tt(id,name) values('1','a')
我是丁学 2006-11-22
  • 打赏
  • 举报
回复
好像要对服务器进行登记什么的,记不太清了,帮助文件时有

22,207

社区成员

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

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