Importing Bulk Data by Using BULK INSERT or 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 zabezpieczeń dotyczące korzystania z BULK INSERT i OPENROWSET(BULK…) oraz za pomocą tych metod, aby import zbiorczy ze urządzenie źródłowe dane zdalne.

Uwaga

Korzystając z BULK INSERT lub OPENROWSET(BULK…), ważne jest zrozumieć, w jaki sposób SQL Server 2005 i jego nowszych wersjach obsługiwać personifikacji. Aby uzyskać więcej informacji zobacz "" zagadnienia dotyczące zabezpieczeń,"w dalszej części tego tematu.

Instrukcja INSERT BULK

BULK INSERT powoduje załadowanie danych z pliku danych do tabela.Ta funkcja jest podobna do przez w Opcja BCP , polecenie; jednak z plikiem danych jest odczytywany przez SQL Server proces. Opis składni BULK INSERT zobacz BULK INSERT (Transact-SQL).

Przykłady

Funkcja OPENROWSET(BULK…)

dostawca zbiorczych zestawów zestaw wierszy OPENROWSET jest dostępny przez wywołanie funkcja OPENROWSET i określenie opcji BULK.Funkcja OPENROWSET(BULK…) pozwala na dostęp do danych zdalnego przez połączenie ze źródłem dane zdalne, takich jak plik danych, za pośrednictwem dostawca OLE DB.

Aby zbiorczej importowanych danych, należy wywołać OPENROWSET(BULK…) z SELECT…FROM klauzula WHERE w instrukcja INSERT.Jest podstawowa składnia zbiorczej importowania danych:

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

OPENROWSET(BULK...) za pomocą instrukcja INSERT obsługuje wskazówki do tabela.Oprócz zwykłych tabela wskazówki dotyczące serwerów, takie jak TABLOCK klauzula BULK może zaakceptować następujące wskazówki wyspecjalizowane tabela: (Tylko ograniczenia CHECK ignoruje) IGNORE_CONSTRAINTS, IGNORE_TRIGGERS, KEEPDEFAULTS i KEEPIDENTITY. Aby uzyskać więcej informacji zobaczWskazówki do tabela (języka Transact-SQL).

Aby uzyskać informacje na temat użycia dodatkowych opcji BULK zobacz OPENROWSET (Transact-SQL).

Przykłady

Zagadnienia zabezpieczeń

Jeśli użytkownik używa SQL Server Identyfikator logowania, profilu zabezpieczeń SQL Server konta procesu jest używany. Natomiast jeśli SQL Server użytkownik loguje się przy użyciu uwierzytelnianie systemu Windows, może odczytywać tylko te pliki, które można uzyskać dostęp za pośrednictwem konta użytkownika, niezależnie od profilu zabezpieczeń SQL Server proces.

Rozważmy na przykład użytkownik, który zalogował się do wystąpienie SQL Server przy użyciu uwierzytelnianie systemu Windows. Dla użytkownika, aby można go używać do importowania danych z pliku danych do BULK INSERT lub OPENROWSET SQL Server Tabela, konto użytkownika wymaga dostępu do odczytu do pliku danych. Dostęp do pliku danych, użytkownik może importować dane z pliku do tabela nawet jeśli SQL Server proces nie ma uprawnień do dostępu do tego pliku. Użytkownik nie ma udzielić uprawnienia dostępu do plików do SQL Server proces.

SQL Server i Microsoft System Windows można skonfigurować w taki sposób, aby włączyć wystąpienie SQL Server Aby połączyć się z inną instancję SQL Server poprzez przesłanie poświadczenia uwierzytelnionego użytkownika systemu Windows. To rozmieszczenie jest znany jako Personifikacja or Delegowanie.Opis sposobu SQL Server 2005 i nowsze wersje uchwyt zabezpieczenia dla personifikacji użytkownika jest ważne, gdy BULK INSERT lub OPENROWSET. Zezwala na personifikację użytkownika znajdują się na innym komputerze niż jeden plik danych SQL Server proces lub przez użytkownika. Na przykład, jeśli użytkownik Computer_A ma dostęp do pliku danych na Computer_Bi delegowanie poświadczenia zostało ustawione właściwie, użytkownik może połączyć się z wystąpienie SQL Server na którym jest uruchomiony Computer_C, uzyskać dostęp do pliku danych na Computer_B, a import zbiorczy dane z tego pliku do tabela na Computer_C.Aby uzyskać więcej informacji zobaczUnderstanding Impersonation.

Uwaga

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 proces. Gdy SQL Server proces miał dostęp do odczytu do pliku przeznaczonego dla użytkownika, który nie ma dostępu do pliku, ale był członkiem bulkadmin ustalić roli serwera, użytkownik może zaimportować plik przy użyciu BULK INSERT i uzyskać dostęp do zawartości pliku.

Importowanie zbiorczego ze zdalnego pliku danych

Aby użyć BULK INSERT lub INSERT... SELECT * FROM OPENROWSET(BULK...) do masowych importować dane z innego komputera, musi być udostępniony plik danych między dwoma komputerami.Aby określić plik udostępnionych danych, należy użyć jego universal naming nazwy konwencji (UNC Universal konwencja nazewnictwa), która ma postać ogólnych, \\Nazwa_serwera\ nazwaudziału\ ścieżka\ 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 zdalnym.

Na przykład następujące BULK INSERT Instrukcja zbiorczej importuje dane do SalesOrderDetail spis AdventureWorks bazy danych z pliku danych o nazwie newdata.txt. Ten plik danych znajduje się w folderze udostępnionym o nazwie \dailyorders w sieci udostępnianie katalogu o nazwie salesforce w systemie o nazwie computer2.

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

Uwaga

To ograniczenie nie dotyczy BCP narzędzie ponieważ klient odczytuje plik niezależnie od SQL Server.