触发器问题!!!

btlyeo 2007-08-15 08:40:38
192.168.0.1上,打开企业管理器 -> (local)(Windows NT) -> 安全性 -> 连接服务器 -> 右键 -> 新建连接服务器 -> 常规 -> 连接服务器:Link2 -> 其它数据源 -> Microsoft OLE DB Provider for SQL Server -> 数据源:192.168.0.2(也可用机器名) -> 安全性 -> 用此安全上下文进行 -> 输入远程登录用户名和密码。

然后我在192.168.0.1的A表上做了个触发器,判断如果A表有新记录,则把新记录插入192.168.0.2上的一个表B里(怎么判断是新记录?表A里以前有很多数据。)

但是我测试,insert 一条语句后,就提示出错:
---------------------------------------------------------------
服务器: 消息 8501,级别 16,状态 3,过程 Checks,行 5
服务器 'NMCOVICS-0076' 上的 MSDTC 不可用。
这个是什么错误!!?
------------------------------------------------------------------

1,我用触发器的时候怎么能光把新插入的记录拿到B表里?
2,这个错误怎么解决!

Help!!!
...全文
189 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
btlyeo 2007-08-16
  • 打赏
  • 举报
回复
那个问题还是没解决,最后没办法,楞是把两个数据库装到一个服务器上了!郁闷!多谢了
btlyeo 2007-08-15
  • 打赏
  • 举报
回复
我明天找两个 Win2000的机器试!大哥我今天就不结帖子了,明天早上你一定要看一下这个帖子啊,我可能还有问题要问你,帮忙了!分肯定给你了,多谢多谢!
hb_gx 2007-08-15
  • 打赏
  • 举报
回复
XP我没用过,不知道上面能不能用DTC服务,刚才问了几个有用过XP的说,分布式不能在XP上用,也不知道是不是真的,你的SqlServer版本没有问题,应该是XP的问题


触发器跟你改一下,你自己看看,你只是需要新插入的数据,并不是要所有的数据

CREATE TRIGGER [Checks] ON [dbo].[pushmsg]
after INSERT
AS
set nocount on
insert into link1.emoasp.dbo.pushmsg (PhoneNumber,Msg)
select PhoneNumber,Msg from INSERTED
set nocount off
btlyeo 2007-08-15
  • 打赏
  • 举报
回复
我已经建立了连接LINK1
我要的结果是:

link1.emoasp.dbo.pushmsg 如果有新数据近来,则把新数据插入本地的pushmsg 表里。

两个pushmsg表都有个特点,就是里面的数据每隔几秒就会被删除掉,里面3个字段,其中有个ID字段是自动增量

麻烦高手帮忙了!实在搞不出来了,一个是如何只插新数据的问题,另外一个是如何建立连接。

很奇怪的,我直接在查询分析器里写
insert into link1.emoasp.dbo.pushmsg (PhoneNumber,Msg)
select PhoneNumber,Msg from pushmsg where left(PhoneNumber,3) in ('134','135','136','137','138','139','158','159')

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

btlyeo 2007-08-15
  • 打赏
  • 举报
回复
一个是XP+SQL2000SP4,另外一个是WIN2000+SQL2000SP4

我把服务器两边的Distributed Transaction Coordinator服务都打开了!

并且把exec master..xp_cmdshell 'net start msdtc',no_output 分别在两个机器上运行的。

而且两边都是MCAFEE杀毒软件关闭了。没有防火墙!

触发器的代码:
----------------------------------------
CREATE TRIGGER [Checks] ON [dbo].[pushmsg]
after INSERT
AS
set nocount on
insert into link1.emoasp.dbo.pushmsg (PhoneNumber,Msg)
select PhoneNumber,Msg from pushmsg where left(PhoneNumber,3) in ('134','135','136','137','138','139','158','159')
set nocount off
-----------------------------------------------------------


hb_gx 2007-08-15
  • 打赏
  • 举报
回复
不知道你两边的服务器是什么版本

还有你SqlServer的版本,SQLOLEDB 这个接口对Sql2000都是支持的

你是不是用的Sql2005,如果是Sql2005用 SQLNCLI 接口
btlyeo 2007-08-15
  • 打赏
  • 举报
回复
To : hb_gx(高升)
我把服务器两边的Distributed Transaction Coordinator服务都打开了!
----------------------------------------------
服务器: 消息 7391,级别 16,状态 1,过程 Checks,行 5
该操作未能执行,因为 OLE DB 提供程序 'SQLOLEDB' 无法启动分布式事务。
[OLE/DB provider returned message: 新事务不能登记到指定的事务处理器中。 ]
OLE DB 错误跟踪[OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a]。
-------------------------------------
btlyeo 2007-08-15
  • 打赏
  • 举报
回复
simonhehe(收购猩猩) 大哥,我还是不明白!
我要把我机器(IP是1)的一个表A里的新记录,插入表B里(IP是2)!表A的数据不可以删除。

表A和表B的结构不同,A里有N个字段,其中一个字段表示内容

B表就一个字段内容

另外提示MSDTC连接失败。
麻烦你把完整代码写下好么,多谢!很急,没时间研究着搞了,多谢!!!
hb_gx 2007-08-15
  • 打赏
  • 举报
回复
控制面板-管理工具-服务
将这个DTC服务打开
Distributed Transaction Coordinator

这个服务是进行分布式事务必备的
simonhehe 2007-08-15
  • 打赏
  • 举报
回复
http://topic.csdn.net/t/20060523/11/4771841.html
lz根据你的情况修改一下就可以了
simonhehe 2007-08-15
  • 打赏
  • 举报
回复
create trigger t_test on test
for insert
as
set XACT_ABORT on
--启动远程服务器的MSDTC服务
exec master..xp_cmdshell 'isql /S"xz" /U"sa" /P"" /q"exec master..xp_cmdshell ''net start msdtc'',no_output"',no_output

--启动本机的MSDTC服务
exec master..xp_cmdshell 'net start msdtc',no_output

--进行分布事务处理,如果表用标识列做主键,用下面的方法
BEGIN DISTRIBUTED TRANSACTION
delete from openrowset('sqloledb','xz';'sa';'',test.dbo.test)
where id in(select id from inserted)

commit tran
go

34,593

社区成员

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

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