2015-01-21 9 views
0

Я не могу вызвать хранимую процедуру из команды OLEDB. Предварительный просмотр получает сообщение об ошибке:Ошибка параметров команды SSIS OLEDB

[OLE DB Command [420]] Error: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80004005. An OLE DB record is available. Source: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80004005 Description: "Syntax error, permission violation, or other nonspecific error".

Это SqlCommand работы:

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

, но не это:

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

Мой ConnectionString является:

Data Source=tcp:sld51cxbyz.database.windows.net,1433;User [email protected];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 [email protected];Initial Catalog=MigrationFromAX;Provider=SQLNCLI11.1;Auto Translate=False; 

Это работает.

Не поддерживает SQLCLI10 команду oledb?

Моя база данных - это база данных Azure.

Мой StoredProcedure является:

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 [email protected] 
END 
+0

Используйте профайлер, чтобы увидеть, что SQL посылается с помощью SSIS при запуске SQLCommand что не работает. –

ответ

2

Синтаксис ? для драйвер OLE DB. Поскольку это Azure, вы используете драйвер ADO.NET, который использует именованные параметры. Таким образом

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

И затем карту, соответственно, за исключением это DB Command OLE, который только использует диспетчер соединений OLE DB ...