改成这样试试: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

解决方案 »

  1.   

    to @yupeigu
    没有报错。一直在执行。如果我把传的参数去掉。自己指定。立马就运行完必,所以我想是传参的问题。to @yupeigu 
    你说的我也试过没用的。
      

  2.   


    要是把这个命令,带上参数,直接在cmd里运行,慢吗
      

  3.   

    另外, 你看看这个文章:向SSIS包传递动态参数值
    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
      

  4.   


    要是把这个命令,带上参数,直接在cmd里运行,慢吗
    好的我试试。
      

  5.   

    还是不行一样的结果
    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你看看代码
      

  6.   


    要是把这个命令,带上参数,直接在cmd里运行,慢吗
      

  7.   


    要是把这个命令,带上参数,直接在cmd里运行,慢吗
    非常快的就完成了。
      

  8.   


    ssis里面也是简单的很就这一条sql
      

  9.   


    哦,对了,能不能这样,你执行ssis这个包,带参数,然后你打开sql profiler跟踪一下,看执行的语句有什么不同