Udostępnij za pośrednictwem


Wykonywanie operacji zbiorczych Kopiuj

The SQL Server kopiowanie masowe feature supports the transfer of large amounts of data into or out of a SQL Server tabela or view. Danych może być transferowanych się, określając instrukcję SELECT.Dane mogą być przenoszone między SQL Server a plikiem danych systemu operacyjnego, takiego jak plik ASCII. Plik danych może zawierać różne formaty, format jest zdefiniowany dla kopiowanie masowe w formacie pliku.Opcjonalnie dane mogą być ładowane do zmiennych programu i przenoszone do SQL Server za pomocą kopiowanie masowe funkcji i metod.

Przykładowej aplikacji, które tej funkcji zobacz Readme_Bulk Copy Using IRowsetFastLoad (OLE DB).

Aplikacja używa zazwyczaj kopiowanie masowe w jednym z następujących sposobów:

  • Zbiorcza kopii z tabeli, widoku lub zestawu wyników w języku Transact-instrukcja języka SQL w pliku danych, w którym dane są przechowywane w tym samym formacie, jak tabela lub widok.

    Jest to plik danych trybu macierzystego.

  • kopiowanie masowe tabela, widoku lub zestaw wyników instrukcja języka Transact-SQL w pliku danych, w którym dane są przechowywane w formacie innym niż ten, tabela lub widoku.

    W takim przypadek oddzielnych plik formatu jest tworzony, definiujący właściwości (typ danych, położenie, długość, terminator itd.) dla każdej z kolumn są przechowywane w pliku danych.Jeżeli wszystkie kolumny są konwertowane na format znaków, to wynikowy plik nosi nazwę pliku danych w trybie znakowym.

  • kopiowanie masowe z pliku danych do tabela lub widoku.

    W razie potrzeby plik formatu służy do określenia układ pliku danych.

  • Załadowanie danych do zmiennych program, a następnie zaimportować dane do tabela lub oglądać przy użyciu kopiowanie masowe funkcje ing kopiowanie masowe w wierszu naraz.

Pliki danych przez funkcje kopiowanie masowe nie można utworzyć przez inny program kopiowanie masowe.Inny system może generować plik danych i plik formatu, zgodnie z definicjami kopiowanie masowe; następnie można te pliki z SQL Server program kopiowanie masowe do importowania danych do SQL Server. Na przykład, użytkownik może eksportować dane z arkusza kalkulacyjnego w pliku rozdzielanego znakami tabulacji, utworzyć plik formatu opisujący plik rozdzielany tabulatorami, a następnie użyj kopiowanie masowe szybko zaimportować dane do programu SQL Server. Pliki danych generowanych przez kopiowanie masowe również mogą być importowane do innych aplikacji.Na przykład, można użyć kopiowanie masowe funkcji, aby wyeksportować dane z tabela lub widoku do pliku rozdzielanego znakami tabulacji, który następnie można załadować do arkusza kalkulacyjnego.

Uwaga

Beginning with SQL Server 2005, when you use the bcp utility the server reports an error when numeric data truncation occurs.SQL Server 2000 and earlier releases only returned a warning.Może to spowodować problemy z istniejących aplikacji, które zignorować ostrzeżenie.Można uniknąć tych problemów, zapewniając w ten sposób dane wejściowe poprawnych wartości, które nie zostaną obcięte lub dalszego używania SQL Server 2000 Wersja BCP.

Programiści kodowania aplikacji do używania kopiowanie masowe funkcji powinni postępować zgodnie z ogólne zasady dobrego kopiowanie masowe wydajności.Aby uzyskać więcej informacji na temat obsługi kopiowanie masowe działań SQL Server, zobacz About Bulk Import and Bulk Export Operations.

Ograniczenia i ograniczenia

zdefiniowany przez użytkownika typ danych CLR (UDT) musi być powiązana jako dane binarne.Nawet wtedy, gdy plik formatu określa SQLCHAR jako typ danych dla kolumna UDT miejsce docelowe, narzędzie The BCP zostanie potraktowany dane jako binarne.

Nie należy używać zestaw FMTONLY OFF, z kopiowanie masowe operacji.zestaw FMTONLY OFF może spowodować, że operacja kopiowanie masowe się nie powieść lub nieoczekiwane wyniki.

Dostawca OLE DB programu SQL Server Native Client

