Zabawę z przenoszeniem danych pomiędzy programem Excel, a SQL Server prezentują odpowiednie artykuły na stronach Knowledge Base Microsoftu.
Ze względu na potrzebę przeniesienia informacji z arkusza do bazy danych, wykorzystałem możliwość kwerend rozproszonych. Wystarczy znać odpowiednią składnię polecenia OPENROWSET, a wszystko staje się proste. Do połączenia z MS Excel potrzebujemy wykorzystać Microsoft.Jet.OLEDB.4.0.
W uruchomionym SQL Server Management Studio Express na naszej bazie danych wybieramy New Query. Następnie wpisujemy polecenie wybrania wszystkich informacji z arkusza danych arkusz pliku C:\przykladowy.xls i utworzenia z nich nowej tabeli dane_pobrane:
SELECT * INTO dane_pobrane FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=C:\przykladowy.xls', [arkusz$])
Jeżeli zamierzamy pobrać tylko daną kolumnę z arkusza danych, możemy zmodyfikować trzeci parametr polecenia OPENROWSET:
SELECT * INTO dane_pobrane FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=C:\przykladowy.xls', 'Select kolumna1 FROM [arkusz$]')
Uwaga
By móc skorzystać z polecenia OPENROWSET na serwerze potrzebujemy włączyć jego obsługę. Dokonuje się tego w SQL Server Surface Area Configuration wybierając Surface Area Configuration For Features oraz zakładkę Ad Hoc Remote Queries. Domyślnie ta opcja jest wyłączona.
Uwaga 2
Przy argumencie Database ścieżka do pliku nie może zawierać nazw katalogów oddzielonych spacjami.