OPENROWSET (Transact-SQL)

Bir ole DB veri kaynak uzak veri erişmek için gereken tüm bağlantı bilgilerini içerir.Bu yöntem bir bağlantılı sunucu tabloları erişme alternatif ve bir -saat, bağlanma ve ole DBkullanarak uzak veri erişme ad hoc yöntem .ole DB veri kaynaklarına daha sık başvuruları için bağlantılı sunucuları kullanın.Daha fazla bilgi için, bkz. Bağlama sunucuları.Bir tablo adı üzerindeymiş from yan tümce sorgunun içinde openrowset işlev başvurulabilir.openrowset işlev INSERT, update veya delete deyim, ole DBsağlayıcıyeteneklerini tabi hedeftablo olarak da başvurulabilir. Sorgu birden fazla sonuç kümeleri döndürebilir, ancak yalnızca birincisi openrowset döndürür.

openrowset toplu işlemler, bir dosyanın okunabilir ve satır kümesidöndürülen verileri sağlayan bir yerleşik bulk sağlayıcı da destekler.

Konu bağlantısı simgesiTransact-SQL sözdizimi kuralları

Sözdizimi

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'
    ole DBsağlayıcı olarak belirtilen kayıt kolay adını (veya ProgID) gösteren bir karakter dize olan. provider_nameVarsayılan değeri yok.

  • 'datasource'
    Belirli bir ole DB veri kaynakiçin karşılık gelen bir dizesabit olduğu. datasourceDBPROP_INIT_DATASOURCE özellik için geçirilen olan IDBProperties arabirim sağlayıcı sağlayıcıbaşlatılamadı.Genellikle, bu dize , veritabanı dosyasıadı, veritabanı sunucusunun adını veya veritabanı ya da veritabanı sağlayıcı anladığı bir ad içerir.

  • 'user_id'
    Kullanıcı adı olan bir dize sabit belirtilen ole DB sağlayıcıiletilir.user_idsağlayıcıbaşlatmak için DBPROP_AUTH_USERID özellik olarak geçirilen ve bağlantı için güvenlik bağlamını belirtir.user_idMicrosoft Windows oturum açma adı olamaz.

  • 'password'
    Kullanıcı parolasını ole DBsağlayıcıaktarılacak olan bir dizesabit olduğu. passworddbprop_auth_password özellik olarak sağlayıcıbaşlatırken geçirilen.passwordMicrosoft Windows parola olamaz.

  • 'provider_string'
    sağlayıcı-ole DBsağlayıcıbaşlatmak için DBPROP_INIT_PROVIDERSTRING özellik olarak geçirilen özel bağlantı dizesi . provider_stringgenellikle sağlayıcıbaşlatmak için gereken tüm bağlantı bilgilerini saklar.Tarafından tanınan anahtar sözcükler listesi için SQL Server yerel istemci ole DB sağlayıcıBkz: Başlatma ve yetkilendirme özellikleri.

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

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

  • object
    Çalışmak için nesneyi benzersiz olarak tanımlayan nesne addır.

  • 'query'
    Bir dize sabit gönderilen ve sağlayıcıtarafından yürütüldü.Yerel örnek SQL Server Bu sorgu işlemez, ancak sağlayıcı, doğrudan sorgusorgu sonuçlar işler.Doğrudan sorgular, sekmeli veri tablo adları yoluyla, ancak yalnızca bir komut dili üzerinden olmamasını Sağlayıcı kullanıldığında yararlı olur.Doğrudan sorgular, uzak sunucuda desteklenir, ole DB sağlayıcı sorguyu desteklediği süreceCommand nesnesi ve zorunlu kendi arabirimleri. Daha fazla bilgi için, bkz. SQL Server yerel istemci (ole db) başvurusu.

  • BULK
    openrowset toplu satır kümesi sağlayıcı , bir dosyadan veri okumak için kullanır.De SQL Server, openrowset hedef tabloveri yüklemeden verileri dosyadan okuyabilir.Bu, basit bir select deyimile openrowset kullanmanızı sağlar.

    bulk seçeneği bağımsız değişkenleri için başlangıç ve bitiş veri hataları nasıl ve verileri nasıl yorumlanacağını okuma burada üzerinden önemli denetim için izin.Örneğin, veri dosyası bir tek satır, teksütun satır kümesi türü okunacak belirtebilirsiniz varbinary, varchar, veya nvarchar.İzleyen bağımsız yer alan açıklamalar varsayılan davranışı açıklanır.

    "Açıklamalar" bulk seçeneği kullanma hakkında daha fazla bilgi için bkz: Bu konuda daha sonra.bulk seçeneği tarafından gerekli izinler hakkında daha fazla bilgi için bkz: "İzni" Bu konuda daha sonra.

    Not

    Veri almak için kullanılan tam kurtarma modeli, openrowset (bulk...) günlük iyileştirmez.

    toplu almaiçin veri hazırlama hakkında bilgi için bkz: Veri toplu verme veya alma için hazırlanıyor..

  • 'data_file'
    Verileri hedeftablokopyalanacak veri dosyası tam yol değil.

  • FORMATFILE ='format_file_path'
    biçim dosyasıtam yol belirtir.SQL Serveriki biçim dosya türlerini destekler: xml ve xml olmayan.

    biçim dosyası sonuç kümesi sütun türlerini tanımlamak için gereklidir.SINGLE_CLOB, SINGLE_BLOB veya SINGLE_NCLOB belirtildiğinde yalnızca istisnadır; hangi durum, biçim dosyası gerekli değildir.

    Biçim dosyaları hakkında daha fazla bilgi için bkz: Veri Al toplu için bir biçim dosyası kullanma.

  • < bulk_options >
    Bir veya daha fazla bağımsız değişken bulk seçeneği belirtir.

  • CODEPAGE = { 'ACP' | 'OEM' | 'RAW' | 'code_page' }
    Veri kod sayfası veri dosyasını belirtir.Kod sayfası yalnızca veri içeriyorsa, ilgili char, varchar, veya text 127'den fazla veya az 32 karakter değerleri içeren sütunlar.

    Not

    biçim dosyasıher sütun için bir harmanlama adı belirtmeniz önerilir.

    codepage değeri

    Açıklama

    ACP

    Sütunları dönüştürür char, varchar, veya text veri türünden ANSI /Microsoft Windows kod sayfası (ISO 1252) SQL Server kod sayfası.

    oem (varsayılan)

    Sütunları dönüştürür char, varchar, veya text veri türü sistem oem kod sayfası SQL Server kod sayfası.

    HAM

    Dönüştürme sayfa kod sayfası oluşur.Bu en hızlı seçenektir.

    code_page

    Veri dosyasındaki karakter verileri kodlanmış kaynak kod sayfası gösterir; Örneğin, 850.

    Önemli notÖnemli
    SQL Serverkod sayfası 65001 (utf-8 kodlaması) desteklemez.
  • ERRORFILE ='file_name'
    Biçimlendirme hataları ve için ole DB satır kümesidönüştürülemez satırları toplamak için kullanılan dosyayı belirtir.Bu satırlar, veri dosyasındaki "gibi." Bu hata dosyasına kopyalanır

    Komut yürütme başlangıcında hata dosyası oluşturulur.Dosya zaten varsa bir hata ortaya çıkar.Uzantısı olan ek olarak, bir denetim dosyası.Error.txt oluşturulur.Bu dosya, her satırda 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 değer 1'dir.Bu belirtilen veri dosyasındaki ilk satır gösterir.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 değer 0'dir.Bu belirtilen veri dosyasındaki son satırı belirtir.

  • maxerrors =maximum_errors
    openrowset bir istisna atar önce oluşan biçim dosyasıiçindeki tanımlandığı sözdizimi hataları veya uyumsuz satır sayısı üst sınırını belirtir.maxerrors ulaşılıncaya kadar openrowset yükleme değil kötü her satırı yoksayar ve bir hata olarak hatalı satır sayar.

    İçin varsayılan maximum_errors 10.

    Not

    max_errors Kontrol kısıtlamaları veya dönüştürme için geçerli değildir money ve bigint veri türü.

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

    openrowset toplu işbir tek bir veri dosyası her zaman içe aktarır.Ancak, belirtirseniz rows_per_batch değeri > 0, sorgu işlemci kullanan değerini rows_per_batch sorgu planı. kaynaklar tahsis etmek için bir ipucu olarak

    Varsayılan olarak, rows_per_batch bilinmiyor.Belirtme rows_per_batch = 0 aynıdır rows_per_batch atlama.

  • Sipariş ({ column [asc | DESC ] } [ ,... n] [UNIQUE])
    Veri dosyasındaki verileri nasıl sıralanır belirten isteğe bağlı bir ipucu.Varsayılan olarak, veri dosyası sırasız toplu işlemini varsayar.Daha verimli bir sorgu planı oluşturmak için sorgu iyileştiricisi tarafından belirtilen sırada yararlanılabilir, performansı iyileştirebilir.Ne zaman bir sıralama belirtme yararlı olabilir örnekleri şunlardır:

    • kümelenmiş dizin satır kümesi veri kümelenmiş dizinanahtarburada sıralanmış olan bir tablo satır ekleme.

    • Burada sıralama ve birleştirmek sütunlarında eşleşen başka bir tablo, satır kümesi katılma.

    • satır kümesi veri sütunları sıralama tarafından toplama.

    • Bir sorgunun from yan tümce kaynaktablo olarak burada sıralama ve birleştirmek sütunlarında eşleşen satır kümesi kullanarak.

    Veri dosyası yinelenen girdileri yok UNIQUE belirtir.

    Gerçek satır veri dosyasında belirtilen sıraya göre sıralanmıyor veya benzersiz ipucu belirtilir ve çoğaltmaları anahtarları varsa, hata oluşur.

    Sütun diğer adları SIRASI kullanıldığında gereklidir.sütundiğer ad listesinden toplu yan tümcetarafından erişilen türetilmiş tablo bulunmanız gerekir. Sipariş yan tümce tümcesinde belirlenen sütun adları, bu sütundiğer ad listeye başvurun. Büyük bir değer türleri (varchar(max), nvarchar(max), varbinary(max), ve xml) ve büyük nesne (lob) türleri (text, ntext, ve image) sütunları belirtilemez.

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

    Önemli notÖnemli

    Yalnızca SINGLE_BLOB dönüştürmeleri kodlama tüm Windows desteklediğinden SINGLE_BLOB seçeneği yerine, SINGLE_CLOB ve SINGLE_NCLOB, yalnızca kullanarak xml verilerini almak öneririz.

  • SINGLE_CLOB
    Okuma tarafından data_file ASCII olarak bir tek satır, teksütun satır kümesi türü olarak içeriğini döndürür varchar(max)kullanarak harmanlama geçerli veritabanı.

  • SINGLE_NCLOB
    Okuma tarafından data_file , UNICODE olarak bir tek satır, teksütun satır kümesi türü olarak içeriği verir nvarchar(max)kullanarak harmanlama geçerli veritabanı.