The SQL Server Native klient OLE DB dostawca implements two methods for performing kopiowanie masowe operations with a SQL Server database. Pierwsza metoda polega na użyciu IRowsetFastLoad interfejsu dla operacji kopiowania opartego na pamięci masowej; a drugi polega na użyciu IBCPSession interfejs dla operacji kopiowania zbiorczej oparte na plikach.

Korzystanie z pamięci na operacje kopiowanie masowe

The SQL Server Native klient OLE DB dostawca implements the IRowsetFastLoad interfejs to expose support for SQL Server memory-based kopiowanie masowe operations. The IRowsetFastLoad interfejs implements the IRowsetFastLoad::zatwierdzanie and IRowsetFastLoad::InsertRow methods.

Włączanie sesja dla IRowsetFastLoad

Powiadomi konsumenta SQL Server Macierzystego dostawca klient OLE DB jego potrzebę kopiowanie masowe ustawiając SQL Server Właściwość SSPROP_ENABLEFASTLOAD do VARIANT_TRUE urządzenie źródłowe w macierzystym danych specyficznych dla dostawca klient OLE DB. Z właściwością zestaw w źródle danych tworzy konsumenta SQL Server Macierzysta klient OLE DB dostawca sesja. Nowa sesja zezwala na dostęp klienta do IRowsetFastLoad interfejs.

Uwaga

Jeśli IDataInitialize interfejs jest używany do inicjowania urządzenie źródłowe danych, a następnie jest właściwość SSPROP_IRowsetFastLoad w rgPropertySets Parametr IOpenRowset::OpenRowset metody; w przeciwnym wypadku wywołanie OpenRowset metoda zwróci E_NOINTERFACE.

Włączanie sesja dla kopiowanie masowe ogranicza SQL Server Macierzystego dostawca klient OLE DB obsługuje interfejsów w sesja. Sesja włączone kopiowanie masowe umożliwia uzyskanie dostępu do następujących interfejsów:

  • IDBSchemaRowset

  • IGetDataSource

  • IOpenRowset

  • ISupportErrorInfo

  • ITransactionJoin

Aby wyłączyć tworzenie kopiowanie masowe-włączone zestawów wierszy i przyczyny SQL Server Macierzysta klient OLE DB dostawca sesja powraca do przetwarzania standardowego, przywrócić SSPROP_ENABLEFASTLOAD VARIANT_FALSE.

IRowsetFastLoad zestawów wierszy.

The SQL Server Native klient OLE DB dostawca kopiowanie masowe rowsets are write-only, but they expose interfaces that allow the consumer to determine the structure of a SQL Server tabela. Następujące interfejsy są narażone na zbiorczej, włączona kopia SQL Server Macierzysta zestawu zestaw wierszy dostawca klient OLE DB:

  • IAccessor

  • IColumnsInfo

  • IColumnsRowset

  • IConvertType

  • IRowsetFastLoad

  • IRowsetInfo

  • ISupportErrorInfo

Właściwości specyficzne dla dostawcy SSPROP_FASTLOADOPTIONS SSPROP_FASTLOADKEEPNULLS i SSPROP_FASTLOADKEEPIDENTITY kontrolować zachowania SQL Server Zestaw macierzystym klient OLE DB dostawca masowego kopiowania zestaw wierszy. The properties are specified in the rgProperties member of an rgPropertySetsIOpenRowset parameter member.

Identyfikator właściwość

Description

SSPROP_FASTLOADKEEPIDENTITY

kolumna: No

R/W: Właściwość do odczytu i zapisu

Typ: VT_BOOL

Wartość domyślna: VARIANT_FALSE

Opis: Przechowuje dostarczone przez konsumenta wartości tożsamości.

VARIANT_FALSE: Wartości kolumna tożsamości w SQL Server Tabela są generowane przez SQL Server. Powiązane wartości dla kolumna jest ignorowana przez SQL Server Macierzystego dostawca klient OLE DB.

VARIANT_TRUE: Konsument wiąże metoda dostępu przewidujące wartość SQL Server Kolumna tożsamości. Właściwość tożsamości nie jest dostępna w kolumnach akceptuje wartości NULL, więc konsument zawiera unikatową wartość dla każdego IRowsetFastLoad::Insert wywołanie.

SSPROP_FASTLOADKEEPNULLS

kolumna: No

R/W: Właściwość do odczytu i zapisu

