CREATE trigger [dbo].[tr_user_insert] on [dbo].[user]
for insert
asset XACT_ABORT onBEGIN DISTRIBUTED TRANSACTIONdelete from mainserver.[WebData].dbo.user where id in (select id from inserted)insert into mainserver.[WebData].dbo.user select * from insertedif @@error<>0 rollback transaction
commit tran上面就是user表的触发器,当对本机的user表插入数据时,在mainserver上可以监视到会执行一个"select * from user"的语句,虽然执行成功了,数据也更新了,但这样会在两台电脑之前产生很大的流量,请问是哪里的问题产生的??可以确认两台服务器之间无其它任何软件会产生流量,而且只有有这个触发器才会使用链接服务器。
解决方案 »
- 一个SQL语句
- *** 请邹老大或者各位高手帮忙,非常妖怪的问题,可能和SQLServer的“排序规则”有关系 ***
- vb+ado+sql server 为什么一台客户端返回大结果集超时后,其它客户端全超时呢?
- 怎样查询附近的好友?
- sql查询求解,谢谢!在线等待...
- 求join家族用法文章
- SQL数据库备份出错,着急请大家帮忙!
- 请问nvarchar类型的'2003-06-16 09:25'怎样转换成日期型,我不懂呀!
- 请问有 关于 SQL SERVER 2000 性能优化的书吗?(能downlaod的)
- odbc获取数据库数据汉字乱码
- 请问用触发器怎么实现插入一条数据后把这条数据的标题后边括号里的内容去掉,并且替换
- Int类型变量按高(两个字节)、低(两个字节)拆分成两个变量是什么意思
为什么要在触发器里用呢,不明白,事务的开始为什么会在触发器里呢,是否应该去掉
流量肯定有的,可以插入一条很简单的数据,100M的局域网,会产生70%的流量,这正常吗?我的意思是,应该是哪里产生“select * from user”这个语句才生产的巨大的流量,现在要找到问题的根源。
会产生select语句
请问这个会产生select * from 语句吗?
已经确定是这句产生的,换成
delete from mainserver.[WebData].dbo.user where id=@id
就可以了,但这种在进行批量插入时,比如SqlBulkCopy,会不会受影响,因为上面只是处理了inserted只有一条数据,在进行SqlBulkCopy操作时,inserted表会有几条数据?
改成这样试试,不用in
delete a
from mainserver.[WebData].dbo.user a ,
inserted b
where a.id=b.id