我正在编写一个 SSIS 包以将数据从暂存环境移动到我们的生产服务器。
我有一个 CLR 存储过程 esp_ProcessStagingXML,它有 4 个参数,其中 2 个是输出参数..
我正在尝试为我的 SSIS 包的数据流中的每个项目调用一次此 CLR 存储过程。
我已经创建了 OLEDBCommand,具有以下 SqlCommand 属性:
exec [esp_ProcessStagingXML] ?, ?, ? output, ? output
但是无论我尝试做什么,我都会收到以下错误:
Error at Move Documents to XXX [Insert Into XXX[16]: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occured. Error code: 0x80004005.
An OLE DB record is availabl. Source: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80004005
Description: "Syntax error, permission violation, or other nonspecific error"..
我已经尝试在 sa 帐户下运行它以验证不涉及安全问题。由于 htis,我无法将列映射到参数,并且每次单击“刷新”时都失败。对于不是 CLR 存储过程的显式选择语句或存储过程,我没有任何问题。是否遇到/找到解决方案?
USE [XXXX]
GO
/****** Object: StoredProcedure [dbo].[esp_ProcessStagingXML] Script Date: 02/15/2011 15:31:35 ******/
ALTER PROCEDURE [dbo].[esp_ProcessStagingXML]
@param1 [nvarchar](max),
@param2 [bigint],
@param3 [bit] OUTPUT,
@param4[nvarchar](max) OUTPUT
WITH EXECUTE AS CALLER
AS
EXTERNAL NAME [PullFromStaging].[StoredProcedures].[esp_ProcessStagingXML]
GO
这是在 Microsoft Sql Server 2008 R2 上。
最佳答案
我通过将此存储过程包装在另一个称为 CLR 存储过程的存储过程中解决了这个问题。
hacky 但似乎工作。
关于c# - SSIS - CLR Sproc 的 OleDBCommand 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5009381/