Я пытаюсь запустить командный файл в триггере SQL Server, чтобы получить информацию из запроса и поместить ее в текстовый файл. Я пытаюсь сделать это, потому что я хочу сделать что-то с информацией в том же пакетном файле позже. Проблема в том, что при вызове триггера он застревает при выполнении.
Я протестировал запрос и вызов пакетного файла в Microsoft SQL Server Management Studio, и они оба работают, но когда я вызываю пакетный файл в триггере, он застревает при выполнении.
Вот мой код. Сначала пакетный файл, а затем триггер, запросить пакетный файл вызывает, и мой запрос для проверки триггера
@echo off
echo start
sqlcmd -S AZ7GH2\SQLEXPRESS -h -1 -i C:\Users\user1\Documents\test3.sql -o C:\Users\user1\Documents\test.txt
echo end
exit
Триггер SQL Server
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[ffupdate]
ON [dbo].[feat]
AFTER UPDATE
AS
BEGIN
IF UPDATE (act)
BEGIN
EXEC xp_CMDShell 'C:\Users\user1\Documents\ffscript.bat'
END
END
test3.sql (запрос вызывается из пакетного файла)
:setvar SQLCMDERRORLEVEL 1
SET NOCOUNT ON
USE [dev]
DECLARE @ver INT
SET @ver = CHANGE_TRACKING_CURRENT_VERSION() - 1
CREATE TABLE #ctb(fuid INT)
INSERT INTO #ctb
SELECT featid
FROM CHANGETABLE(CHANGES feat, @ver) AS tb
SELECT fl.flg
FROM fl, #ctb
WHERE fl.fid = #ctb.fuid
GO
:setvar SQLCMDERRORLEVEL 0
SET NOCOUNT OFF
Запрос на проверку триггера
USE [dev]
UPDATE feat
SET act = 0
WHERE featid = 1;
Я не знаю, что не так. Я искал ответ и не могу его найти. Как я уже сказал, все прекрасно работает само по себе, но когда все вместе, оно застревает при выполнении. Любая помощь будет принята с благодарностью.