OPENROWSET (Transact-SQL)

Bir OLE DB veri uzak veri erişimi için gerekli olan tüm bağlantı bilgilerini içeren kaynak.Bu yöntem tablo bağlantılı sunucu erişim için alternatif ve bağlanma ve OLE DB kullanarak uzak veri erişimi, tek seferlik, geçici bir yöntem.OLE DB veri kaynaklarına daha sık başvuru için bağlantılı sunucuları kullanın.Daha fazla bilgi için bkz:Bağlama sunucuları.OPENROWSET işlev, bir tablo adı gibi bir sorgunun FROM yan tümcesinde başvurulabilir.OPENROWSET işlevini INSERT, UPDATE hedef tablo olarak da başvurulabilir veya DELETE deyim için OLE DB sağlayıcı özellikleri.Sorgu, birden çok sonuç kümesi verebilir, ancak yalnızca birinci OPENROWSET verir.

OPENROWSET toplu işlemleri, okuma ve satır kümesi kümesi, bir dosyadan veri sağlayan yerleşik bir BULK sağlayıcı da destekler.

Topic link iconTransact-SQL sözdizimi kuralları

OPENROWSET 
( { 'provider_name' , { 'datasource' ; 'user_id' ; 'password' 
   | 'provider_string' } 
      , {   [ catalog. ] [ schema. ] object 
       | 'query' 
     } 
   | BULK 'data_file' , 
       { FORMATFILE = 'format_file_path' [ <bulk_options> ]
       | SINGLE_BLOB | SINGLE_CLOB | SINGLE_NCLOB }
} ) 

