Udostępnij za pośrednictwem


Wykonywanie operacji kopiowania luzem

SQL Serverkopiowanie masowe Funkcja obsługuje transfer dużych ilości danych do lub z SQL Server tabela lub widoku.Dane można także przenieść out określając SELECT instrukcja.Dane mogą być przenoszone między SQL Server i pliku danych systemu operacyjnego, takiego jak plik ASCII.Plik danych może mieć różne formaty; format jest zdefiniowany do masowych kopię w plik formatu.Opcjonalnie danych może być ładowane do zmiennych programu i przeniesione do SQL Server za pomocą kopiowanie masowe funkcje i metody

Witrynie CodePlex zawiera przykładową aplikację przedstawiającą tej funkcji; zobacz SQL ServerPrzykładowe aparat bazy danych więcej informacji.Aplikacja używa kopiowanie masowe zazwyczaj w jednym z następujących sposobów:

  • Luzem Kopiuj z tabela, widoku lub zestaw wyników Transact-SQL instrukcji do przechowywania danych w formacie tabela lub widoku pliku danych.

    Jest to plik danych trybu macierzystego.

  • Luzem Kopiuj z tabela, widoku lub zestaw wyników Transact-SQL plik danych, w którym przechowywane dane w formacie innym niż jednej tabela lub widoku w instrukcji.

    W takim przypadek oddzielnych plik formatu jest tworzony definiujący charakterystyki każdej kolumna (typ danych, położenie, długość, terminator itd.) są przechowywane w pliku danych.Jeśli wszystkie kolumny są konwertowane na format znaków, plik wynikowy jest nazywany plikiem danych w trybie znakowym.

  • Zbiorczego kopiowania z pliku danych do tabela lub widoku.

    W razie potrzeby, plik formatu służy do określania układu pliku danych.

  • Załadowanie danych do zmiennych programu, a następnie zaimportować dane do tabela lub widoku za pomocą funkcji kopiowania luzem do kopiowanie masowe w rzędzie u czas.

Pliki danych używana przez kopiowanie masowe funkcje nie jest utworzony przez innego kopiowanie masowe program.Inny system może wygenerować plik danych i plik formatu, zgodnie z kopiowanie masowe definicje; te pliki mogą być następnie używane z SQL Server kopiowanie masowe program zaimportować dane SQL Server.Na przykład można eksportować dane z arkusza kalkulacyjnego w pliku rozdzielanym tabulatorami, zbudować plik formatu opisujący plik rozdzielany tabulatorami i następnie użyć programu kopiowanie masowe szybko zaimportować dane do SQL Server.Pliki danych generowanych przez kopiowanie masowe również można importować do innych aplikacji.Na przykład można użyć kopiowanie masowe funkcji eksportowania danych z tabela lub widoku w pliku rozdzielanym tabulatorami, który następnie można załadować do arkusza kalkulacyjnego.

Ostrzeżenie

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 zignorowanie ostrzeżenia.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 korzystania SQL Server 2000 wersja bcp.

Programiści aplikacji do korzystania z kodowania kopiowanie masowe funkcje należy postępować zgodnie z ogólnymi zasadami dobrej kopiowanie masowe wydajności.Aby uzyskać więcej informacji na temat obsługi kopiowanie masowe operacji w SQL Server, zobacz Dotyczące importu zbiorczego i operacji wywozowych luzem.

Ograniczenia i ograniczenia

CLR typ zdefiniowany przez użytkownika (UDT) musi być powiązana jako dane binarne.Nawet jeśli plik formatu SQLCHAR jako typ danych dla kolumna UDT miejsce docelowe, narzędzie BCP będą traktować danych jako binarne.

Nie używaj SET FMTONLY OFF, z kopiowanie masowe operacji.SET FMTONLY OFF może spowodować na kopiowanie masowe operacja nie powiedzie się lub nieoczekiwane wyniki.

Dostawca OLE DB programu SQL Server Native Client

