【问题标题】:SSIS OLEDB Command parameters errorSSIS OLEDB 命令参数错误
【发布时间】:2015-01-21 14:27:43
【问题描述】:

我无法从 OLEDB 命令调用存储过程。预览出错:

[OLE DB 命令 [420]] 错误:SSIS 错误代码 DTS_E_OLEDBERROR。一个 发生 OLE DB 错误。错误代码:0x80004005。 OLE DB 记录是 可用的。来源:“Microsoft SQL Server Native Client 10.0” Hresult:0x80004005 描述:“语法错误,权限违规, 或其他非特定错误”。

这个 sql 命令有效:

exec [dbo].[Update_PRODBOM_93Days] '1',5,'se1'.

但不是这个:

exec [dbo].[Update_PRODBOM_93Days] ?,?,?

我的连接字符串是:

Data Source=tcp:sld51cxbyz.database.windows.net,1433;User ID=bleetmaa@sld51cxbyz;Initial Catalog=MigrationFromAx;Provider=SQLNCLI10.1;Persist Security Info=True;Packet Size=0;Application Name=SSIS-DaxPRODtoOEMDW-{2DA081B5-9B6B-403F-B354-F759BEAD952D}DestinationConnectionOLEDB;database=MigrationFromAX;encrypt=True;trustservercertificate=False;connection timeout=30;

如果我将其更改为:

Data Source=sld51cxbyz.database.windows.net;User ID=bleetmaa@sld51cxbyz;Initial Catalog=MigrationFromAX;Provider=SQLNCLI11.1;Auto Translate=False;

它有效。

SQLCLI10 不支持 oledb 命令吗?

我的数据库是 Azure 数据库。

我的存储过程是:

CREATE PROCEDURE [dbo].[Update_PRODBOM_93Days]
    @PRODID nvarchar(20) 
    ,@PRODSTATUS int
    ,@DATAAREAID nvarchar(4)

AS
BEGIN

    update dbo.PRODBOM_93Days
       SET prodstatus = @PRODSTATUS
    where PRODID = @PRODID and DATAAREAID=@DATAAREAID
END

【问题讨论】:

  • 当您运行不起作用的 SQLCommand 时,使用分析器查看 SSIS 发送的 SQL。

标签: azure ssis parameter-passing oledbcommand


【解决方案1】:

? 语法适用于 OLE DB 驱动程序。由于这是 Azure,因此您使用的是使用命名参数的 ADO.NET 驱动程序。因此

exec [dbo].[Update_PRODBOM_93Days] @PRODID, @PRODSTATUS, @DATAAREAID;

然后进行相应的映射,除了这是一个仅使用 OLE DB 连接管理器的 OLE DB 命令...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多