<bulk_options> ::=
   [ , CODEPAGE = { 'ACP' | 'OEM' | 'RAW' | 'code_page' } ] 
   [ , ERRORFILE = 'file_name' ]
   [ , FIRSTROW = first_row ] 
   [ , LASTROW = last_row ] 
   [ , MAXERRORS = maximum_errors ] 
   [ , ROWS_PER_BATCH = rows_per_batch ] 

   [ , ORDER ( { column [ ASC | DESC ] } [ ,...n ] ) [ UNIQUE ] 

Bağımsız değişkenler

  • 'provider_name'
    Is a character string that represents the friendly name (or PROGID) of the OLE DB provider as specified in the registry.provider_name has no default value.

  • 'datasource'
    Is a string constant that corresponds to a particular OLE DB data source.datasource is the DBPROP_INIT_DATASOURCE property to be passed to the IDBProperties interface of the provider to initialize the provider.Genellikle, bu dize, veritabanı dosyasının adı, veritabanı sunucusunun adını veya veritabanı veya veritabanı'nı bulmak için sağlayıcı kavramı bir ad içerir.

  • 'user_id'
    Is a string constant that is the user name passed to the specified OLE DB provider.user_id specifies the security context for the connection and is passed in as the DBPROP_AUTH_USERID property to initialize the provider.user_id cannot be a Microsoft Windows login name.

  • 'password'
    Is a string constant that is the user password to be passed to the OLE DB provider.password is passed in as the DBPROP_AUTH_PASSWORD property when initializing the provider.password cannot be a Microsoft Windows password.

  • 'provider_string'
    Is a provider-specific connection string that is passed in as the DBPROP_INIT_PROVIDERSTRING property to initialize the OLE DB provider.provider_string typically encapsulates all the connection information required to initialize the provider.Tarafından tanınan anahtar sözcüklerin listesi içinSQL ServerYerel istemci OLE DB sağlayıcı Bkz:Başlatma ve yetkilendirme özellikleri.

  • catalog
    Katalog veya belirtilen nesne bulunduğu veritabanı adıdır.

  • schema
    Şema veya nesnenin sahibi belirtilen nesnenin adıdır.

  • object
    Çalışmak istediğiniz nesneyi benzersiz olarak tanımlayan nesnenin adıdır.

  • 'query'
    Dize sabit gönderilen ve sağlayıcı tarafından çalıştırılır.Yerel bir kopyasıSQL ServerBu sorgu işleme yapar ancak sağlayıcı tarafından döndürülen sonuçlar sorgulama işlemleri doğrudan sorgu.Doğrudan sorgu sağlayıcıları, sekmeli veri üzerinden kullanılabilir yapmayın kullanıldığında yararlı olan tablo adları, yalnızca bir komut dili ile.Doğrudan sorgular desteklenir uzak sunucuda sürece sorgu sağlayıcının desteklediği OLE DBCommandnesne ve zorunlu, arabirim.Daha fazla bilgi için bkz:SQL Server yerel istemci (OLE DB) başvurusu.

  • TOPLU
    OPENROWSET BULK satır kümesi sağlayıcı, bir dosyadan veri okumak için kullanır.InSQL Server, OPENROWSET, verileri bir hedef yüklemeden bir veri dosyasından okuyabileceği tablo.Bu basit bir deyim ile OPENROWSET kullanmanıza olanak sağlar.

    BULK seçeneği bağımsız değişkenleri burada başlangıç ve bitiş veri hataları nasıl ve verileri nasıl yorumlanacağını okuma için üzerinde önemli bir denetim için izin.Örneğin, bir tek satır kümesi kümesi, tek - veri dosyasını okumak belirtebilirsiniz sütun satır kümesi kümesi türüvarbinary,varchar, ornvarchar.İzleyen bağımsız açıklamasında varsayılan davranışı açıklanır.

    BULK seçeneğini kullanma hakkında daha fazla bilgi için bu konudaki "Uyarılar" bakın.BULK seçeneği ile gerekli izinler hakkında daha fazla bilgi için bu konuda daha sonra "İzni," bakın.

    Not

    Tam kurtarma modeli, OPENROWSET (BULK...) ile veri almak için kullanılan günlük optimize.

    Toplu veri hazırlama hakkında bilgi almak için bkz:Veri, toplu vermek veya alma için hazırlanıyor.

  • 'data_file'
    Verileri hedef tabloya kopyalanacak olan veri dosyasının tam yoludur.

  • FORMATFILE ='format_file_path'
    Specifies the full path of a format file.SQL Server supports two types of format files: XML ve non-XML.

    Sonuç kümesindeki sütun türlerini tanımlamak için bir biçim dosyası gereklidir.SINGLE_CLOB, SINGLE_BLOB veya SINGLE_NCLOB belirtildiğinde yalnızca; bu durumda, biçim dosyası gerekli değildir.

    Biçim dosyaları hakkında bilgi için bkz:Veri Al toplu işlemi için bir biçim dosyası'nı kullanma.

  • < bulk_options >
    Belirtir bir veya daha fazla bağımsız değişken BULK seçeneği.

  • CODEPAGE**=** { **'**ACP '| **'**OEM '| **'**RAW '| 'code_page'}
    Belirtir kod sayfa veri dosyasındaki verilerin.CODEPAGE geçerlidir yalnızca verileri içerenchar,varchar, ortext127'den fazla veya az 32 karakter değerleri içeren sütunlar.

    Not

    Öneririz, belirttiğiniz bir harmanlama adı her sütunun biçim dosyası.

    CODEPAGE değeri

    Açıklama

    ACP

    Sütun dönüştürürchar,varchar, ortextveri türünden ANSI /MicrosoftWindows kod sayfa (ISO 1252)SQL Serverkod sayfa.

    OEM (varsayılan)

    Sütun dönüştürürchar,varchar, ortextSistem OEM kod sayfa için veri türündenSQL Serverkod sayfa.

    HAM

    Bir dönüştürme gerçekleşir kod sayfa diğerine.Bu hızlı bir seçenektir.

    code_page

    Temel kaynak kod sayfasını belirtir, karakter verileri veri dosyasındaki kodlanır, örneğin 850.

    Important noteImportant Note:
    SQL Server kod sayfa 65001 (UTF-8 kodlama) desteklemez.
  • ERRORFILE ='file_name'
    Biçimlendirme hataları ve için bir OLE DB satır kümesi dönüştürülemez satırları toplamak için kullanılan dosyayı belirtir.Bu satırlar, bu veri dosyasındaki "olduğu gibi." hata dosyasına kopyalanır

    Komut yürütme başlangıcında hata dosyası oluşturulur.Dosya zaten varsa bir hata ortaya çıktı.Ayrıca, uzantıya sahip bir denetim dosyası. ERROR.txt oluşturulur.Bu dosya, her satırda bir hata dosyasına başvuran ve hata tanılama sağlar.Hatalar düzeltildikten sonra veri yüklenebilir.

  • FIRSTROW **=**first_row
    Yüklemek için ilk satır sayısını belirtir.Varsayılan 1'dur.Bu, belirtilen veri dosyasının ilk satırı belirtir.Satır numaraları, satır sonlandırıcılar sayım tarafından belirlenir.FIRSTROW 1 tabanlıdır.

  • LASTROW **=**last_row
    Yüklemek için son satırın numarasını belirtir.Varsayılan 0'dur.Bu belirtilen veri dosyasındaki son satırı belirtir.

  • MAXERRORS **=**maximum_errors
    Önce OPENROWSET bir istisna atar, biçim dosyasında tanımlanan en fazla sözdizimi hatası veya uyumsuz satır sayısını belirtir.MAXERRORS kadar OPENROWSET yeniden yüklemeden hatalı her satır yok sayar ve hatalı satırı bir hata olarak sayar.

    Varsayılan değermaximum_errors10'dur.

    Not

    CHECK kısıtlamaları, ya da dönüştürme MAX_ERRORS uygulanmazmoneyvebigintveri türü.

  • ROWS_PER_BATCH **=**rows_per_batch
    Veri dosyasına veri yaklaşık sayısını belirtir.Bu değer, gerçek satır sayısı aynı sırada olmalıdır.

    OPENROWSET her zaman tek bir toplu iş olarak bir veri dosyasını içe aktarır.Ancak belirtirsenizrows_per_batchbir değer>0, query processor değeri kullanırrows_per_batchsorgu planı. kaynak tahsis etmek için bir ipucu olarak

    Varsayılan olarak, ROWS_PER_BATCH bilinmiyor.ROWS_PER_BATCH belirten = 0 ise aynı ROWS_PER_BATCH atlama.

  • ORDER ( {column[ ASC | DESC ] } [,... n] [UNIQUE])
    Veri dosyası verileri nasıl sıralanır belirten isteğe bağlı bir ipucu.Varsayılan olarak, toplu işlem veri dosyasını sıralanmamış varsayılmıştır.Daha verimli bir sorgu planı oluşturmak için sorgu iyileştirici tarafından belirtilen sırada yararlanılabilir, performansı.Ne zaman bir sıralama belirlemek yararlı olabilir örnekleri şunlardır:

    • Satırlar halinde ekleme bir tablo olan kümelenmiş bir dizin kümesi verileri kümelenmiş dizin anahtarını nereden sıralanır.

    • Diğeriyle satır kümesi kümesi birleştirmek tablo, burada sıralama ve birleştirmek sütunları aynı.

    • Satır kümesi verileri sütunlara göre sıralama toplamak.

    • satır kümesi kümesi kaynağı olarak kullanarak tablo burada sıralama ve birleştirmek sütunları aynı, bir sorgunun FROM yan tümcesinde.

    Benzersiz belirtir, veri dosyası yok yinelenen girdiler.

    Veri dosyasındaki gerçek satırları belirtilen sıraya göre sıralanmış veya UNIQUE İpucu belirtilir ve yineleme tuşları varsa bir hata döndürdü.

    ORDER kullanıldığında, sütun diğer adları gereklidir.BULK yan tümce ile erişilen türetilen tablonun sütun diğer ad ad adı listesinden başvurmalıdır.ORDER yan tümcesinde belirlenen sütun adları, sütun diğer ad ad adı listeye bakın.Büyük değer türleri ( varchar(max), nvarchar(max), varbinary(max), ve xml) ve (LOB) büyük nesne türleri ( text, ntext, ve image) sütunları belirtilemez.

  • SINGLE_BLOB
    İçeriğini döndürürdata_fileolarak bir tek satır kümesi kümesi, tek-sütun satır kümesi kümesi türüvarbinary(max).

    Important noteImportant Note:

    Tüm Windows dönüştürme kodlama yalnızca SINGLE_BLOB desteklediği için yalnızca yerine SINGLE_CLOB ve SINGLE_NCLOB, SINGLE_BLOB seçeneğini kullanarak XML verilerini içe öneririz.

  • SINGLE_CLOB
    Okuma iledata_fileASCII olarak bir tek satır kümesi kümesi, tek - içeriğini döndürür sütun satır kümesi kümesi türüvarchar(max)kullanarak, geçerli veritabanına al. harmanlama

  • SINGLE_NCLOB
    Okuma iledata_fileUNICODE, olarak içeriği tek satır, tek sütunlu satır kümesi türü olarak verirnvarchar(max)kullanarak, geçerli veritabanına al. harmanlama

Remarks

OPENROW küme uzak verilerine erişmek için kullanılan OLE DB yalnızca veri kaynaklarınıDisallowAdhocAccess kayıt seçeneği, açıkça küme için belirtilen sağlayıcı ve geçici dağıtılmış Gelişmiş Yapılandırma seçeneğini etkin sorgu 0.Bu seçenek belirlendiğinde, varsayılan davranış geçici erişim için izin vermez.

Uzak OLE DB veri kaynaklarına erişirken, güvenilir bağlantı oturum açma kimliğini otomatik olarak istemcinin sorgulanmakta sunucuya bağlı sunucunun temsilci değil.kimlik doğrulaması temsilcisi yapılandırılmış olması gerekir.Daha fazla bilgi için bkz:Bağlantılı sunucular, temsilci atama için yapılandırma.

OLE DB sağlayıcı belirtilen veri kaynağında birden çok katalog ve şemalar destekliyorsa, katalog ve şema adı gereklidir.DeğerlericatalogveschemaOLE DB sağlayıcı bunları desteklemiyorsa, atlanabilir., sağlayıcı Formun iki bölümü adını yalnızca şema adlarını destekleyenschema**.object belirtilmelidir., sağlayıcı Destekler adları, bir üç parçalı adı yalnızca katalogcatalog.schema.**object belirtilmelidir.Üç parçalı adı belirtilmelidir, doğrudan sorgular için kullanmakSQL ServerYerel istemci OLE DB sağlayıcı.Daha fazla bilgi için bkz:Transact-SQL sözdizimi kuralları (Transact-SQL).

OPENROWSET kabul değişkenleri, değişken.

OPENROWSET BULK seçeneği kullanılarak

AşağıdakiTransact-SQLyenilikleri OPENROWSET(BULK...) işlevini destekler:

  • SELECT ile kullanılan bir FROM yan tümce, SELECT tam işlevselliğe sahip bir tablo adı yerine OPENROWSET(BULK...) çağırabilirsiniz.

    İlinti adı olarak da bilinen bir aralık değişken veya diğer ad ad from OPENROWSET BULK seçeneği gerektiren yan tümce.Sütun diğer adları belirtilebilir.biçim dosyası bir sütun diğer ad ad adı listesi belirtilirse, sütun adları olması gerekir.Sütun diğer adları belirtme biçim dosyası, sütun adları olarak geçersiz kılar:

    FROM OPENROWSET(BULK...) AS table_alias

    FROM OPENROWSET(BULK...) AS table_alias(column_alias,...n)

  • Bir SELECT... FROM OPENROWSET(BULK...) deyim bir tabloya verileri almadan dosyasındaki verilere doğrudan sorgular.SELECT…FROM OPENROWSET(BULK...) ifadeleri, ayrıca sütun adları ve veri türlerini belirtmek için bir biçim dosyası kullanarak toplu sütun diğer adları listeleyebilirsiniz.

  • INSERT veya birleştirme bir deyim toplu bir kaynak tablo olarak kullanan OPENROWSET(BULK...) veri dosyasından veri alır birSQL ServerTablo.Daha fazla bilgi için bkz:BULK INSERT veya OPENROWSET(BULK...) kullanarak toplu veri alınıyor.

  • OPENROWSET BULK seçeneği INSERT deyim ile birlikte kullanıldığında, tablo ipuçlarını BULK yan destekler., TABLOCK gibi normal tablo ipuçlarını yanında BULK yan tümce aşağıdaki özel tablo ipuçlarını kabul edebilirsiniz: (Yalnızca CHECK ve yabancı anahtar kısıtlamaları dikkate almaz) IGNORE_CONSTRAINTS, IGNORE_TRIGGERS, KEEPDEFAULTS ve KEEPIDENTITY. Daha fazla bilgi için bkz:Tablo ipuçları (Transact-SQL).

... INSERT SELECT kullanma hakkında bilgi için * FROM OPENROWSET(BULK...) deyimleri, bkz:Alma ve toplu veri verme.Satır Ekle toplu alma tarafından gerçekleştirilen işlemler kaydedilir hareket günlüğüne hakkında bilgi için bkz:Toplu alma en az günlüğe kaydetme için Önkoşullar.

Not

OPENROWSET kullandığınızda, anlamak önemli olduğunu nasılSQL Servertutamaçları kimliğe bürünme.Güvenlik konuları hakkında bilgi için bkz:BULK INSERT veya OPENROWSET(BULK...) kullanarak toplu veri alınıyor.

Toplu SQLCHAR, SQLNCHAR veya SQLBINARY veri alma

Belirtilmezse, SQLCHAR, SQLNCHAR veya SQLBINARY verilerin uzunluğu en fazla bayt 8000 aşmadığını, OPENROWSET(BULK...) varsayar.Tüm içeren LOB veri alan alınan verileri isevarchar(max),nvarchar(max), orvarbinary(max)8000 bayt aşan nesneleri, XML kullanmalısınız biçim dosyası, uzunluğu en fazla veri alan. tanımlarEn fazla uzunluk belirtmek için biçim dosyası düzenleyin ve MAX_LENGTH öznitelik bildirir.Daha fazla bilgi için bkz:Schema Syntax for XML Format Files.

Not

Otomatik olarak oluşturulan biçim dosyası uzunluğunu veya LOB alan için maksimum uzunluğu belirtin.Ancak, bir biçim dosyası düzenleyebilir ve en fazla uzunluğunu veya el ile belirleyin.

Toplu verme veya alma SQLXML belgeler

Toplu olarak verme veya alma SQLXML veri kullanmak aşağıdaki veri türlerinden biçimi, dosya.

Veri türü

ETKİN

SQLCHAR veya SQLVARYCHAR

Verileri istemci kod sayfasını veya kod sayfa tarafından harmanlama açık gönderilir).

