各位大侠:
在用触发器调用存储过程,存储过程中用到Bcp程序生成文件,在窗口中执行存储过程没问题,用触发器执行时一下就卡死了,没响应了。哪位大侠知道如何处理??
存储过程如下
CREATE  PROCEDURE sp_sql_query_to_file(
@servername varchar(20),  --服务器名
@sql_query varchar(200) , --SQL查询语句,有字符条件时用单引号
@filePath_name varchar(20)--导出路径和文件名
)AS
DECLARE @sql varchar(100)
SET @sql='bcp "'+@sql_query + '" queryout '+' "'+@filePath_name+'.txt " /t "," /w'
  +' /S '+@servername
  
select @sql  
print @sql
EXEC master..xp_cmdshell @sqlIF @@Error<>0 BEGIN
print '生成文件时出错了,请查看!'+@@Error
END
GODECLARE @sql_query varchar(600)
set @sql_query='select gameid from bt6db.dbo.btgamelist'
select len(@sql_query)
EXEC sp_sql_query_to_file '127.0.0.1',@sql_query,'e:\1'触发器如下:
CREATE TRIGGER [1231] ON [dbo].[BtGameList] 
FOR UPDATE
AS
if Update(updatetime)  
begin
DECLARE @sql_query varchar(100)
set @sql_query='select gameid from bt6db.dbo.btgamelist'
EXEC sp_sql_query_to_file '127.0.0.1',@sql_query,'e:\1'
end

解决方案 »

  1.   

    你调BCP的@sql语法根本不对啊SET @sql='bcp "'+@sql_query + '" queryout '+@filePath_name+'.txt -T -w'+' -S '+@servername 不是用斜杠,是横线
    也不是小t,是大写的T使用安全连接
      

  2.   

    可能触发器启动的BCP里用不了安全连接吧试着用-U -P指定管理员权限的用户密码看看
      

  3.   

    问题搞定,是因为触发器触发时对本表锁定,不能在其上进行任何的操作,若要执行操作,需在前执行commit语句,同时感谢urdoom的指点!!