Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 如何捕获在ssis包运行时内传递给存储过程的参数_Sql Server 2008 - Fatal编程技术网

Sql server 2008 如何捕获在ssis包运行时内传递给存储过程的参数

Sql server 2008 如何捕获在ssis包运行时内传递给存储过程的参数,sql-server-2008,Sql Server 2008,我有一个场景,我的客户告诉我他们的sql server代理作业有时会失败。经过调查,我们发现sql代理作业调用ssis包,该包使用参数(?、、?)在内部调用SP,并且根据错误消息在SP内部的TSQL中生成错误 我想在新的查询窗口中手动捕获参数以测试SP执行。我们在客户端环境中没有SSDT工具来调试SSIS包以识别参数,但是我们已经在SSMS中导入了SSIS包 是否有任何方法可以捕获在运行时通过SSMS中的ssis包传递给SP的参数?您可以打开sql server profiler,并在执行ssi

我有一个场景,我的客户告诉我他们的sql server代理作业有时会失败。经过调查,我们发现sql代理作业调用ssis包,该包使用参数(?、、?)在内部调用SP,并且根据错误消息在SP内部的TSQL中生成错误

我想在新的查询窗口中手动捕获参数以测试SP执行。我们在客户端环境中没有SSDT工具来调试SSIS包以识别参数,但是我们已经在SSMS中导入了SSIS包


是否有任何方法可以捕获在运行时通过SSMS中的ssis包传递给SP的参数?

您可以打开sql server profiler,并在执行ssis包时捕获在数据库中运行的查询,在那里,您可以看到传入的参数。

修改sp以捕获参数,然后再进行进一步处理。像这样:

    CREATE TABLE dbo.ProcParameters
    (
     SeqNo int identity(1,1),
    ProcNm VARCHAR(255),
    Param1 nvarchar(255),
    Param2 nvarchar(255),
ExecResult NVARCHAR(MAX),
    ExecTime DATETIME DEFAULT(GETDATE())
    )

    create procedure MyProc
    (
     @Param1 nvarchar(255),
    @Param2 nvarchar(255)
    )
    as
    begin
declare @Id int,@ExecResult NVARCHAR(MAX)

     insert into ProcParameters
    (
     ProcNm ,Param1 ,Param2
    )
    VALUES('MyProc',@Param1 ,@Param2)

select @id = @@identity
begin try
    /*

    Your Code goes here

    */
SET @ExecResult ='Success'

   end try
 BEGIN CATCH
select @ExecResult = ERROR_MESSAGE()
END CATCH

UPDATE ProcParameters
SET ExecResult = @ExecResult WHERE SeqNo = @id

    end

现在,每次执行proc时,这些值都将存储在ProcParameters表中,您可以从那里获得它。此外,每次执行的结果都可以在ExecResult列中找到。

这很简单,因为您可以在要调试的SP中编写代码:

  1- Create a table for variable capture 
  2- in procedure just give insert statement like 

 Insert into dbo.VariableLog values (@param1 , @param2 )

您是否有权更改客户端数据库中的sp?是@jayasuryasathesh我们可以编辑SPS,然后在开始进一步处理之前,尝试在sp中添加传入参数的日志,然后您可以从该表中跟踪参数