SQLNCHAR veya SQLNVARCHAR

Verilerin gönderildiği Unicode.

SQLBINARY veya SQLVARYBIN

Verileri bir dönüştürme olmadan gönderilir.

İzinler

OPENROWSET izinleri, OLE DB sağlayıcısına geçirilen kullanıcı adının izinler tarafından belirlenir.BULK seçeneği kullanmak için toplu işlemler ADMINISTER iznine gerek duyar.

Örnekler

C.SELECT ile OPENROWSET ve SQL Server Native istemci OLE DB sağlayıcı kullanma

Aşağıdaki örnekSQL ServerErişmek için yerel istemci OLE DB sağlayıcıHumanResources.Department, tabloAdventureWorksUzak sunucu veritabanıSeattle1.(Use SQLNCLI andSQL ServerWill Redirect To The Latest sürüm ofSQL ServerNative istemci OLE DB sağlayıcı.) Bir SELECTifadesini, dönen küme satırı tanımlamak için kullanılır.Sağlayıcı dizesi içerenServerveTrusted_Connectionanahtar sözcükler.Bu sözcükleri tarafından tanınanSQL ServerYerel istemci OLE DB sağlayıcı.

SELECT a.*
FROM OPENROWSET('SQLNCLI', 'Server=Seattle1;Trusted_Connection=yes;',
     'SELECT GroupName, Name, DepartmentID
      FROM AdventureWorks.HumanResources.Department
      ORDER BY GroupName, Name') AS a;

B.Jet için Microsoft Office 2010 Suite OLE DB sağlayıcı kullanma

Aşağıdaki örnekte erişenCustomers, tabloMicrosoftErişimNorthwindile veritabanıMicrosoftJet için OLE DB sağlayıcı

Not

Bu örnek, Access yüklü olduğunu varsayar.Bu örneği çalıştırmak için Northwind veritabanını yüklemeniz gerekir.Northwind veritabanı, yükleme hakkında bilgi için bkz:Northwind ve pubs örnek veritabanları karşıdan yükleniyor.

SELECT CustomerID, CompanyName
   FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
      'C:\Program Files\Microsoft Office\OFFICE11\SAMPLES\Northwind.mdb';
      'admin';'',Customers)
