我正在使用现有的SSIS包来向其添加自定义日志记录。我正在尝试测试它,并且我有一个我没有创建的执行SQL任务,它会收到以下错误。
执行查询
“ap_pfl_DropProfileTables”
因以下错误而失败:
“无法找到存储过程'ap_pfl_DropProfileTables'。” 可能的失败原因:查询问题,“ResultSet” 属性设置不正确,参数设置不正确,或 连接未正确建立。
我不知道为什么我会收到此错误,因为:
有关如何解决此问题的任何想法?
答案 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)
在遇到同样的问题后,我对此做了一些调查:
具体来说,我的情况是:
在 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