Wczoraj musiałem załadować trochę danych z bazy Oracle do mojego SQL Server 2008 R2 i przy okazji dostałem dziwny błąd SSIS, ale po kolei. Pewnie jak wielu z Was mój system ma 64 bit wersję Windows. Zadanie wydaje się proste, ale kiedy chcesz użyć po raz pierwsze Oracle Ole DB z Business Intelligence Development Studio, dostaniesz informację, że musisz zainstalować driver. To dlaczego pokazują, że jest w systemie??? No dobra na początek potrzebujemy Oracle Ole DB driver dla Windows.

No dobra wchodzimy na stronę Oracla, ale tam tylko 32 bitowa wersja sterownika. No dobra tworzymy naszą paczkę prosty przepływ danych, jedno źródło, jeden docelowy serwer. Teraz po prosty wciskamy F5 i … Nici.

Dostajemy: Error: SSIS Error Code DTS_E_OLEDB_NOPROVIDER_64BIT_ERROR. The requested OLE DB provider OraOLEDB.Oracle.1 is not registered — perhaps no 64-bit provider is available. Error code: 0x00000000. An OLE DB record is available. Source: „Microsoft OLE DB Service Components” Hresult: 0x80040154

Widziałem różne rozwiązania, ale jakoś nie widziałem tego najprostszego. Zerknijcie poniżej:

Przechodzimy do właściwości projektu naszej paczki SSIS. Szukamy opcji “Run64BitRuntime”. Ustawiamy ją na false i teraz po naciśnięciu F5 projekt wykona się bez błędu. To najlepsze moim zdaniem rozwiązanie gdy możemy uruchomić paczkę bezpośrednio z poziomu BIDS.

Gdy konieczne jest uruchomianie cyklicznie musimy skorzystać z 32 bit wersji dtexec.

Domyślnie SQL Server korzysta 64 bit. Możemy ją znaleźć SQL Server dysk\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn

A wtedy możemy uruchomić sobie naszą paczkę na przykład w nastepujący sposób:

dtexec /FILE „C:\Users\UserName\Documents\Visual Studio 2008\Projects\Integration Services Project1\Integration Services Project1\Package.dtsx” /DECRYPT /CHECKPOINTING OFF /REPORTING EW