OPENROWSET (Transact-SQL)

Bir OLE DB veri kaynağından uzak verilere erişmek için gereken tüm bağlantı bilgilerini içerir. Bu yöntem bağlantılı bir sunucudaki tablolara erişmek için bir seçenektir ve OLE DB kullanarak uzak verilere bir kereliğine, ad hoc olarak bağlanmak ve erişmek için bir yöntemdir. OLE DB veri kaynaklarına daha sık başvurmalar için bunun yerine bağlantılı sunucular kullanın. Daha fazla bilgi için, bkz. Bağlantılı sunucular (veritabanı altyapısı). OPENROWSET işlevine bir sorgunun FROM yan tümcesinden, tablo adı gibi başvurulabilir. OPENROWSET işlevine, ayrıca, OLE DB sağlayıcının yeteneklerine bağlı olmak koşuluyla bir INSERT, UPDATE veya DELETE deyiminin hedef tablosu olarak başvurulabilir. Sorgu birden fazla sonuç kümesi döndürebilirse de OPENROWSET bunların yalnızca ilkini döndürür.

OPENROWSET, ayrıca, yerleşik BULK sağlayıcı üzerinden bir dosyadaki verilerin okunup bir satır kümesi olarak döndürülmesini olanaklı kılan toplu işlemleri de destekler.

