改成这样试试:CREATE PROCEDURE proc_Test1_Insert
@id int
AS
declare @name nvarchar(500);
EXEC('exec master..xp_cmdshell ''dtexec /f "c:\Package.dtsx" /set \Package.variables[User::userId].Value;' + cast(@id as varchar) + '''')
GO
@id int
AS
declare @name nvarchar(500);
EXEC('exec master..xp_cmdshell ''dtexec /f "c:\Package.dtsx" /set \Package.variables[User::userId].Value;' + cast(@id as varchar) + '''')
GO
没有报错。一直在执行。如果我把传的参数去掉。自己指定。立马就运行完必,所以我想是传参的问题。to @yupeigu
你说的我也试过没用的。
要是把这个命令,带上参数,直接在cmd里运行,慢吗
http://hi.baidu.com/hunterzou/item/76e12416534ef158f1090e86里面有类似的代码:
declare @cmd varchar(1000)
declare @ssispath varchar(1000)
declare @fileName varchar(1000)
set @ssispath = 'C:\temp\Package.dtsx'
set @fileName = 'C:\temp\test.csv'
select @cmd = 'dtexec /F "' + @ssispath + '"'
select @cmd = @cmd + ' /SET \Package.Variables[User::fileName].Properties[Value];"' + @fileName + '"'
exec master..xp_cmdshell @cmd
要是把这个命令,带上参数,直接在cmd里运行,慢吗
好的我试试。
create trigger tgr_test1_insert
on [user]
after insert
as
declare @id int;
select @id = id from inserted;
--exec proc_Test1_Insert @id;
declare @cmd varchar(1000);
declare @ssispath varchar(1000);
set @ssispath = 'c:\Package.dtsx';
select @cmd = 'dtexec /F "' + @ssispath + '"';
select @cmd = @cmd + ' /SET \Package.Variables[User::userId].Properties[Value];"' + cast(@id as varchar) + '"';
exec master..xp_cmdshell @cmd;
go你看看代码
要是把这个命令,带上参数,直接在cmd里运行,慢吗
要是把这个命令,带上参数,直接在cmd里运行,慢吗
非常快的就完成了。
ssis里面也是简单的很就这一条sql
哦,对了,能不能这样,你执行ssis这个包,带参数,然后你打开sql profiler跟踪一下,看执行的语句有什么不同