Toplu veri bulk INSERT veya openrowset(bulk...) kullanarak alma

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 konuda ayrıca bulk INSERT ve openrowset(bulk…) kullanarak ve toplu alma uzak veri kaynak için bu yöntemleri kullanarak güvenlik konuları açıklanmaktadır.

Not

bulk INSERT veya openrowset(bulk…) kullandığınızda, bunu anlamak önemlidir nasıl SQL Server 2005 ve sonraki sürümleri kimliğe bürünme.Daha fazla bilgi için bkz: "Güvenlik değerlendirmeleri" Bu konuda daha sonra.

bulk INSERT deyimi

Yükler verileri bir veri dosyasından bulk INSERT bir tablo.Bu işlev tarafından sağlanan benzer , seçeneği bcp komutu; Bununla birlikte, veri dosyası tarafından salt okunur SQL Server işlem.bulk INSERT sözdizimi bir açıklaması için bkz: BULK INSERT (Transact-SQL).

Örnekler

OPENROWSET(BULK…) İşlevi

openrowset toplu satır kümesi sağlayıcı openrowset arama yoluyla erişilen işlev ve bulk seçeneği belirtme.openrowset(bulk…) işlev için bir uzak veri bağlanarak uzak veri erişim sağlar kaynak, ole db sağlayıcı aracılığıyla bir veri dosyası gibi.

İçin toplu alma bir select… verileri, çağrı openrowset(bulk…)from yan tümce tümce tümce INSERT deyim içinde.Veri alma toplu temel sözdizimi aşağıdaki gibidir:

EKLE...SEÇİN * OPENROWSET(BULK...) DAN

INSERT deyim içinde kullanıldığında, tablo ipuçlarını openrowset(bulk...) destekler.Ek olarak, tablock gibi normal tablo ipuçlarını bulk yan tümce tümce tümce aşağıdaki özel tablo ipuçlarını kabul edebilirsiniz: (Yalnızca denetim kısıtlamaları dikkate almaz) yanısıra IGNORE_CONSTRAINTS, IGNORE_TRIGGERS, keepdefaults ve KEEPIDENTITY.Daha fazla bilgi için bkz: Tablo İpuçları (Transact-SQL).

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

Örnekler

Güvenlikle ilgili önemli noktalar

Bir kullanıcı kullanıyorsa, bir SQL Server login, güvenlik profilinin SQL Server işlem hesabı kullanılır.Bunun aksine, bir SQL Server kullanıcı oturum açtığında Windows kimlik doğrulaması'nı kullanarak, kullanıcı güvenlik profilinin ne olursa olsun, kullanıcı hesabı tarafından erişilen dosyaları okuyabilir SQL Server işlem.

Örneğin, bir kullanıcı için oturum açmış düşünün bir örnek , SQL Server kullanarak Windows kimlik doğrulaması.openrowset bulk INSERT veya bir veri dosyasına veri için kullanabilmek kullanıcının bir SQL Server tablo, kullanıcı hesabı veri dosyasını okuma erişimi olması gerekir.Veri dosyasına erişimi kullanıcı veri dosyasından bir tablo bile alabilirsiniz SQL Server işlem iznine sahip değil erişim dosya.Kullanıcı dosya erişim izni vermek zorunda SQL Server işlem.

SQL Serverve Microsoft Windows etkinleştirmek için yapılandırılabilir bir örnek , SQL Server diğerine bağlanmak için örnek , SQL Server tarafından iletme kimlik bilgileri bilgilerini bir kimliği doğrulanmış Windows kullanıcı.Bu düzenleme olarak bilinen kimliğe bürünme veya temsilcisi.Anlama nasıl SQL Server 2005 ve daha sonraki sürümleri tutamacı güvenlik kullanıcı kimliğe bürünme için bulk INSERT veya kullandığınızda önemliopenrowset. Kullanıcının kimliğe bürünme verir ya da daha farklı bir bilgisayarda bulunan veri dosyasına SQL Server işlem veya kullanıcı.Örneğin, bir kullanıcı, BİLGİSAYAR_A bir veri dosyasına erişim sahip Computer_Bve kimlik bilgileri temsilcisi uygun şekilde ayarlamak, kullanıcı örneğine bağlanabilir SQL Server çalışan Computer_C, veri dosyası üzerinde erişim Computer_Bve bu dosyaya veri toplu bir tablo , Computer_C.Daha fazla bilgi için bkz: Kimliğe bürünme anlama.

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.Eskiden, bir kullanıcının kimliği doğrulandıktan sonra dış dosyalara erişim üzerinde güvenlik profilinin temel SQL Server işlem.Zaman SQL Server işlemi access dosyasına sahip, ancak üye olan bir kullanıcı bir dosya için okuma erişimi vardı bulkadmin sabit sunucu rolü, kullanıcı bulk INSERT kullanarak dosyayı içe aktarmak ve dosyanın içeriğini erişmek.

Toplu bir uzak veri dosyasından içe aktarma

bulk INSERT veya INSERT kullanmak için...SEÇİN * ndan openrowset(bulk...) için toplu alma iki bilgisayar arasında veri başka bir bilgisayardan veri dosyası paylaşılan.Paylaşılan veri dosyasını belirtin, onun evrensel adlandırma kuralı kuralı biçimini Genel alır, kuralı (unc) adını kullanmak için **\SunucuAdı\PaylaşımAdı\yol\**dosya adı.Ayrıca, verileri dosyaya erişmek için kullanılan hesabın uzak diskteki dosyayı okumak için gerekli izinleriniz olmalıdır.

Örneğin, aşağıdaki BULK INSERT deyim toplu veri alır SalesOrderDetail tablo , AdventureWorks2008R2 bir veri dosyasından, adlı bir veritabanı newdata.txt.This data file resides in a shared folder named \dailyorders on a network share directory named salesforce on a system named computer2.

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

Not

Bu kısıtlama geçerli değildir bcp yardımcı programı'nı istemci dosya bağımsız olarak okuduğu SQL Server.