Toplu kopyalama işlemleri gerçekleştirme
The SQL Server bulk copy feature supports the transfer of large amounts of data into or out of a SQL Server table or view.Verileri de dışarı bir deyim belirterek transfer edilebilir.Veriler arasında taşınan SQL Server ve gibi bir işletim sistemi veri dosyasıbir ASCII dosyası. Veri dosyası, farklı biçimlerde olabilir; Biçim kopya toplu olarak tanımlanan bir biçim dosyası.İsteğe bağlı olarak, veri program değişkenleri yüklenebilir ve transfer SQL Server kullanarak toplu kopyalama işlevleri ve yöntemleri.
Bu özellik gösteren bir örnek uygulama CodePlex vardır; Bkz: sql Server veritabanı altyapısı örneklerini daha fazla bilgi için.Bir uygulama genelde toplu kopyalama aşağıdaki yollardan birini kullanır:
Bir tablo, görünüm veya tablo veya görünüm aynı biçimde verilerin nerede saklanacağı bir veri dosyası içine bir Transact-SQL deyim sonuç küme kopyasından toplu.
Bu bir yerel mod veri dosyası olarak adlandırılır.
Bir tablo, görünüm veya farklı bir tablo veya görünümü bir biçimde verilerin nerede saklanacağı bir veri dosyasına bir Transact-SQL deyim sonuç küme kopyasından toplu.
Bu durumda, ayrı bir de biçim dosyası oluşturulur, tanımlar, her sütunun özelliklerini (veri türü, konum, uzunluk, sonlandırıcı vb.) gibi veri dosyasında saklanır.Tüm sütunlar karakter formatına dönüştürülür, sonuçta elde edilen dosya karakter modu veri dosyası denir.
Tablo veya görünümü bir veri dosyası kopyadan toplu.
Gerekirse, bir biçim dosyası veri dosyasını düzenini belirlemek için kullanılır.
Program değişkenleri veri yüklemek sonra bir tabloya veri alma veya görüntülemek için toplu bir satırda kopyalama toplu kopyalama işlevleri kullanarak bir saat.
Toplu kopyalama işlevleri tarafından kullanılan veri dosyalarını başka bir toplu kopyalama program tarafından oluşturulmuş olması gerekmez.Başka bir sistem, bir veri dosyası oluşturabilir ve biçim dosyası toplu kopyalama tanımları; uyarınca Bu dosyalar daha sonra ile kullanılan bir SQL Server toplu kopyalama program içine verileri almak için SQL Server.Örneğin, size sekmeyle ayrılmış bir dosya içinde bir elektronik tablodan veri verme, sekmeyle sınırlanmış dosya açıklayan biçim dosyası oluşturmak ve sonra hızlı bir şekilde verileri almak için toplu kopyalama program kullanın SQL Server.toplu kopyalama tarafından oluşturulan veri dosyalarını da diğer uygulamalara aktarılabilir.Örneğin, veri bir tablo veya görünümü bir elektronik tabloya yüklenemedi sekmeyle sınırlanmış bir dosyaya vermek için toplu kopyalama işlevleri kullanabilirsiniz.
Not
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.Bu uyarıyı yoksaymak varolan uygulamalar için sorunlara neden olabilir.Bu sorunlar önlenebilir, giriş verilerinin fazlalıklar atılacak doğru değerlere sahip olma ya da kullanmaya devam SQL Server 2000 sürüm bcp.
Toplu kopyalama işlevleri kullanmak için uygulamalar kodlama programcılar iyi bulk copy performans için genel kurallar uygulamalısınız.Toplu kopyalama işlemi için destek hakkında daha fazla bilgi için SQL Server, bkz: Toplu alma ve verme işlemleri toplu hakkında.
Sınırlamalar ve kısıtlamalar
Bir clr kullanıcı tanımlı tür (udt) ikili veri olarak bağlanmalıdır.bcp yardımcı programı bile hedef udt sütun için veri türü olarak sqlchar biçim dosyası belirtir, verileri bir ikili dosya olarak işleyecek.
set fmtonly off toplu kopyalama işlemleri ile birlikte kullanmayın.set fmtonly off başarısız veya beklenmeyen sonuçlar vermek toplu kopyalama işlemi neden olabilir.
SQL Server Native Client OLE DB Sağlayıcısı
The SQL Server Native Client OLE DB provider implements two methods for performing bulk copy operations with a SQL Server database.İlk yöntem kullanarak içerir IRowsetFastLoad arabirim için bellek tabanlı toplu kopyalama işlemleri; İkinci kullanarak içerir ve IBCPSession dosya tabanlı toplu kopyalama işlemleri için arabirim.
Toplu kopyalama işlemleri temel bellek kullanma
The SQL Server Native Client OLE DB provider implements the IRowsetFastLoad interface to expose support for SQL Server memory-based bulk copy operations.The IRowsetFastLoad interface implements the IRowsetFastLoad::Commit and IRowsetFastLoad::InsertRow methods.
Bir oturumu IRowsetFastLoad için etkinleştirme
Tüketici bildirir SQL Server toplu kopyalama ayarlayarak, gerek yerel istemci ole db sağlayıcı SQL Server yerel istemci ole db sağlayıcıya özgü veri kaynak özellik ssprop_enablefastload üzerine yazılmasına.özellik ile küme veri kaynak üzerinde tüketici oluşturur bir SQL Server yerel istemci ole db sağlayıcı oturum.Yeni oturum tüketici erişim sağlar IRowsetFastLoad arabirim.
Not
If the IDataInitialize interface is used for initializing the data source, then it is necessary to set the SSPROP_IRowsetFastLoad property in the rgPropertySets parameter of the IOpenRowset::OpenRowset method; otherwise, the call to the OpenRowset method will return E_NOINTERFACE.
toplu kopyalama sınırlar için bir oturumu etkinleştirme SQL Server yerel istemci ole db sağlayıcı desteklemek için arabirimler üzerinde oturum.Toplu kopyalama etkin oturum yalnızca aşağıdaki arabirimlerini gösterir:
IDBSchemaRowset
IGetDataSource
IOpenRowset
ISupportErrorInfo
ITransactionJoin
Toplu kopyalama etkin satır kümeleri oluşturulmasını devre dışı bırakabilir ve neden SQL Server yerel istemci ole db sağlayıcı oturum standart işleme dönmek için Sıfırla ssprop_enablefastload VARIANT_FALSE.
İRowsetFastLoad satır kümeleri
The SQL Server Native Client OLE DB provider bulk copy rowsets are write-only, but they expose interfaces that allow the consumer to determine the structure of a SQL Server table.Aşağıdaki arabirimleri bir toplu kopyalama etkin üzerinde sunulan SQL Server yerel istemci ole db sağlayıcı satır kümesi:
IAccessor
IColumnsInfo
IColumnsRowset
IConvertType
İRowsetFastLoad
IRowsetInfo
ISupportErrorInfo
Sağlayıcıya özgü özellikleri SSPROP_FASTLOADOPTIONS, ssprop_fastloadkeepnulls ve SSPROP_FASTLOADKEEPIDENTITY davranışlarını denetleyen bir SQL Server yerel istemci ole db Sağlayıcı toplu kopyalama satır kümesi.The properties are specified in the rgProperties member of an rgPropertySets **IOpenRowset **parameter member.
Özellik kimliği |
Açıklama |
---|---|
SSPROP_FASTLOADKEEPIDENTITY |
Sütun: No R/W: Okuma/yazma Türü: VT_BOOL Varsayılan: VARIANT_FALSE Açıklama: Tüketici tarafından sağlanan kimlik değerlerini korur. VARIANT_FALSE: İçin değer bir kimlik sütunu de SQL Server Tablo tarafından üretilen SQL Server.Bağlı sütun tarafından göz ardı edilir için herhangi bir değer SQL Server yerel istemci ole db sağlayıcı. ÜZERİNE YAZILMASINA: Tüketici için bir değer sağlayan bir erişimci bağlayan bir SQL Server kimlik sütunu.Kimlik özellik sütun null, benzersiz bir değer her tüketici sağlar böylece kabul kullanılamaz IRowsetFastLoad::Insert çağırın. |
SSPROP_FASTLOADKEEPNULLS |
Sütun: No R/W: Okuma/yazma Türü: VT_BOOL Varsayılan: VARIANT_FALSE Açıklama: null varsayılan kısıtlamayı içeren sütunlar için tutar.Yalnızca etkiler SQL Server null kabul ve uygulanan varsayılan kısıtlama olan sütun. VARIANT_FALSE: SQL Serversütun için varsayılan değer ekler, SQL Server yerel istemci ole db sağlayıcı tüketici null için sütun içeren bir satır ekler ÜZERİNE YAZILMASINA: SQL Serverekler sütun null değeri ne zaman SQL Server yerel istemci ole db sağlayıcı tüketici null için sütun içeren bir satır ekler |
SSPROP_FASTLOADOPTIONS |
Sütun: No R/W: Okuma/yazma Türü: VT_BSTR Varsayılan: Yok Açıklama: Bu özellik aynıdır -h "İpucu,...n"seçeneği bcp yardımcı programı.Şu dizelere, yığın veri kopyalama seçenekleri olarak kullanılabilir bir tablo. ORDER(column[ASC | DESC][,...n]): Veri dosyasındaki verileri sıralama.Yüklenen veri dosyası üzerinde kümelenmiş dizin göre sıraladıysanız bulk copy performansı geliştirilmiş tablo. rows_per_batch = bb: Veri toplu iş başına satır sayısı (olarak bb).Server toplu yükleme değerine göre en iyi duruma bb.Varsayılan olarak, rows_per_batch bilinmiyor. KILOBYTES_PER_BATCH = cc: Veri toplu iş iş olarak (cc) başına kilobayt (kb) sayısıdır.Varsayılan olarak, KILOBYTES_PER_BATCH bilinmiyor. tablock: Tablo düzey kilit toplu kopyalama işlemi süresince aldı.Bu seçenek yalnızca toplu kopyalama işlemi süresince kilit tutan kilit çekişme üzerine azalttığı, önemli ölçüde performansı artırır tablo.Dizin tablo varsa, tablo birden çok istemci tarafından aynı anda yüklenebilir ve tablock belirtilir.Varsayılan olarak, tablo seçeneği ile kilitleme davranışı belirlenir tablo kilidi bulk yükü. CHECK_CONSTRAINTS: Tüm kısıtlamalar table_name toplu kopyalama işlemi sırasında denetlenir.Varsayılan olarak, kısıtlamaları dikkate alınmaz. FIRE_TRIGGER: De SQL Server 2000, etkin Tetikleyiciler ile en iyi duruma getirilmiş günlük mümkün değil çünkü tetikleyici mantığa günlük kayıtları.Bir toplu alma işlemi sırasında etkin Tetikleyiciler ile tüm toplu günlük iyileştirmeler (bu kilitleri dahil) devre dışı bırakıldı. İle başlayan SQL Server 2005, ancak SQL Server satır sürüm oluşturma için Tetikleyicileri kullanır ve satır sürümleri sürüm deposunda saklar tempdb.Bu nedenle, toplu günlüğü en iyi duruma getirmeleri bile Tetikleyicileri etkin olduğunda kullanılabilir.Etkin Tetikleyiciler ile çok sayıda satır içeren bir toplu iş iş alma bulk önce boyutunu genişletmeniz gerekebilir tempdb. |
Toplu kopyalama işlemleri tabanlı dosya kullanılarak
The SQL Server Native Client OLE DB provider implements the IBCPSession interface to expose support for SQL Server file-based bulk copy operations.The IBCPSession interface implements the IBCPSession::BCPColFmt, IBCPSession::BCPColumns, IBCPSession::BCPControl, IBCPSession::BCPDone, IBCPSession::BCPExec, IBCPSession::BCPInit, IBCPSession::BCPReadFmt, and IBCPSession::BCPWriteFmtmethods.
sql Server yerel istemci odbc sürücüsü
The SQL Server Native Client ODBC driver maintains the same support for bulk copy operations that were part of previous versions of the SQL Server ODBC driver.Toplu kopyalama işlemleri kullanma hakkında bilgi için SQL Server yerel istemci odbc sürücüsü, bkz: Toplu Kopyala işlemler (odbc) gerçekleştirme.
Ayrıca bkz.