Aracılığıyla paylaş


BULK INSERT veya OPENROWSET(BULK...) kullanarak toplu veri alınıyor

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.Bu konu, BULK INSERT ve OPENROWSET(BULK…) kullanarak ve bir uzak veri kaynağından Al toplu olarak, bu yöntemleri kullanarak, güvenlik konuları da açıklar.

Not

Bunu anlamak önem taşır BULK INSERT veya OPENROWSET(BULK…) kullandığınızda, nasıl SQL Server 2005 ve sonraki sürümleri, kimliğe bürünme tanıtıcı. Daha fazla bilgi için bu konuda daha sonra "Güvenlik konuları" konusuna bakın.

BULK INSERT deyim

BULK INSERT verileri tabloya bir veri dosyasından yükler.Bu işlev tarafından sağlanan benzer içinde seçeneğiKullanımıbcp komut; ancak, veri dosyasının okunur tarafından SQL Server İşlem. BULK INSERT sözdiziminin açıklaması için bkz: BULK INSERT (Transact-SQL).

Örnekler

OPENROWSET(BULK…) işlev

OPENROWSET toplu satır kümesi sağlayıcı OPENROWSET işlevini çağırma ve BULK seçeneği belirterek erişilir.OPENROWSET(BULK…) işlev, OLE DB sağlayıcı aracılığıyla bir veri dosyası gibi bir uzak veri kaynağına bağlanarak uzak veri erişimi sağlar.

Için toplu alma verileri bir INSERT deyim içinde SELECT…FROM yan tümce OPENROWSET(BULK…) çağırmanıza.Veri içe aktarma toplu işlemi için temel sözdizimi aşağıdaki gibidir:

EKLE...SEÇİN * openrowset(bulk...) GELEN

Bir INSERT deyim içinde kullanıldığında, OPENROWSET(BULK...) tablo ipuçları destekler.Ek olarak, TABLOCK gibi normal bir tablo ipuçlarını BULK yan tümce aşağıdaki özel tablo ipuçları kabul edebilir: (Yalnızca CHECK kısıtlamaları dikkate almaz) IGNORE_CONSTRAINTS ıgnore_trıggers, KEEPDEFAULTS ve KEEPIDENTITY. Daha fazla bilgi için bkz:Tablo ipuçları (Transact-SQL).

BULK seçeneği ek kullanımları hakkında bilgi için bkz: OPENROWSET (Transact-SQL).

Örnekler

Güvenlik konuları

Bir kullanıcı kullanıp kullanmadığını bir SQL Server oturum açma, güvenlik profili SQL Server işlem hesabı kullanılır. Buna karşın, bir SQL Server Windows kimlik doğrulaması'nı kullanarak kullanıcı oturum açtığında, kullanıcı, yalnızca sahibin meşru olarak güvenlik profili ne olursa olsun kullanıcı hesabının erişebileceği dosyaları okuyabilir SQL Server İşlem.

Örneğin, bir kullanıcı için oturum göz önünde bulundurun bir örnek, SQL Server Windows kimlik doğrulaması'nı kullanarak. Bir veri dosyasından veri almak için BULK INSERT veya OPENROWSET kullanabilmek için kullanıcının bir SQL Server Kullanıcı hesabının, tablo, veri dosyasını okuma erişimi gerektirir. Veri dosyasına erişimi kullanıcı dosyadan bir tablo bile veri alabilirsiniz SQL Server işlem, dosya erişim iznine sahip değil. Dosya erişim izni vermek kullanıcı yok SQL Server İşlem.

SQL Server ve Microsoft Windows etkinleştirmek için yapılandırılmış bir örnek, SQL Server başkasına bağlanma örnek, SQL Server kimliği doğrulanmış bir Windows kullanıcı kimlik bilgileri bilgilerini ileterek. Bu düzenleme bilinir Kişiliğe bürünme or temsilci seçme.Anlama nasıl SQL Server 2005 ve daha sonraki sürümleri tanıtıcı güvenlik kullanıcı kimliğine bürünme özelliğine için BULK INSERT veya OPENROWSET kullandığınızda önemlidir. Kullanıcı kimliğine bürünme özelliğine izin verir, ya da daha farklı bir bilgisayarda bulunan veri dosyasını SQL Server işlem veya kullanıcı. Örneğin, bir kullanıcı Computer_A bir veri dosyasına erişimi vardır.Computer_Bve kimlik bilgileri bilgilerinin aktarılmasına ayarlamak uygun şekilde, kullanıcı örneğine bağlanabilirsinizSQL Server çalıştığı Computer_C üzerinde veri dosyasına erişmenizComputer_Bve toplu alma bu dosyayı bir tabloya veriComputer_C.Daha fazla bilgi için bkz:Anlama Kişiliğe bürünme.

Not

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.Önceden, kullanıcı tarafından doğrulandı sonra dış dosyalara erişim güvenlik profilindeki temel SQL Server İşlem. Zaman SQL Server işlem bir dosyaya erişim dosyaya olan, ancak bir üyesi olan bir kullanıcı için okuma erişimi sahipti bulkadmin sabit sunucu rolü, kullanıcı BULK INSERT komutunu kullanarak dosyayı alın ve dosya içeriğini erişim.

uzak veri dosyasından toplu olarak alma

BULK INSERT veya INSERT,... SELECT * FROM toplu olarak OPENROWSET(BULK...) başka bir bilgisayardan veri almak için veri dosyası iki bilgisayar arasında paylaştırılması gerekir.To specify a shared data file, use its universal naming convention (UNC) name, which takes the general form, **\\Servername\Sharename\Path\**Filename.Ayrıca, veri dosyasına erişmek için kullanılan hesabın uzak disk üzerindeki dosyayı okumak için gerekli olan izinleri olması gerekir.

Örneğin, aşağıdaki BULK INSERT deyim toplu veri alır SalesOrderDetail tablonun AdventureWorks Veritabanı'adlı bir veri dosyasından newdata.txt. Bu veri dosyası adlı paylaşılan bir klasörde bulunuyor. \dailyorders adlı dizin bir ağda paylaştırma salesforce adlı bir sistem üzerinde computer2.

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

Not

Bu kısıtlama uygulanmaz Kullanımıbcp yardımcı programı dosyası bağımsız istemci okuyacağı içinSQL Server.