Typ: VT_BOOL

Wartość domyślna: VARIANT_FALSE

Opis: Przechowuje wartość NULL w wypadku kolumn o ograniczenie domyślne. Wpływa tylko na SQL Server kolumny, które akceptują wartości NULL i ma ograniczenie domyślne stosowane.

VARIANT_FALSE: SQL Server Wstawia wartość domyślną dla kolumna podczas SQL Server Konsument macierzystego dostawca klient OLE DB wstawia wiersz zawierający wartość NULL kolumna.

VARIANT_TRUE: SQL Server Wstawia wartość NULL kolumna wartość, kiedy SQL Server Konsument macierzystego dostawca klient OLE DB wstawia wiersz zawierający wartość NULL kolumna.

SSPROP_FASTLOADOPTIONS

kolumna: No

R/W: Właściwość do odczytu i zapisu

Typ: VT_BSTR

Wartość domyślna: Brak

Opis: Właściwość ta jest taka sama, jak -h "Wskazówka,...n" Opcja BCP narzędzie.Następujące ciąg(s) może służyć jako opcje w zbiorczego kopiowania danych do tabela.

ORDER(column[ASC | DESC][,...n]): kolejność sortowania danych w pliku danych. Zwiększona wydajność kopiowanie masowe Jeśli załadowania pliku danych jest posortowany zgodnie z indeksem klastrowanym dla tabela.

ROWS_PER_BATCH = bb: Liczba wierszy danych na partia (jak bb).Serwer optymalizuje ładowanie zbiorcze bb.Domyślnie ROWS_PER_BATCH jest nieznany.

KILOBYTES_PER_BATCH = DW: Liczba kilobajtów (KB) danych na partię (jak DW). Domyślnie KILOBYTES_PER_BATCH jest nieznany.

TABLOCK: Blokada poziomie tabela zostanie nabyty w czasie trwania kopiowanie masowe operacji. Ta opcja znacznie zwiększa wydajność, ponieważ posiadających tylko na czas trwania blokada kopiowanie masowe operacji zmniejsza rywalizacji blokad w tabela.Tabeli mogą być ładowane przez wielu klientów jednocześnie, gdy tabela nie zawiera żadnych indeksów i TABLOCK została określona.Domyślnie blokowania zachowanie zależy od opcji tabela Blokada tabela ładowanie zbiorcze.

CHECK_CONSTRAINTS: Ograniczenia na nazwa_tabeli są sprawdzane podczas kopiowanie masowe operacji.Domyślnie ograniczenia są ignorowane.

FIRE_TRIGGER: In SQL Server 2000, z wyzwalaczami włączone, rejestrowanie zoptymalizowane nie było możliwe ponieważ logika wyzwalacz został oparty na rekordy dziennika. Podczas operacji import zbiorczy z wyzwalaczami włączone wszystkie optymalizacje rejestracji zbiorczej (włącznie z blokowaniem BU) zostały wyłączone.

Zaczyna się od SQL Server 2005, jednak SQL Server używa wersja wiersza wyzwalaczy i przechowuje wersje wiersza w magazynie wersja w tempdb.Dlatego optymalizacje rejestracji zbiorczej są dostępne, nawet wtedy, gdy włączone są wyzwalacze.Przed zbiorczej importowanie partia z dużą liczbę wierszy zawierających wyzwalacze włączona konieczne może być rozwinięcie rozmiar tempdb.

Korzystanie z plików na podstawie kopiowanie masowe operacji

The SQL Server Native klient OLE DB dostawca implements the IBCPSession interfejs to expose support for SQL Server file-based kopiowanie masowe operations. The IBCPSession interfejs implements the IBCPSession::BCPColFmt, IBCPSession::BCPColumns, IBCPSession::BCPControl, IBCPSession::BCPDone, IBCPSession::BCPExec, IBCPSession::BCPInit, IBCPSession::BCPReadFmt, and IBCPSession::BCPWriteFmtmethods.

Program SQL Server macierzysty sterownik ODBC klient

The SQL Server Native klient ODBC driver maintains the same support for kopiowanie masowe operations that were part of previous versions of the SQL Server ODBC driver. Aby uzyskać informacje dotyczące zbiorczej operacji kopiowania przy użyciu SQL Server Macierzysty sterownik ODBC klient, zobacz Wykonywanie operacji kopiowanie masowe (ODBC).