我有一个before insert触发器,它执行一个SSIS包来执行一些工作。
从SQL Server查询窗口执行时(通过在表中插入一行),它可以正常工作。
但是当从java代码插入时,SSIS包不会被执行。 我真的很困惑,为什么这种奇怪的行为正在发生。任何帮助表示赞赏。
触发码:
USE [GreeF]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER trigger [dbo].[INS_TRG] on [dbo].[MyTrigger] for insert
as
begin try
Declare @cmd varchar(1000)
declare @FName varchar(100)
select @FName = [FileName] from inserted
select @cmd = 'dtexec /f "\\SOME_IP\packageName.dtsx" /Set "\Package.Variables[User::FileName].Properties[Value]";"'+@FName+'"'
exec master..xp_cmdshell @cmd
print @cmd
end try
begin catch
DECLARE @ErrorMessage NVARCHAR(4000);
DECLARE @ErrorSeverity INT;
DECLARE @ErrorState INT;
SELECT
@ErrorMessage = ERROR_MESSAGE(),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE();
raiserror(@ErrorMessage,@ErrorSeverity,@ErrorState)
end catch