Konu bağlantısı simgesi Transact-SQL Sözdizim 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'
    Kayıt defterinde belirtildiği haliyle OLE DB sağlayıcının kolay anlaşılan adını (veya PROGID'sini) temsil eden bir karakter dizesidir. provider_name varsayılan bir değere sahip değildir.

  • 'datasource'
    Belirli bir OLE DB veri kaynağına karşılık gelen bir dize sabitidir. datasource, sağlayıcıya ilk değerini vermek için IDBProperties sağlayıcı arabirimine geçilecek DBPROP_INIT_DATASOURCE özelliğidir. Bu dize, tipik olarak veritabanı dosyasının adını, veritabanı sunucusunun adını veya sağlayıcının veritabanını veya veritabanlarını bulmak için anlayabileceği bir adı içerir.

  • 'user_id'
    Belirtilen OLE DB sağlayıcısına geçilen kullanıcı adı olan dize sabitidir. user_id bağlantının güvenlik bağlamını belirtir ve sağlayıcıya ilk değerini vermek için DBPROP_AUTH_USERID özelliği olarak geçirilir. user_id Microsoft Windows oturum açma adı olamaz.

  • 'password'
    Belirtilen OLE DB sağlayıcısına geçilecek kullanıcı parolası olan dize sabitidir. password, sağlayıcıya ilk değeri verilirken DBPROP_AUTH_PASSWORD özelliği olarak geçilir. password bir Microsoft Windows parolası olamaz.

  • 'provider_string'
    OLE DB sağlayıcısına ilk değerini vermek için DBPROP_INIT_PROVIDERSTRING özelliği olarak geçilen, sağlayıcıya özel bağlantı dizesidir. provider_string tipik olarak sağlayıcıya ilk değerini vermek için gereken tüm bağlantı bilgilerini içinde barındırır. SQL Server Native Client OLE DB sağlayıcısı tarafından tanınan anahtar sözcüklerin bir listesi için, bkz. Başlatma ve yetkilendirme özellikleri.

  • catalog
    Belirtilen nesnenin durduğu kataloğun veya veritabanının adıdır.

  • schema
    Belirtilen nesnenin şemasının veya nesne sahibinin adıdır.

  • object
    Çalışılacak nesneyi benzersiz olarak tanımlayan nesnenin adıdır.

  • 'query'
    Sağlayıcıya gönderilen ve sağlayıcı tarafından yürütülen bir dize sabitidir. Yerel SQL Server örneği bu sorguyu işlemez, ancak doğrudan bir sorgu olan sağlayıcının döndürdüğü sorgu sonuçlarını işler. Doğrudan sorgular, tablo verilerini tablo adları aracılığıyla değil yalnızca bir komut dili aracılığıyla kullandıran sağlayıcılarda kullanıldığında yararlıdır. Doğrudan sorgular, sorgu sağlayıcı OLE DB Command nesnesini ve zorunlu arabirimlerini desteklediği sürece uzak sunucuda desteklenir. Daha fazla bilgi için, bkz. SQL Server yerel istemci (ole db) başvurusu.

  • BULK
    Bir dosyadan veri okumak için OPENROWSET'in BULK satır kümesi sağlayıcısını kullanır. OPENROWSET, SQL Server'da verileri bir hedef tabloya yüklemeden bir veri dosyasından okuyabilir. Bu, OPENROWSET'i basit bir SELECT deyimi ile kullanmanıza izin verir.

    BULK seçeneğinin değişkenleri, veri okumanın nerede başlatılıp nerede bitirileceği, hataların nasıl işleneceği ve verilerin nasıl yorumlanacağı üzerinde önemli denetim sunar. Örneğin, okunacak veri dosyasının tek satırlık, tek sütunluk bir veri kümesi türü varbinary, varchar veya nvarchar olduğunu belirtebilirsiniz. Varsayılan davranış, aşağıdaki açıklamalarda anlatılmaktadır.

    BULK seçeneğinin nasıl kullanılacağı hakkında daha fazla bilgi için, bu konuda daha sonraki "Yorumlar" bölümüne bakın. BULK seçeneğinin gerektirdiği izinler hakkında daha fazla bilgi için, bu konuda daha sonraki "İzinler" bölümüne bakın.

    [!NOT]

    Tam kurtarma modeli ile içe veri aktarmak için kullanıldığında, OPENROWSET (BULK ...) günlük tutmayı iyileştirmez.

    Verileri toplu içe aktarmaya hazırlama hakkında daha fazla bilgi için, bkz. Veri toplu verme veya alma (SQL Server) için hazırlama.

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

  • FORMATFILE ='format_file_path'
    Bir biçim dosyasının tam yolunu belirtir. SQL Server iki tür biçim dosyasını destekler: XML ve XML olmayan.

    Sonuç kümesinde sütun türleri tanımlamak için bir biçim dosyası gereklidir. Buradaki tek kural dışı durum SINGLE_CLOB, SINGLE_BLOB ve SINGLE_NCLOB belirtildiğinde oluşur; bu durumda biçim dosyası gerekli değildir.

    Biçim dosyaları hakkında daha fazla bilgi için, bkz. (SQL Server) Veri Al toplu için bir biçim dosyası kullanma.

  • < toplu_seçenekler >
    BULK seçeneği için bir veya daha fazla değişken belirtir.

  • CODEPAGE = { 'ACP'| 'OEM'| 'RAW'| 'code_page' }
    Verilerin kod sayfasının veri dosyasında olduğunu belirtir. CODEPAGE yalnızca veriler 127'den büyük veya 32'den küçük karakter değerleri olan char, varchar ya da text sütunları içeriyorsa anlamlıdır.

    [!NOT]

    Bir biçim dosyasındaki her sütun için bir harmanlama adı belirtmenizi öneririz.

    CODEPAGE değeri

    Açıklama

    ACP

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

    OEM (varsayılan)

    char, varchar veyatext veri türündeki sütunları sistem OEM kod sayfasından SQL Server kod sayfasına dönüştürür.

    RAW

    Bir kod sayfasından başka bir kod sayfasına dönüştürme yapılmaz. En hızlı seçenek budur.

    code_page

    Veri dosyasındaki karakter verilerinin kodlanmasında kullanılan kaynak kod sayfasını gösterir; örneğin, 850.

    Önemli notÖnemli
    SQL Server kod sayfası 65001'i (UTF-8 kodlaması) desteklemez.
  • ERRORFILE ='file_name'
    Biçimlendirme hataları olan ve bir OLE DB satır kümesine dönüştürülemeyecek olan satırları toplamak için kullanılan dosyayı belirtir. Bu satırlar veri dosyasından bu hata dosyasına "olduğu gibi" kopyalanır.

    Hata dosyası komut yürütülmeye başlandığında oluşturulur. Dosya zaten varsa bir hata oluşturulur. Ayrıca, uzantısı .ERROR.txt olan bir denetim dosyası oluşturulur. Bu dosya, hata dosyasındaki her satıra başvurur ve hata tanıları sağlar. Hatalar düzeltildikten sonra veriler yüklenebilir.

  • FIRSTROW =first_row
    Yüklenecek ilk satırın numarasını belirtir. Varsayılan 1'dir. Bu, belirtilen veri dosyasındaki ilk satırı gösterir. Satır numaraları satır sonlandırıcılar sayılarak belirlenir. FIRSTROW 1'den başlar.

  • LASTROW =last_row
    Yüklenecek son satırın numarasını belirtir. Varsayılan 0'dır. Bu, belirtilen veri dosyasındaki son satırı gösterir.

  • MAXERRORS =maximum_errors
    OPENROWSET özel bir durum oluşturmadan önce oluşabilecek en yüksek sözdizim hatası sayısını veya biçim dosyasındaki tanıma göre uyumsuz satır sayısını belirtir. MAXERRORS değerine ulaşılıncaya kadar OPENROWSET bozuk her satırı yoksayar, yüklemez ve bozuk satırı hata olarak sayar.

    Varsayılan maximum_errors değeri 10'dur.

    [!NOT]

    MAX_ERRORS, CHECK kısıtlamalarına veya money ve bigint veri türlerine dönüştürmeye uygulanmaz.

  • ROWS_PER_BATCH =rows_per_batch
    Veri dosyasındaki yaklaşık veri satırı sayısını belirtir. Bu değerin gerçek satır sayısı ile aynı olması gerekir.

    OPENROWSET bir veri dosyasını her zaman tek bir toplu işle içe aktarır. Ancak rows_per_batch için > 0 olan bir değer belirtirseniz, sorgu işleyici, rows_per_batch değerini sorgu planındaki kaynakları ayırmada ipucu olarak kullanır.

    Varsayılan olarak ROWS_PER_BATCH bilinmez. ROWS_PER_BATCH = 0 belirtimi, ROWS_PER_BATCH seçeneğini çıkarmakla aynı görevi görür.

  • ORDER ( { column [ ASC | DESC ] } [ ,... n ] [ UNIQUE ] )
    Veri dosyasındaki verilerin nasıl sıralandığını belirten isteğe bağlı bir ipucu. Toplu işlem, varsayılan olarak veri dosyasının sıralanmamış olduğunu kabul eder. Sorgu iyileştirici, daha verimli bir sorgu planı üretmek için belirtilen sıradan yararlanabilirse performans iyileşebilir. Bir sıralama belirtmenin yararlı olabileceği durumlara örnekler arasında şunlar sayılabilir:

    • Satır kümesi verilerinin küme dizini anahtarına göre sıralandığı küme dizinli bir tabloya satır eklerken.

    • Satır kümesinin sıralama ve birleştirme sütunlarının eşleştiği bir tabloyla birleştirirken.

    • Satır kümesi verilerini sıralama sütunlarına göre toplarken.

    • Satır kümesini, sıralama ve birleştirme sütunlarının eşleştiği bir sorgunun FROM yan tümcesinde kaynak tablo olarak kullanırken.

    UNIQUE, veri dosyasında yinelenen giriş olmadığını belirtir.

    Veri dosyasındaki gerçek satırlar belirtilen sıraya göre sıralanmamışsa veya UNIQUE ipucu belirtilirse ve yinelenen anahtarlar varsa bir hata döndürülür.

    ORDER kullanıldığında sütun diğer adları gerekir. Sütun diğer adı listesi, BULK yan tümcesinin erişmekte olduğu türetilen tabloya başvurmalıdır. ORDER yan tümcesinde belirtilen sütun adları bu sütun diğer ad listesine başvurur. Büyük değer türlerinde (varchar(max), nvarchar(max), varbinary(max) ve xml) ve büyük nesne (LOB) türlerinde (text, ntext ve image) sütunlar belirtilemez.

  • SINGLE_BLOB
    data_file içeriğini tek bir satır, varbinary(max) türünde tek sütunlu satır kümesi olarak döndürür.

    Önemli notÖnemli

    Yalnızca SINGLE_BLOB Windows kodlama dönüştürmelerini desteklediğinden, XML verilerini, SINGLE_CLOB veya SINGLE_NCLOB yerine yalnızca SINGLE_BLOB seçeneğini belirterek içe aktarmanızı öneririz.

  • SINGLE_CLOB
    data_file verilerini ASCII olarak okuyarak, içeriği, geçerli veritabanının harmanlamasını kullanarak tek bir satır, varchar(max) türünde tek sütunlu bir satır kümesi olarak döndürür.

  • SINGLE_NCLOB
    data_file verilerini UNICODE olarak okuyarak, içeriği, geçerli veritabanının harmanlamasını kullanarak tek bir satır, nvarchar(max) türünde tek sütunlu bir satır kümesi olarak döndürür.

Açıklamalar

OPENROWSET, OLE DB veri kaynaklarından uzak verilere erişmek için yalnızca DisallowAdhocAccess kayıt defteri seçeneği, belirtilen sağlayıcı için açıkça 0 olarak ayarlandığında ve Ad Hoc Distributed Queries gelişmiş yapılandırma seçeneği etkinleştirildiğinde kullanılabilir. Bu seçenekler ayarlanmadığında, varsayılan davranış ad hoc erişime izin vermez.

Uzak OLE DB veri kaynaklarına erişirken, istemcinin sorgulanmakta olan sunucuya bağlandığı sunucudan güvenilen bağlantıların oturum açma kimliği otomatik olarak devredilemez. Kimlik doğrulama yetki devrinin yapılandırılması gerekir.

OLE DB sağlayıcısı, belirtilen veri kaynağında birden çok kataloğu ve şemayı destekliyorsa, katalog ve şema adları gereklidir. OLE DB sağlayıcısı bunları desteklemediğinde catalog ve schema değerleri çıkarılabilir. Sağlayıcı yalnızca şema adlarını destekliyorsa, schema**.object biçiminde iki parçalı bir ad belirtilmelidir. Sağlayıcı yalnızca katalog adlarını destekliyorsa, catalog.schema.**object biçiminde üç parçalı bir ad belirtilmelidir. SQL Server Native Client OLE DB sağlayıcısını kullanan doğrudan sorgular için üç parçalı adlar belirtilmelidir. Daha fazla bilgi için, bkz. Transact-SQL Sözdizim Kuralları (Transact-SQL).

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

FROM yan tümcesinde OPENDATASOURCE, OPENQUERY veya OPENROWSET deyimine yapılan tüm çağrılar, ayrı ayrı ve her iki çağrıya da aynı değişkenler sağlansa da güncelleştirmenin hedefi olarak bu işlevlere yapılan tüm çağrılardan bağımsız olarak değerlendirilir. Özellikle, bu çağrılardan birinin sonuçlarına uygulanan filtreleme veya birleştirme koşullarının diğeri üzerinde hiçbir etkisi yoktur.

OPENROWSET'i BULK seçeneği ile kullanma

Aşağıdaki Transact-SQL geliştirmeleri OPENROWSET(BULK...) işlevini desteklemektedir:

  • SELECT ile kullanılan bir FROM yan tümcesi, bir tablo adı yerine OPENROWSET(BULK...) deyimini, tam SELECT işlevselliği ile çağırabilir.

    BULK seçeneği ile OPENROWSET, FROM yan tümcesinde, aralık değişkeni veya diğer ad olarak da bilinen bir bağıntı adı gerektirir. Sütun diğer adları belirtilebilir. Bir sütun diğer adı listesi belirtilmezse, biçim dosyasında sütun adları olması gerekir. Sütun diğer adları belirtilirse, bunlar biçim dosyasındaki sütun adlarını geçersiz kılar; örneğin:

    FROM OPENROWSET(BULK...) AS table_alias

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

  • Bir SELECT...FROM OPENROWSET(BULK...) deyimi bir dosyadaki verileri doğrudan, verileri bir tablonun içine almadan sorgular. SELECT…FROM OPENROWSET(BULK...) deyimleri, ayrıca, toplu sütun diğer adlarını, bunları ve ayrıca veri türlerini belirtmek için bir biçim dosyası kullanarak da listeleyebilir.

  • OPENROWSET(BULK...) deyimini bir INSERT veya MERGE deyiminde bir kaynak tablo olarak kullanmak, bir veri dosyasındaki verileri bir SQL Server tablosuna topluca alır. Daha fazla bilgi için, bkz. Toplu veri bulk INSERT veya openrowset(bulk...) kullanarak alma (SQL Server) .

  • OPENROWSET BULK seçeneği bir INSERT deyimi ile kullanıldığında, BULK yan tümcesi tablo ipuçlarını destekler. BULK yan tümcesi, TABLOCK gibi normal tablo ipuçlarına ek olarak şu özelleşmiş tablo ipuçlarını kabul edebilir: IGNORE_CONSTRAINTS (yalnızca CHECK ve FOREIGN KEY kısıtlamalarını yoksayar), IGNORE_TRIGGERS, KEEPDEFAULTS ve KEEPIDENTITY. Daha fazla bilgi için, bkz. Tablo ipuçları (Transact-sql).

INSERT...SELECT * FROM OPENROWSET(BULK...) deyimlerini kullanma hakkında daha fazla bilgi için, bkz. Toplu alma ve verme veri (SQL Server). Toplu alma ile gerçekleştirilen satır ekleme işlemlerinin işlem günlüğüne ne zaman yazıldığı hakkında daha fazla bilgi için, bkz. Toplu alma Minimal günlüğü için Önkoşullar.

[!NOT]

OPENROWSET kullanırken SQL Server'ın kişiliğe bürünmeyi nasıl işlediğini anlamak önemlidir. Güvenlik değerlendirmeleri hakkında daha fazla bilgi için, bkz. Toplu veri bulk INSERT veya openrowset(bulk...) kullanarak alma (SQL Server).

SQLCHAR, SQLNCHAR veya SQLBINARY Verilerini Toplu Alma

OPENROWSET(BULK...), belirtilmezse, SQLCHAR, SQLNCHAR veya SQLBINARY verilerinin uzunluk üst sınırının 8000 baytı aşmadığını kabul eder. İçe alınmakta olan veriler 8000 baytı aşan varchar(max), nvarchar(max) veya varbinary(max) nesneleri içeren bir LOB veri alanındaysa, veri alanının uzunluk üst sınırını tanımlayan bir XML biçim dosyası kullanmalısınız. Uzunluk üst sınırını belirtmek için, biçim dosyasını düzenleyin ve MAX_LENGTH özniteliğini bildirin.

[!NOT]

Otomatik olarak üretilmiş bir biçim dosyası bir LOB alanının uzunluğunu veya uzunluk üst sınırını belirtmez. Ancak, bir biçim dosyasını düzenleyebilir ve uzunluğu veya uzunluk üst sınırını el ile belirtebilirsiniz.

SQLXML Belgelerini Toplu Alma veya Verme

SQLXML verilerini toplu almak veya vermek için, biçim dosyanızda aşağıdaki veri türlerinden birini kullanın.

Veri türü

Etkisi

SQLCHAR veya SQLVARYCHAR

İstemci kod sayfasında veya harmanlamanın dolaylı getirdiği kod sayfasında gönderilen veriler).