GO

C.INNER birleştirmek işleminde OPENROWSET ve başka bir tablo kullanma

The following example selects all data from the Customers table from the local instance of SQL ServerNorthwind database and from the Orders table from the Access Northwind database stored on the same computer.

Not

Bu örnek, Access yüklü olduğunu varsayar.Bu örneği çalıştırmak için Northwind veritabanını yüklemeniz gerekir.Northwind veritabanı, yükleme hakkında bilgi için bkz:Northwind ve pubs örnek veritabanları karşıdan yükleniyor.

USE Northwind  
GO
SELECT c.*, o.*
FROM Northwind.dbo.Customers AS c 
   INNER JOIN OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
   'C:\Program Files\Microsoft Office\OFFICE11\SAMPLES\Northwind.mdb';'admin';'', Orders)    
   AS o 
   ON c.CustomerID = o.CustomerID 
GO

D.OPENROWSET için toplu kullanarak, dosya verilerini bir varbinary(max) ekleyebilirsiniz sütun

Aşağıdaki örnek, tanıtım amacıyla, küçük bir tablo oluşturur ve dosya verilerini adlı bir dosya eklerText1.txtbulunanC:kök dizinine birvarbinary(max)sütun.

USE AdventureWorks
GO
CREATE TABLE myTable(FileName nvarchar(60), 
  FileType nvarchar(60), Document varbinary(max))
