如何使用SQL触发器运行批处理文件(.Bat)

时间:2017-05-03 05:10:08

标签: sql-server vb.net windows batch-file triggers

我正在尝试使用SQL triggers运行存储在D:\驱动器中的.bat文件。
当某个操作发生在表中时,需要触发此触发器并且必须执行批处理文件。 因为我已经创建了一个示例触发器。

Create TRIGGER [dbo].[TestBatch] ON [dbo].[RawMaterial] 
FOR UPDATE
AS
DECLARE @PassedVariable VARCHAR(100)
DECLARE @CMDSQL VARCHAR(1000)
begin
--SET @PassedVariable = 'SqlAuthority.com'
SET @CMDSQL = 'D:\AutoServer.bat'-- + @PassedVariable
EXEC master..xp_CMDShell @CMDSQL
end

但我没有得到正确的输出。当我运行上面的脚本时,它会给出一些错误信息。

  

“设备尚未就绪.NULL”

我会请求所有人为我的上述问题提供解决方案。 提前致谢。

1 个答案:

答案 0 :(得分:1)

在表触发器上运行bat文件不是一个好主意,取决于你的bat文件正在做什么以及它需要做多少,这可能是非常有问题的。表触发器被触发的频率也会加剧问题。 最好将受影响的触发记录存储到另一个单独的表中,例如处理过的标记,并定期运行bat文件,通过一个SQL预定作业,一旦通过bat文件处理记录,就会将处理过的标志翻转为true。