显然死锁了。在对数据表TRADE执行INSERT操作的事件触发了触发器,而此时TRADE被INSERT语句独占,执行bcp操作时因为目标表TRADE被锁,导致bcp操作无法执行,而触发器执行操作未结束,INSERT语句持有的锁不会释放。

解决方案 »

  1.   

    试试:
    ------------------------------------------------------------------------------
    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"' 
    go
      

  2.   

    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"' 
    go
      

  3.   

    hisi(海山)(随机种子) 正解!
    SQLServer在启动触发器时会自动开启一个事务,所以在触发器里最好先Commit一下,把这个事务提交了,这样对原表的lock也就释放了。