Açıklamalar

openrowset, uzak veri erişim için kullanılabilir ole DB yalnızca veri kaynakları DisallowAdhocAccess kayıt defteri seçenektir açıkça belirtilen sağlayıcıiçin 0 küme ve Ad Hoc Distributed Queries Gelişmiş yapılandırma seçeneğini etkin.Bu seçenekleri kümeolmadığında, 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 istemci sorgulanan sunucuya bağlı olduğu sunucunun temsilci seçilmez.Kimlik doğrulama temsilcisi yapılandırılmalıdır.Daha fazla bilgi için, bkz. Temsilci atama için bağlı sunucuları yapılandırma.

ole DB sağlayıcı belirtilen veri kaynakiçindeki birden çok katalog ve şemalar destekliyorsa, katalog ve şema adları gereklidir.İçin değer catalog ve schema ole DB sağlayıcı bunları desteklemediğinde atlanabilir.Yalnızca şema adları, formun iki bölümü adı sağlayıcı destekliyorsa, schema**.object belirtilmelidir.Yalnızca katalog adları, formun bir üç bölümlü adı sağlayıcı destekliyorsa, catalog.schema.**object belirtilmelidir.Doğrudan sorgular için üç parça adları belirtilmelidir kullanmak SQL Server yerel istemci ole DB sağlayıcı.Daha fazla bilgi için, bkz. Transact-SQL Sözdizimi Kuralları (Transact-SQL).

