在执行xp_cmdshell时,不可显示申明事务:
you can try:declare @theStr varchar(500)
declare @b int
begin 

truncate table  sales  --此句改了 set @theStr='bcp "pubs.dbo.sales" in c:\temp1.txt -c -S"hdlm" -U"sa" -P"admin"'
--print @theStr
exec @b=master..xp_cmdshell @theStr
end

解决方案 »

  1.   

    bcp不能在事务内
    事物内只能有:
    insert 
    delete
    update
    语句!
      

  2.   

    但此段bcp却在事务中,只是truncate table换成了delete from 就可以执行,没有发生堵塞。为什么?
    begin tran t1
    declare @theStr varchar(500)
    delete from ImportTable   --注意此句
    set @theStr='bcp "db1..ImportTable" in e:\ImportTable\05-12-2003--3-14PM.txt -c -SLL -Usa -Pfortune'
    print @theStr
    exec @b=master..xp_cmdshell @theStr
    commit tran t1
      

  3.   

    因为TRUNCATE是不记录事务处理的,而DELETE是记录事务处理,所以用TRUNCATE最好不要显示声明事务!