GO

INSERT INTO myTable(FileName, FileType, Document) 
   SELECT 'Text1.txt' AS FileName, 
      '.txt' AS FileType, 
      * FROM OPENROWSET(BULK N'C:\Text1.txt', SINGLE_BLOB) AS Document
GO

E.OPENROWSET BULK sağlayıcı satır bir metin dosyasından almak için bir biçim dosyası kullanma

Aşağıdaki örnek, satır, sekmeyle ayrılmış metin dosyasından almak için bir biçim dosyası kullanırvalues.txt, aşağıdaki verileri içerir:

1     Data Item 1
2     Data Item 2
3     Data Item 3

biçim dosyasıvalues.fmtsütun açıklar,values.txt:

9.0
2
1  SQLCHAR  0  10 "\t"        1  ID                SQL_Latin1_General_Cp437_BIN
2  SQLCHAR  0  40 "\r\n"      2  Description        SQL_Latin1_General_Cp437_BIN

Bu verileri alan sorgudur:

SELECT a.* FROM OPENROWSET( BULK 'c:\test\values.txt', 
   FORMATFILE = 'c:\test\values.fmt') AS a;

Ek örnekler

Değişiklik Geçmişi

Güncelleştirilmiş içerik

Eklenmiş bir önemli Not açıklaması içincode_page.

Açıklamalar bölümünde, ile ilgili bilgiler eklendi toplu alma SQLCHAR, SQLNCHAR veya SQLBINARY.