openrowset bağımsız değişkenleri kabul etmez.

openrowset bulk seçeneğiyle kullanarak

Aşağıdaki Transact-SQL geliştirmeleri openrowset(bulk...) desteği işlev:

  • select ile kullanılan bir from yan tümce openrowset(bulk...) select tam işlevselliğe sahip bir tablo adı yerine çağırabilir.

    openrowset bulk seçeneği olarak da bilinen bir aralık değişken veya diğer adfrom yan tümcetümcesinde bir ilinti adı gerektirir.Sütun diğer adları belirtilebilir.biçim dosyası , bir sütundiğer ad listesi belirtilmişse, sütun adları olması gerekir. sütun diğer adları belirtme biçim dosyası sütun adları gibi geçersiz kılar:

    FROM OPENROWSET(BULK...) AS table_alias

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

  • BİR SELECT...OPENROWSET(BULK...) deyim tabloverileri almadan dosyasındaki verilere doğrudan sorgular.SELECT…openrowset(bulk...) deyimleri ayrıca bulk -sütun diğer adları sütun adlarını ve veri türlerini belirtmek için biçim dosyası kullanarak listeleyebilirsiniz.

  • kaynaktablo ekleme veya birleştirme bir deyim yığın veri dosyasından veri alır gibi openrowset(bulk...) kullanarak bir SQL Servertablo. Daha fazla bilgi için, bkz. Toplu veri bulk INSERT veya openrowset(bulk...) kullanarak alma.

  • openrowset bulk seçeneği INSERT deyimile kullanıldığında, bulk yan tümce tablo ipuçlarını destekler.Normal tablo ipuçlarını, tablock gibi ek olarak toplu yan tümce aşağıdaki özel tablo ipuçlarını kabul edebilir: (Yalnızca onay ve yabancı anahtar kısıtlamaları dikkate almaz) IGNORE_CONSTRAINTS, IGNORE_TRIGGERS, keepdefaults ve KEEPIDENTITY.Daha fazla bilgi için, bkz. Tablo İpuçları (Transact-SQL).