SQL Server Macierzystego klienta dostawca OLE DB implementuje dwie metody wykonywania kopiowanie masowe operacji z SQL Server bazy danych.Pierwsza metoda polega na użyciu IRowsetFastLoad interfejs dla pamięci kopiowanie masowe operacji; i drugi polega na użyciu IBCPSession interfejs dla opartej na pliku kopiowanie masowe operacji.

Użycie pamięci na podstawie operacji kopiowania luzem

SQL Server Macierzystego klienta OLE DB dostawca implementuje IRowsetFastLoad interfejs do udostępnienia pomocy technicznej dla SQL Server pamięci kopiowanie masowe operacji.IRowsetFastLoad implementuje interfejs IRowsetFastLoad::Commit i IRowsetFastLoad::InsertRow metody.

Włączanie sesji dla IRowsetFastLoad

Konsument zawiadomi SQL Server macierzystego klienta dostawca OLE DB kopiowanie masowe, ustawiając jego potrzebę SQL Server źródło danych specyficznych dla dostawca macierzystym klienta OLE DB właściwość SSPROP_ENABLEFASTLOAD do VARIANT_TRUE.Ustaw na danych z właściwością źródło, tworzy konsumenta SQL Server macierzystego klienta OLE DB dostawca sesja.Nowa sesja umożliwia dostęp konsumentów do IRowsetFastLoad interfejs.

Ostrzeżenie

Jeśli procedury IDataInitialize interfejs jest używany do inicjowania źródło danych, a następnie konieczne jest zestaw SSPROP_IRowzestawFastLoad właściwość w rgPropertySets parametr IOpenRowzestaw:: OpenRowzestaw metoda; w przeciwnym wypadku wywołanie OpenRowset metoda zwróci E_NOINTERFACE.

Włączanie sesja dla ogranicza kopiowanie masowe SQL Server obsługuje macierzystego klienta dostawca OLE DB dla interfejsów w sesja.A kopiowanie masowe-włączone sesja udostępnia następujące interfejsy:

  • IDBSchemaRowset

  • IGetDataSource

  • IOpenRowset

  • ISupportErrorInfo

  • ITransactionJoin

Aby wyłączyć tworzenie kopiowanie masowe-włączone zestawów wierszy i przyczyny SQL Server macierzystego klienta OLE DB dostawca sesja powraca do przetwarzania standardowych zresetować SSPROP_ENABLEFASTLOAD do VARIANT_FALSE.

IRowsetFastLoad zestawów wierszy.

SQL Server Macierzystego klienta dostawca OLE DB kopiowanie masowe zestawów wierszy są tylko do zapisu, ale udostępniają interfejsy, które umożliwiają konsumentowi na określenie struktury SQL Server tabela.Następujące interfejsy są narażone na kopiowanie masowe-włączone SQL Server macierzystego klienta OLE DB dostawca zestaw wierszy:

  • IAccessor

  • IColumnsInfo

  • IColumnsRowset

  • IConvertType

  • IRowsetFastLoad

  • IRowsetInfo

  • ISupportErrorInfo

Właściwości specyficzne dla dostawca, SSPROP_FASTLOADOPTIONS, SSPROP_FASTLOADKEEPNULLS i SSPROP_FASTLOADKEEPIDENTITY kontroli zachowania SQL Server macierzystego klienta OLE DB dostawca masowego kopiowania zestawu zestaw wierszy.The properties are specified in the rgProperties member of an rgPropertySets **IOpenRowset **parameter member.

Identyfikator właściwości

Opis

SSPROP_FASTLOADKEEPIDENTITY

Kolumna: Nr

R I W: Odczyt i zapis

Typ: VT_BOOL.

Wartość domyślna: VARIANT_FALSE

Opis: Zachowuje wartości tożsamości dostarczonych przez konsumenta.

VARIANT_FALSE: Wartości kolumna tożsamości w SQL Server tabela są generowane przez SQL Server.Powiązane wartości dla kolumna jest ignorowany przez SQL Server macierzystego klienta OLE DB dostawca.

VARIANT_TRUE: Konsument wiąże metoda dostępu wartość dla 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ść każdego IRowsetFastLoad::Insert wywołania.

SSPROP_FASTLOADKEEPNULLS

