c# - SSIS - CLR Sproc 的 OleDBCommand 问题

标签 c# sql-server ssis

我正在编写一个 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/

相关文章:

C# 使用命名空间

mysql - 如何删除存储过程?

c# - 如何使用 C# 通过 Facebook API 发送私有(private)消息

c# - 使用未分配的局部变量 : value type vs custom struct

sql-server - 标识列的显式值?

sql - 如何在 SQL 中更新 ParentID 字段

ssis - 无法从 XML 文件推断 XSD。XML 包含多个命名空间

sql - SSIS 在控制流任务之间传递数据源

.net - 从.Net调用SSIS包

c# - 在 DrawText win32 函数中设置格式