大侠们。。帮我看看这触发器有什么问题吧。。急!在线等!
create trigger tr_insert on TRADE
for insert
as
EXEC master..xp_cmdshell 'bcp TRADE out c:\temp1.xls -c -q -S"DL" -U"sa" -P"1"'
go
单独执行EXEC master..xp_cmdshell 'bcp TRADE out c:\temp1.xls -c -q -S"DL" -U"sa" -P"1"'
是好的。。但一用触发器触发就死机。。高手们帮我看看吧!!谢谢!!急啊!!!
问题点数:100、回复次数:10Top
1 楼coolingpipe(冷箫轻笛)回复于 2005-08-02 09:51:39 得分 0
如果在查询分析器里用语句插入数据也死机马?Top
2 楼pgwron2004(小猪小猪我爱你)回复于 2005-08-02 09:54:57 得分 0
没在查询分析器试。。是直接往表里加的。。我现在去试下。谢谢Top
3 楼pgwron2004(小猪小猪我爱你)回复于 2005-08-02 10:12:04 得分 0
还是死机。。帮我看看这触发器写得有不有问题吧。。谢谢啊!!Top
4 楼libin_ftsafe(子陌红尘:TS for Banking Card)回复于 2005-08-02 10:25:48 得分 0
显然死锁了。
在对数据表TRADE执行INSERT操作的事件触发了触发器,而此时TRADE被INSERT语句独占,执行bcp操作时因为目标表TRADE被锁,导致bcp操作无法执行,而触发器执行操作未结束,INSERT语句持有的锁不会释放。Top
5 楼pgwron2004(小猪小猪我爱你)回复于 2005-08-02 10:28:18 得分 0
那。。我该怎么改啊。。我对触发器不熟。。能指导下吗。。谢谢Top
6 楼libin_ftsafe(子陌红尘:TS for Banking Card)回复于 2005-08-02 10:52:23 得分 0
试试:
------------------------------------------------------------------------------
alter trigger tr_insert on TRADE
instead of insert
as
insert into TRADE select * from inserted
EXEC master..xp_cmdshell 'bcp TRADE out c:\temp1.xls -c -q -S"DL" -U"sa" -P"1"'
goTop
7 楼pgwron2004(小猪小猪我爱你)回复于 2005-08-02 11:44:38 得分 0
好的。。刚才有点忙。。对不起啊。。我现在试Top
8 楼hisi(海山)(随机种子)回复于 2005-08-02 12:42:25 得分 0
libin_ftsafe(子陌红尘)的方法不行,一样堵塞。
这样:
create trigger tr_insert on TRADE
for insert
as
commit tran --提交事务
EXEC master..xp_cmdshell 'bcp TRADE out c:\temp1.xls -c -q -S"DL" -U"sa" -P"1"'
goTop
9 楼clz1982ssa(阿连)回复于 2005-08-02 13:10:05 得分 0
都是强人,小弟来了没什么说的了.支持楼上的Top
10 楼bugchen888(臭虫)回复于 2005-08-02 14:55:57 得分 0
hisi(海山)(随机种子) 正解!
SQLServer在启动触发器时会自动开启一个事务,所以在触发器里最好先Commit一下,把这个事务提交了,这样对原表的lock也就释放了。Top