Kolumna: Nr

R I W: Odczyt i zapis

Typ: VT_BOOL.

Wartość domyślna: VARIANT_FALSE

Opis: Przechowuje wartość NULL dla kolumn z ograniczenie DOMYOLNE.Wpływa tylko na SQL Server kolumny, które akceptują wartości NULL i mają domyślne ograniczenie stosowane.

VARIANT_FALSE: SQL ServerWstawia wartość domyślną dla kolumna po SQL Server macierzystego klienta OLE DB dostawca konsumenta wstawia wiersz zawierający wartość NULL dla kolumna.

VARIANT_TRUE: SQL Serverwartość NULL dla kolumna wstawia, kiedy SQL Server macierzystego klienta OLE DB dostawca konsumenta wstawia wiersz zawierający wartość NULL dla kolumna.

SSPROP_FASTLOADOPTIONS

Kolumna: Nr

R I W: Odczyt i zapis

Typ: VT_BSTR

Wartość domyślna: Brak

Opis: Ta właściwość jest taki sam, jak -h "Wskazówka,...n"Opcja bcp narzędzia.Następujące ciąg(s) mogą być używane jako opcje w zbiorczego kopiowania danych do tabela.

ORDER(kolumna ASC | DESC[,...n): Porządek sortowania danych w pliku danych.Zwiększona wydajność kopii luzem, jeśli ładowany plik danych jest posortowany zgodnie z indeks klastrowany w tabela.

ROWS_PER_BATCH = bb: Liczba wierszy danych na partia (jako bb).Optymalizuje serwer ładowanie zbiorcze zgodnie z wartością bb.Domyślnie ROWS_PER_BATCH jest nieznany.

KILOBYTES_PER_BATCH = cc: Liczba kilobajtów (KB) danych na partia (jako cc).Domyślnie KILOBYTES_PER_BATCH jest nieznany.

TABLOCK: Poziom tabela jest blokada na czas trwania kopiowanie masowe operacji.Ta opcja znacznie zwiększa wydajność, ponieważ blokada tylko na czas trwania kopiowanie masowe operacji zmniejsza rywalizacja blokad w tabela.Tabela może być ładowany przez wielu klientów jednocześnie, gdy tabela nie zawiera żadnych indeksów i TABLOCK jest określony.Domyślnie blokada zachowanie zależy od opcji Tabela blokada tabeli na obciążenia luzem.

CHECK_CONSTRAINTS: Wszelkie ograniczenia dotyczące nazwa_tabeli są sprawdzane podczas kopiowanie masowe operacji.Domyślnie ograniczenia są ignorowane.

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

Począwszy od SQL Server 2005, jednak SQL Server używa wersja wiersza wyzwalaczy i przechowuje wersje wierszy w sklepie wersja w tempdb.Dlatego optymalizacje rejestrowania luzem są dostępne nawet wtedy, gdy włączone są wyzwalacze.Przed luzem importowanie partia z dużą liczbą wierszy z wyzwalaczami włączona, może być konieczne do zwiększenia rozmiaru tempdb.

Przy użyciu pliku na podstawie operacji kopiowania luzem

SQL Server Macierzystego klienta OLE DB dostawca implementuje IBCPSession interfejs do udostępnienia pomocy technicznej dla SQL Server na podstawie pliku kopiowanie masowe operacji.IBCPSession implementuje interfejs IBCPSession::BCPColFmt, IBCPSession::BCPColumns, IBCPSession::BCPControl, IBCPSession::BCPDone, IBCPSession::BCPExec, IBCPSession::BCPInit, IBCPSession::BCPReadFmt, i IBCPSession::BCPWriteFmtmetody.

Sterownik ODBC macierzystym klienta SQL Server

SQL Server Sterownik ODBC klienta macierzystych utrzymuje samego obsługę kopiowanie masowe operacji, które były częścią poprzednie wersje SQL Server sterownika ODBC.Aby uzyskać informacje o kopiowanie masowe operacji za pomocą SQL Server sterownika ODBC macierzystym klienta, zobacz Wykonywanie operacji kopiowania luzem (ODBC).