SQLNCHAR veya SQLNVARCHAR

Veriler Unicode olarak gönderilir.

SQLBINARY veya SQLVARYBIN

Veriler dönüştürülmeden gönderilir.

İzinler

OPENROWSET izinleri, OLE DB sağlayıcıya geçilmekte olan kullanıcı adının izinleri tarafından belirlenir. BULK seçeneğini kullanmak ADMINISTER BULK OPERATIONS izni gerektirir.

Örnekler

A.OPENROWSET'i SELECT ve SQL Server Native Client OLE DB Sağlayıcısı ile kullanma

Aşağıdaki örnek, Seattle1 uzak sunucusunda bulunan AdventureWorks2012 veritabanındaki HumanResources.Department tablosuna erişmek için SQL Server Native Client OLE DB sağlayıcısını kullanmaktadır. (SQLNCLI'yı kullanırsanız, SQL Server sizi en son SQL Server Native Client OLE DB Sağlayıcısı sürümüne yönlendirir.) Döndürülen satır kümesini tanımlamak için bir SELECT deyimi kullanılır. Sağlayıcı dizesi Server ve Trusted_Connection anahtar sözcüklerini içerir. Bu anahtar sözcükler SQL Server Native Client OLE DB sağlayıcısı tarafından tanınır.

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

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

B.Microsoft OLE DB Provider for Jet'i Kullanma

Aşağıdaki örnek, Microsoft Access Northwind veritabanındaki Customers tablosuna Microsoft OLE DB Provider for Jet üzerinden erişmektedir.

[!NOT]

Bu örnek, Access'in yüklü olduğunu varsaymaktadır. Bu örneği çalıştırmak için Northwind veritabanını yüklemelisiniz.

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

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

C.OPENROWSET'i ve başka bir tabloyu bir INNER JOIN'de kullanma

Aşağıdaki örnek, SQL Server Northwind veritabanının yerel örneğinden Customers tablosundaki ve aynı bilgisayarda depolanan Access Northwind veritabanının Orders tablosundaki tüm verileri seçmektedir.

[!NOT]

Bu örnek, Access'in yüklü olduğunu varsaymaktadır. Bu örneği çalıştırmak için Northwind veritabanını yüklemelisiniz.

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

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 bir varbinary(max) sütununa dosya verilerini toplu eklemek için kullanma

Aşağıdaki örnek gösterim amacıyla küçük bir tablo oluşturmakta ve C: kök dizininde duran Text1.txt adlı bir dosyadaki dosya verilerini bir varbinary(max) sütununa eklemektedir.

USE AdventureWorks2012;
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

USE AdventureWorks2012;
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ısını bir metin dosyasından satır almak üzere bir biçim dosyasıyla kullanma

Aşağıdaki örnek, aşağıdaki verileri içeren values.txt sekme sınırlandırmalı metin dosyasından satır almak için bir biçim dosyası kullanmaktadır:

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

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

values.fmt biçim dosyası values.txt dosyasındaki sütunları betimlemektedir:

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

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

Verileri alan sorgu şudur:

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

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

Ek Örnekler

INSERT...SELECT * FROM OPENROWSET(BULK...) kullanımını gösteren ek örnekler için, aşağıdaki konulara bakın:

Ayrıca bkz.

Başvuru

Sil (Transact-sql)

FROM (Transact-sql)

Insert (Transact-sql)

opendatasource (Transact-sql)

openquery (Transact-sql)

Satır kümesi işlevler (Transact-sql)

select (Transact-sql)

sp_addlinkedserver (Transact-sql)

sp_serveroption (Transact-sql)

Güncelleştirme (Transact-sql)

NEREDE (Transact-sql)

Kavramlar

Toplu alma ve verme veri (SQL Server)