Udostępnij za pośrednictwem


Importowanie danych luzem za pomocą ZBIORCZYM WSTAWIANIEM lub OPENROWSET(BULK...)

This topic provides an overview of how to use the Transact-SQL BULK INSERT statement and the INSERT...SELECT * FROM OPENROWSET(BULK...) statement to bulk import data from a data file into a Microsoft SQL Server table.W tym temacie opisano zagadnienia dotyczące zabezpieczeń przy użyciu WSTAW luzem i OPENROWSET(BULK…) i korzystania z tych metod, aby import zbiorczy źródło dane zdalne.

Ostrzeżenie

Podczas korzystania z WSTAW luzem lub OPENROWSET(BULK…), jest zrozumieć jak SQL Server 2005 i nowsze wersje obsługują personifikacji.Aby uzyskać więcej informacji zobacz "Zagadnienia dotyczące zabezpieczeń", w dalszej części tego tematu.

Instrukcję luzem

WSTAW luzem powoduje załadowanie danych z pliku danych do tabela.Ta funkcja jest podobny do dostarczonych przez w z opcją bcp polecenia; jednak plik danych jest odczytywany przez SQL Server procesu.Opis składni WSTAW luzem, zobacz BULK INSERT (Transact-SQL).

Przykłady

OPENROWSET(BULK…) Funkcja

OPENROWSET dostawca zbiorczych zestawów zestaw wierszy jest dostępny przez wywołanie funkcja OPENROWSET i określenie opcji luzem.Funkcja OPENROWSET(BULK…) umożliwia dostęp do dane zdalne przez połączenie z dane zdalne źródło, takiego jak plik danych, za pośrednictwem dostawca OLE DB.

Aby import zbiorczy danych, wywołanie OPENROWSET(BULK…) z SELECT...Z klauzula w instrukcja INSERT.Jest podstawowa składnia luzem importowania danych:

WSTAW...WYBIERZ * Z OPENROWSET(BULK...)

OPENROWSET(BULK...) w instrukcja INSERT obsługuje podpowiedzi do tabela.Oprócz wskazówki regularnych tabela, takich jak TABLOCK klauzula luzem może zaakceptować następujące wskazówki specjalistyczne tabela: IGNORE_CONSTRAINTS (ignoruje ograniczenia CHECK), IGNORE_TRIGGERS, KEEPDEFAULTS i KEEPIDENTITY.Aby uzyskać więcej informacji, zobacz Wskazówki tabel (Transact-SQL).

Informacje dodatkowe zastosowania opcji luzem, zobacz OPENROWSET (Transact-SQL).

Przykłady

Zagadnienia dotyczące zabezpieczeń

Jeśli użytkownik korzysta z SQL Server logowania, profilu zabezpieczeń SQL Server jest używane konto procesu.Natomiast jeśli SQL Server użytkownik loguje się przy użyciu uwierzytelniania systemu Windows, użytkownik może odczytywać tylko te pliki, które mogą być udostępniane przez konto użytkownika, niezależnie od profilu zabezpieczeń SQL Server procesu.

Rozważmy na przykład użytkownik zalogowany do wystąpienie SQL Server za pomocą uwierzytelniania systemu Windows.Użytkownika można używać do importowania danych z pliku danych do WSTAWIANIA luzem lub OPENROWSET SQL Server tabela konta użytkownika wymaga dostępu do odczytu do pliku danych.Dostęp do pliku danych, użytkownik umożliwia importowanie danych z pliku tabela nawet jeśli SQL Server proces nie ma uprawnień do dostępu do pliku.Użytkownik nie ma udzielić uprawnienia dostępu do plików do SQL Server procesu.

SQL Serveri Microsoft systemu Windows można skonfigurować do włączania wystąpienie SQL Server połączyć się z inną instancję SQL Server przez przekazywanie poświadczenia uwierzytelnionego użytkownika systemu Windows.Niniejsze Porozumienie jest znany jako personifikacji lub delegacji.Opis sposobu SQL Server 2005 i nowsze wersje uchwyt zabezpieczeń personifikacji użytkownika jest ważne, WSTAW luzem lub OPENROWSET.Personifikacja użytkownika umożliwia pliku danych znajdują się na innym komputerze niż SQL Server proces lub użytkownika.Na przykład, jeśli użytkownik na Computer_A ma dostęp do pliku danych w Computer_B, i zostało delegowanie poświadczenia zestaw odpowiednio, użytkownik może połączyć się z wystąpienie SQL Server , na którym jest uruchomiony Computer_C, dostęp do pliku danych na Computer_Bi luzem, importować dane z tego pliku do tabela na Computer_C.Aby uzyskać więcej informacji, zobacz Opis personifikacji.

Ostrzeżenie

The way in which SQL Server 2005 and later versions control access to files addresses a security issue that was present in Microsoft SQL Server 2000 and earlier versions.Wcześniej, po użytkownik został uwierzytelniony, dostęp do zewnętrznych plików było oparte na profilu zabezpieczeń SQL Server procesu.Gdy SQL Server proces miał dostęp do odczytu do pliku dla użytkownika, który nie ma dostępu do pliku, ale został element członkowski z bulkadmin stałej roli serwera, użytkownik może zaimportować plik za pomocą WSTAWIĆ luzem i dostępu do zawartości pliku.

Importowanie zbiorczego ze zdalnym pliku danych

Aby użyć luzem, WSTAW lub WSTAW...Wybierz * od OPENROWSET(BULK...) do import zbiorczy danych z innego komputera, plik danych musi być udostępniony między dwoma komputerami.Plików udostępnionych danych, użyć jego universal konwencja nazewnictwa nazwy (UNC), która ma postać ogólne, **\nazwa_serwera\nazwa_udziału\ścieżkę\**nazwę pliku.Ponadto konto używane do uzyskania dostępu do pliku danych musi mieć uprawnienia, które są wymagane do odczytywania pliku na dysku zdalnego.

Na przykład, następujący BULK INSERT luzem instrukcja importuje dane do SalesOrderDetail tabela AdventureWorks2008R2 bazy danych z pliku danych o nazwie newdata.txt.Ten plik danych znajduje się w folderze udostępnionym o nazwie \dailyorders w udziale sieciowym katalogu o nazwie salesforce w systemie o nazwie computer2.

BULK INSERT AdventureWorks2008R2.Sales.SalesOrderDetail
   FROM '\\computer2\salesforce\dailyorders\neworders.txt';
GO

Ostrzeżenie

Ograniczenie to nie ma zastosowania do bcp utility, ponieważ klient odczytuje plik niezależnie od SQL Server.