Nasıl kullanılacağı hakkında bilgi için Ekle...SEÇİN * ndan openrowset(bulk...) ekstrelerini görmek Toplu veri alma ve verme.Ne zaman toplu alma tarafından gerçekleştirilen satır ekleme işlemleri işlem günlüğüne kaydedilen hakkında daha fazla bilgi için bkz: Toplu alma Minimal günlüğü için Önkoşullar.

Not

openrowset kullandığınızda, bunu anlamak önemlidir nasıl SQL Server tutamaçları kimliğe bürünme.Güvenlik konuları hakkında daha fazla bilgi için bkz: Toplu veri bulk INSERT veya openrowset(bulk...) kullanarak alma.

Toplu sqlchar, sqlnchar veya SQLBINARY veri alma

openrowset(bulk...) belirtilmezse, sqlchar, sqlnchar veya SQLBINARY veri uzunluğu en fazla 8000 bayt geçmediği, varsayar.İçe aktarılan veriler içeren herhangi bir lob veri alan içinde ise, varchar(max), nvarchar(max), veya varbinary(max) 8000 bayt aşan nesneleri, veri alaniçin en fazla uzunluk tanımlayan xml biçim dosyası kullanmalı.En fazla uzunluk belirtmek için biçim dosyası düzenleyin ve max_length öznitelikbildirmek.Daha fazla bilgi için, bkz. xml biçimi dosyaları için bir şema sözdizimi.

Not

Otomatik olarak oluşturulan bir biçim dosyası uzunluğunu veya lob alaniçin en fazla uzunluk belirtilmiyor.Ancak, biçim dosyası düzenleyin ve uzunluğunu veya uzunluğu en fazla el ile belirtin.

Toplu verme veya sqlxml belge alma

toplu vermek veya alma sqlxml veri için aşağıdaki veri türlerinden biri, biçim dosyasıkullanın.

Veri türü

Efekti

sqlchar veya sqlvarychar

Verileri istemcikod sayfası veya örtülü harmanlama kod sayfası gönderilir).

sqlnchar veya sqlnvarchar

Veri Unicode olarak gönderilir.

SQLBINARY veya SQLVARYBIN

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

İzinler

openrowset izinleri ole DB sağlayıcıgeçirilen kullanıcı adının izinler tarafından belirlenir.bulk seçeneği kullanmak üzere toplu işlemleri yönetme izni gerektirir.

Örnekler

A.openrowset kullanarak seçin ve SQL Server yerel istemcisi ole DB sağlayıcısı

Aşağıdaki örnek SQL Server erişmek için yerel istemci ole DB sağlayıcı HumanResources.Department tablo AdventureWorks2008R2 uzak sunucudaki veritabanını Seattle1.(SQLNCLI kullanın ve SQL Server Yönlendir'ın en son sürüm SQL Server yerel istemci ole DB sağlayıcısı.) A SELECT deyim döndürülen satır küme tanımlamak için kullanılır.sağlayıcıdize içeren Server ve Trusted_Connection anahtar sözcükler. Bu anahtar sözcükler tarafından tanınan SQL Server yerel istemci ole DB sağlayıcı.

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

B.Jet için Microsoft ole DB sağlayıcı kullanarak

Aşağıdaki örnek erişir Customers tablo Microsoft erişim Northwind üzerinden veritabanı Microsoft Jet için ole DB sağlayıcısı

Not

Bu örnekte, Access'in yüklü olduğu varsayılmıştır.Bu örneği çalıştırmak için yüklemeniz gereken Northwind veritabanı.Nasıl yükleneceği hakkında bilgi için Northwind veritabanı 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 JOIN içinde openrowset ve başka bir tablo kullanma

Aşağıdaki örnek, tüm verileri seçer Customers tablo yerel örnek SQL Server Northwind veritabanı ve Orders tablo Access Northwind veritabanında saklanan aynı bilgisayar.

Not

Bu örnekte, Access'in yüklü olduğu varsayılmıştır.Bu örneği çalıştırmak için yüklemeniz gereken Northwind veritabanı.Nasıl yükleneceği hakkında bilgi için Northwind veritabanı 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 bulk INSERT dosya verilerini bir varbinary(max) sütunkullanma

Aşağıdaki örnek, tanıtım amaçlı küçük bir tablo oluşturur ve ekler adında bir dosyadan veri dosyası Text1.txt bulunan C: kök dizinine bir varbinary(max) sütun.

USE AdventureWorks2008R2;
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ır values.txt , aşağıdaki verileri içerir:

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

biçim dosyası, values.fmt, sütunlarda 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 alır sorgudur:

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

Diğer örnekler