Potrzebowałem uzyskać dostęp do bazy danych accesa. Niestety okazało się, że Microsoft nie wydał 64 bitowej wersji sterownika “Microsoft.Jet.OLEDB.4.0″ i połączenie za pomocą OLEDB nie wchodzi w grę. Jednym z rozwiązań do importu danych było wykorzystanie Integration Services i wymuszenie użycia trybu 32 bitowego przy uruchamiania pakietu. Rozwiązanie to nie było do końca dobre, bo potrzebowałem dostępu do aktualnych danych. Znalazłem na to rozwiązanie.
1. Na serwerze z 64-bitowym SQL Serverem zainstalowałem 32-bitową wersję SQL Server Express.
2. Utworzyłem linked server pomiędzy bazą danych Accessa i SQL Server Expressem.
EXEC sp_addlinkedserver @server = N'AccessDB', @provider = N'Microsoft.Jet.OLEDB.4.0', @srvproduct = N'OLE DB Provider for Jet', @datasrc = N'C:\DB\accessdb.mdb' GO
Wszystko o linked serverach można znaleźć w msdn Microsoftu.
3. Komunikacja pomiędzy 32 bitowym i 64 bitowym zapewniłem dzięki stworzeniu kolejnego linked servera.
EXEC sp_addlinkedserver @server=N'Express32', @srvproduct=N'', @provider=N'SQLNCLI', @datasrc= N'ServerName\SQLEXPRESS';
4. W expressie dla wygody stworzyłem widoki do interesujących mnie tabeli, m.in widok vTest. W 64bitowym SQL Server mogę już korzystać z danych z accessa!
SELECT * FROM Express32.Test.dbo.vTest
