SSIS执行SQL查询任务找不到存储过程

时间:2013-02-08 17:36:22

标签: stored-procedures ssis task executequery

我正在使用现有的SSIS包来向其添加自定义日志记录。我正在尝试测试它,并且我有一个我没有创建的执行SQL任务,它会收到以下错误。

执行查询

  

“ap_pfl_DropProfileTables”

因以下错误而失败:

  

“无法找到存储过程'ap_pfl_DropProfileTables'。”   可能的失败原因:查询问题,“ResultSet”   属性设置不正确,参数设置不正确,或   连接未正确建立。

我不知道为什么我会收到此错误,因为:

  1. 我没有创建或更改它,这个包在生产中没有错误地运行。
  2. 存储过程只会截断两个表。它没有结果集或参数。
  3. 连接正常工作,因为此存储过程与另一个运行数据流任务的线程同时运行,该任务成功运行并使用此程序包中仅有的两个连接。
  4. 我对数据库进行了两次和三次检查,以确保存储过程存在且拼写正确。我甚至检查了存储过程中字母的大小写。
  5. 有关如何解决此问题的任何想法?

4 个答案:

答案 0 :(得分:3)

是的,这令人沮丧 - 但可行。关键是不使用ADO.NET连接管理器,而是使用旧的老式ADO连接管理器。第二个键是在Execute SQL Task编辑器的SQLStatement属性中不使用EXEC或EXECUTE。只需键入存储过程的名称(也可以使用3部分名称约定database.schema.storedprocedure。)

我没有在存储过程中尝试使用params。另外,我没有尝试使用OLE DB连接管理器。

答案 1 :(得分:3)

我知道这是一个旧线程,但我在SQL 2008 R2上使用SSIS时遇到了这个问题。

对于使用ADO.NET连接的我,我实际上必须将IsQueryStoredProcedure设置为False,然后错误就消失了。我是否使用EXEC并不重要。

答案 2 :(得分:1)

我自己遇到了这个问题,这就是我所做的(使用ADO.NET连接)

在SQLStatement字段中,我输入了我的存储过程的名称(dbo.myStoredProc)。 然后我将IsQueryStoredProcedure属性设置为“True”

我想当IsQueryStoredProcedure设置为true时,对象会自动预先设置EXEC来识别命令是存储过程调用。

答案 3 :(得分:0)

在遇到同样的问题后,我对此做了一些调查:

具体来说,我的情况是:

  1. 我需要使用ADO.Net,因为我正在运行SQL Azure
  2. 我想捕获存储过程返回值
  3. 首先我尝试了这个:

    SQLStatement 中我把proc名称(不带EXEC)

    myschema.MyProc;
    

    IsQueryStoredProcedure 中我将 False

    ResultSet 中,我将

    参数映射标签中,我输入了

    Variable Name      Direction    Data Type    Parameter Name   Parameter Size
    User::MyVariable  ReturnValue     Int32            0                 -1
    

    这样运行没有错误,但不捕获返回值。

    如果您将 IsQueryStoredProcedure 设置为true,我假设,它应该正确连接所有这些。但它会返回错误。

    这个https://technet.microsoft.com/en-us/library/cc280502(v=sql.110).aspx,表示在使用ADO.Net时捕获返回值“Set IsQueryStoreProcedure设置为True”。但它返回的错误是OP

    作为解决方法,我这样做了:

    DECLARE @R INT
    EXEC @R = MySchema.MyProc;
    SELECT @R
    

    我将 IsQueryStoredProcedure 保留为 False

    我将ResultSet设置为singlerow

    我删除了参数映射,而是映射了一个结果集:

    Result Name  Variable Name
         0          User::MyVariable