PolyBase ile verileri bağlama, sorgulama ve dışarı aktarma

Şunlar için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümler Azure SQL VeritabanıAzure SQL Yönetilen ÖrneğiSQL database in Microsoft Fabric

Veri sanallaştırma , dış veriler üzerinde Transact-SQL (T-SQL) sorguları veritabanınıza yüklemeden çalıştırmanıza olanak tanır. Dış veri kaynağı, isteğe bağlı dosya biçimi ve dış tablo tanımlayıp dış tabloyu diğer tablolarda SELECT olduğu gibi sorgularsınız.

Bu kılavuz size yardımcı olur:

  • SQL platformunuzun ve sürüm desteğinizin hangi PolyBase özelliklerini anlayın.
  • OPENROWSET, harici tablolar ve BULK INSERT arasında seçim yaparak verileri sorgulayabilir veya içe aktarabilirsiniz.
  • Yaygın senaryolar için adım adım bağlantıları izleyin.
  • Üretim iş yükleri için performans, sorun giderme ve en iyi yöntemleri gözden geçirin.

Platform desteği

Yaygın kullanım örnekleri

Aşağıdaki tabloda olası kullanım senaryoları açıklanmaktadır.

Scenario Kullan
Geçici dosya keşfi OPENROWSET(BULK ...)
BI veya raporlama için yeniden kullanılabilir dosya sorgusu Dosyalar üzerinde oluşturulmuş dış tablolar
Veritabanları arası sorgulama (SQL Server, Oracle, Teradata, MongoDB, ODBC) Dış tabloları olan PolyBase bağlayıcıları
Sorgu sonuçlarını dosyalara aktarma CREATE EXTERNAL TABLE AS SELECT (CETAS)
Tablolara toplu veri yükleme BULK INSERTveya OPENROWSET(BULK ...)INSERT ... SELECT
  • Ad hoc dosya keşfi için, tekrar kullanılabilir bir tablo oluşturmadan dosyaları incelemek için kullanın OPENROWSET(BULK ...) .
  • BI veya raporlama senaryolarında tekrar kullanılabilir dosya sorgulamaları için, bir şemayı sürdürmek ve sonuçları sorgular arasında paylaşmak için dosyalar üzerinde harici tablolar kullanın.
  • Veritabanları arası sorgulama için, SQL Server, Oracle, Teradata, MongoDB veya ODBC kaynaklarına erişmek için harici tablolu PolyBase bağlayıcıları kullanın.
  • Sorgu sonuçlarını dosyalara dışa aktarmak için, veritabanı dışında Parquet veya CSV çıktısı yazmak için (CETAS) kullanabilirsiniz CREATE EXTERNAL TABLE AS SELECT .
  • Tablolara toplu içe aktarma için, dosyadaki verileri veritabanı tablolarına yüklemek üzere INSERT ... SELECT ile birlikte BULK INSERT veya OPENROWSET(BULK ...) kullanın.

Hangi özellikler nerede kullanılabilir?

Aşağıdaki tablo, SQL Server 2019'dan itibaren her SQL platformunda hangi temel PolyBase ve veri sanallaştırma özelliklerinin mevcut olduğunu göstermektedir. SQL Server 2016 ve SQL Server 2017'de Windows'ta özellik erişilebilirliği için PolyBase özellikleri ve sınırlamaları bölümüne bakınız. Ayrıntılı kılavuzları kullanmadan önce platformunuzda neler yapabileceğinizi belirlemek için bu tabloyu kullanın.

Özellik SQL Server 2019 SQL Server 2022 SQL Server 2025 Azure SQL Veritabanı Azure SQL Yönetilen Varlık Microsoft Fabric'da SQL veritabanı
Dış tablolar Evet Evet Evet Evet Evet Evet
OPENROWSET (TOPLU) Evet 1 Evet Evet Evet Evet Evet
CETAS (dışarı aktarma) Hayır Evet Evet Hayır Evet Hayır
CSV / sınırlandırılmış dosyalar Evet 2 Evet Evet Evet Evet Evet
Parquet dosyaları Hayır Evet Evet Evet Evet Evet
Delta Lake tabloları Hayır Evet Evet Hayır Hayır Hayır
Başka bir SQL Server'a bağlanma Evet Evet Evet Hayır Hayır Hayır
Azure SQL Veritabanı'na veya Azure SQL Yönetilen Örneği'ne bağlanma Evet 3 Evet 3 Evet 3 Hayır Hayır Hayır
Oracle'a bağlanma / Teradata / MongoDB Evet Evet Evet Hayır Hayır Hayır
Azure Blob Depolama'ya bağlanma Evet Evet Evet Evet Evet Hayır
ADLS 2. Nesil'e bağlanma Evet 5 Evet Evet Evet Evet Hayır
S3 uyumlu depolamaya bağlanma Hayır Evet Evet Hayır Hayır Hayır
OneLake'e Bağlan (Fabric) Hayır Hayır Hayır Hayır Hayır Evet
İtme hesaplaması Evet Evet Evet Hayır Hayır Hayır
Yönetilen kimlik doğrulaması Hayır Hayır Evet 4 Evet Evet Hayır

1 SQL Server 2019 (15.x), yerel ve ağ dosya yollarını destekler OPENROWSET(BULK...) . SQL Server 2022 (16.x) ve sonraki sürümlerinde, OPENROWSET(BULK...) , FORMAT = 'PARQUET've FORMAT = DELTAile FORMAT = 'CSV'bulut depolamadan okumayı da destekler.

2 CSV desteği, SQL Server 2019 (15.x) için Hadoop gerektiriyordu. SQL Server 2022 (16.x) ve sonraki sürümlerinde CSV, Hadoop olmadan yerel olarak desteklenir.

3 SQL Server bağlayıcısını (sqlserver://) kullanır. Veritabanı kapsamındaki kimlik bilgisi SQL uç noktasını hedefler. Başka bir SQL Server örneğine bağlanırken kullanılan adımları kullanın.

4 Yönetilen Kimlik kimlik doğrulaması, Azure Blob Depolama (ABS) ve ADLS 2. Nesil'e bağlanmak için desteklenir. Şirket içi SQL Server için, Azure Arc özellikli SQL Server veya Azure VM'deki SQL Server gereklidir. Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği üzerinde yerel olarak kullanılabilir.

5 SQL Server 2019 CU11 ve sonraki sürümler Azure Data Lake Storage 2. Nesil'yi or abfsabfss prefiksiyle destekler. SQL Server 2022 ve sonraki sürümlerde bu adls önek kullanın.

  • SQL Server 2019, SQL Server 2022, SQL Server 2025, Azure SQL Veritabanı, Azure SQL Yönetilen Örneği ve SQL database in Microsoft Fabric'te harici tablolar desteklenmektedir.
  • OPENROWSET (BULK)SQL Server 2019, SQL Server 2022, SQL Server 2025, Azure SQL Veritabanı, Azure SQL Yönetilen Örneği ve Microsoft Fabric'te SQL database gibi platformlarda desteklenmektedir. SQL Server 2019 yerel ve ağ dosya yollarını desteklerken, SQL Server 2022 ve sonraki sürümler FORMAT = DELTA, FORMAT = 'CSV' ve FORMAT = 'PARQUET' ile bulut depolamadan okumayı da destekler.
  • CETAS dışa aktarma işlemi SQL Server 2019, Azure SQL Veritabanı veya Microsoft Fabric'teki SQL veritabanı programlarında desteklenmemektedir. CETAS dışa aktarma işlemi SQL Server 2022, SQL Server 2025 ve Azure SQL Yönetilen Örneği dosyalarında desteklenmektedir.
  • CSV ve delimited dosyalar SQL Server 2019, SQL Server 2022, SQL Server 2025, Azure SQL Veritabanı, Azure SQL Yönetilen Örneği ve SQL database in Microsoft Fabric'te desteklenmektedir. SQL Server 2019, CSV desteği için Hadoop gerektirirken, SQL Server 2022 ve sonraki sürümler Hadoop olmadan CSV'yi yerel olarak destekler.
  • SQL Server 2019'da Parquet dosyaları desteklenmiyor. Parquet dosyaları; SQL Server 2022, SQL Server 2025, Azure SQL Veritabanı, Azure SQL Yönetilen Örneği ve Microsoft Fabric içindeki SQL veritabanında desteklenmektedir.
  • Delta Lake tabloları SQL Server 2019, Azure SQL Veritabanı, Azure SQL Yönetilen Örneği veya Microsoft Fabric'teki SQL database programlarında desteklenmemektedir. Delta Lake tabloları SQL Server 2022 ve SQL Server 2025'te desteklenmektedir.
  • Başka bir SQL Server örneğine bağlanmak SQL Server 2019, SQL Server 2022 ve SQL Server 2025'te desteklenmektedir. Azure SQL Veritabanı, Azure SQL Yönetilen Örneği veya Microsoft Fabric'teki SQL veritabanı ile başka bir SQL Server örneğine bağlanmak desteklenmiyor.
  • Azure SQL Veritabanı veya Azure SQL Yönetilen Örneği'a bağlanmak, SQL Server 2019, SQL Server 2022 ve SQL Server 2025'ten SQL Server bağlantısını kullanarak desteklenmektedir. Veritabanı kapsamlı kimlik bilgisi, Azure SQL Veritabanı veya Azure SQL Yönetilen Örneği uç noktasını hedefler ve yapılandırma adımları, başka bir SQL Server örneğine bağlanma adımlarıyla aynıdır. Bu bağlantılar Azure SQL Veritabanı, Azure SQL Yönetilen Örneği veya Microsoft Fabric'teki SQL veritabanı tarafından desteklenmemektedir.
  • Oracle, Teradata veya MongoDB'ye bağlanma SQL Server 2019, SQL Server 2022 ve SQL Server 2025 ile desteklenmektedir. Bu bağlantılar Azure SQL Veritabanı, Azure SQL Yönetilen Örneği veya Microsoft Fabric'teki SQL veritabanı tarafından desteklenmemektedir.
  • Azure Blob Depolama'a bağlanmak SQL Server 2019, SQL Server 2022, SQL Server 2025, Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği programlarından desteklenmektedir. Azure Blob Depolama'a bağlanmak Microsoft Fabric'teki SQL veritabanından desteklenmiyor.
  • ADLS Gen2'ye bağlanmak, CU11'den önceki SQL Server 2019 sürümlerinde veya Microsoft Fabric'teki SQL veritabanından desteklenmemektedir. ADLS Gen2'ye bağlanma SQL Server 2019 CU11 ile başlayarak desteklenmektedir ve SQL Server 2022, SQL Server 2025, Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği ile desteklenmektedir.
  • S3 uyumlu depolamaya bağlanmak SQL Server 2019, Azure SQL Veritabanı, Azure SQL Yönetilen Örneği veya Microsoft Fabric'teki SQL database tarafından desteklenmemektedir. S3 uyumlu depolamaya bağlanma SQL Server 2022 ve SQL Server 2025 tarafından desteklenmektedir.
  • OneLake'e bağlanmak, Microsoft Fabric'teki SQL veritabanı üzerinden desteklenmektedir. OneLake'e bağlanmak SQL Server 2019, SQL Server 2022, SQL Server 2025, Azure SQL Veritabanı veya Azure SQL Yönetilen Örneği programlarından desteklenmiyor.
  • Pushdown hesaplaması SQL Server 2019, SQL Server 2022 ve SQL Server 2025'te desteklenmektedir. Azure SQL Veritabanı, Azure SQL Yönetilen Örneği veya Microsoft Fabric'teki SQL veritabanında pushdown hesaplama desteklenmiyor.
  • Yönetilen Kimlik doğrulaması SQL Server 2019 veya SQL Server 2022'de desteklenmemektedir. Managed Identity authentication, Azure Blob Depolama ve ADLS Gen2 bağlantıları için SQL Server 2025'te desteklenir ve Azure Arc özellikli SQL Server veya Azure sanal makinede SQL Server gerektirir. Yönetilen Kimlik Doğrulama Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği'da da destekleniyor, ancak Microsoft Fabric'teki SQL veritabanında desteklenmiyor.

Uyarı

SQL Server 2025'te (17.x) başlayarak Azure Blob Depolama, ADLS 2. Nesil veya S3 uyumlu depolamada veri dosyalarını (CSV, Parquet ve Delta) sorgulamak yerel bir altyapı özelliğidir ve artık PolyBase hizmetlerinin yüklenmesini veya çalıştırılmasını gerektirmez. RDBMS bağlayıcıları (SQL Server, Oracle, Teradata, MongoDB, ODBC) hala PolyBase hizmetlerinin yüklenmesini ve çalıştırılmasını gerektirir. SQL Server 2025 (17.x), daha önce yalnızca Windows'da kullanılabilen bu bağlayıcılar için Linux desteği de ekler.

Dış verileri sorgulama

Belirli bir senaryoyu seçmeden önce dış verileri sorgulamanın üç yolunu anlayın:

Yaklaşım Sözdizimi Şu durumlarda kullanın: Kimlik Doğrulaması PolyBase kurulumu gerekli
OLE DB geçici sorguları OPENROWSET(provider, connection, query) Kalıcı nesneleri olmayan hızlı bir tek seferlik sorgu istiyorsunuz veya Microsoft Entra Id kimlik doğrulamasına ihtiyacınız var SQL kimlik doğrulaması, Windows kimlik doğrulaması, Microsoft Entra Id (MSOLEDBSQL) Hayır
Dosyalar üzerinde geçici sorgular OPENROWSET(BULK ...) Tablo oluşturmadan önce dosya verilerini hızla incelemek veya şemaları test etmek istiyorsunuz SAS belirteci, erişim anahtarı, Yönetilen Kimlik, Microsoft Entra Id SQL Server 2022: Evet 1

SQL Server 2025 ve sonraki sürümler: Hayır

Azure SQL Veritabanı, Azure SQL Yönetilen Örneği ve Fabric’te SQL veritabanı: Yerleşik
Kalıcı veri bağlayıcıları CREATE EXTERNAL TABLE, sqlserver://, oracle://, teradata:// vb. Üretim için tekrarlayan erişim, yönetim, istatistikler ve pushdown işlemi gerekir. Yalnızca SQL kimlik doğrulaması Evet

1 SQL Server 2022 (16.x)'de bulut dosya erişimi için PolyBase özelliğini yüklemeniz gerekir, ancak Azure Blob Depolama, ADLS Gen2 ve S3 uyumlu depolama konnektörleri PolyBase hizmetlerine bağlı değildir. SQL Server 2025 (17.x) ve sonraki sürümler, PolyBase hizmetleri yüklemeden veya çalıştırmadan CSV, Parquet ve Delta için yerel destek sunar.

  • OLE DB ad hoc sorguları, OPENROWSET(provider, connection, query) kalıcı nesneler oluşturmadan uzak veri kaynağına hızlı, bir kez erişim sağlar. SQL authentication, Windows authentication veya MSOLEDBSQL ile Microsoft Entra ID kullanabilirler. Bu senaryo PolyBase kurulumu gerektirmez.
  • Dosyalar OPENROWSET(BULK ...) üzerindeki ad hoc sorgular, dosya verilerini hızlıca keşfetmek veya bir tablo oluşturmadan önce bir şemayı test etmek için kullanılır. SAS token'ları, erişim anahtarları, Yönetilen Kimlik veya Microsoft Entra ID'yi kullanabilirler. SQL Server 2022, bulut dosyaları için PolyBase özellik kurulumunu gerektirir, ancak PolyBase hizmetlerini gerektirmez. SQL Server 2025 ve sonraki sürümler bulut dosyaları için PolyBase gerektirmez. File ad hoc sorgular Azure SQL Veritabanı, Azure SQL Yönetilen Örneği ve SQL database in Fabric'e entegre edilmiştir.
  • Kalıcı veri bağlayıcıları, üretim iş yüklerinde yinelenen erişim, yönetişim, istatistikler ve pushdown hesaplamaları için CREATE EXTERNAL TABLE ile birlikte sqlserver://, oracle://, teradata:// ve benzeri konumları kullanır. SQL doğrulama ve PolyBase hizmetleri gerektiriyorlar.

Karar kılavuzu

Scenario Tavsiye
Uzaktan SQL için Microsoft Entra ID doğrulamasına ihtiyacınız var ya da PolyBase hizmetlerinden kaçınmak istersiniz. Kullanın OPENROWSET(MSOLEDBSQL, ...) (ad hoc, kalıcı nesne yok).
Kalıcı tablolara, istatistiklere veya hesaplamayı uzak veritabanlarına aktarmaya ihtiyacınız var. PolyBase bağlayıcıları (CREATE EXTERNAL TABLE, sqlserver://, oracle://, teradata://, mongodb://) ile odbc:// kullanın. OPENROWSET Konektörleri desteklemiyor.
Yeni bir dosyayı araştırıyor ya da bir şemayı test ediyorsun. Kullanın OPENROWSET(BULK ...) (hızlı yineleme, kalıcı nesne yok).
Dosya verilerini dönüşümler uygulayarak bir tabloya aktarıyorsunuz. INSERT ... SELECT kullanın OPENROWSET(BULK ...)'dan.
Birçok kullanıcı veya uygulama için yönetişim veya paylaşılan erişim gerekiyor. İzinlerin ve meta verilerin merkezileştirilmesi için CREATE EXTERNAL TABLE kullanın.
Fabric'te SQL veritabanında çalışıyorsun. OPENROWSET(BULK ...) Yeniden kullanılabilir erişim için geçici OneLake sorguları veya harici tablolar için kullanın; harici depolama için OneLake kısayollarını kullanın.
  • Uzaktan SQL için Microsoft Entra ID doğrulamasına ihtiyacınız varsa veya PolyBase hizmetlerinden kaçınmak istiyorsanız, kalıcı nesneler olmadan ad hoc uzak sorgular için kullanınOPENROWSET(MSOLEDBSQL, ...).
  • Eğer kalıcı tablolara, istatistiklere veya uzak veritabanlarına pushdown hesaplamaya ihtiyacınız varsa, CREATE EXTERNAL TABLE , mongodb://oracle://teradata://ve odbc://gibi PolyBase bağlayıcılarını sqlserver://kullanın. OPENROWSET Bu konnektörleri desteklemiyor.
  • Yeni bir dosyayı inceliyorsanız veya bir şemayı test ediyorsanız, hızlı yineleme yapmak ve kalıcı nesneler oluşturmamak için OPENROWSET(BULK ...) kullanın.
  • Dosya verilerini dönüşümler içeren bir tabloya aktarıyorsanız, OPENROWSET(BULK ...) konumundaki INSERT ... SELECT öğesini kullanın.
  • Birçok kullanıcı veya uygulama için yönetişim veya paylaşılan erişim gerekiyorsa, izinler ve meta veriler merkezi olsun diye kullanın CREATE EXTERNAL TABLE .
  • Fabric’teki SQL veritabanında çalışıyorsanız, ad hoc OneLake sorguları için OPENROWSET(BULK ...) kullanın, yeniden kullanılabilir erişim için harici tabloları kullanın ve dış depolama için de OneLake kısayollarını kullanın.

Senaryonuzu seçin

Üç yaklaşımı anladığınıza göre, özel kullanım örneğinizi uygulamak için aşağıdaki kılavuzlardan birini kullanın.

Sorgu dosyaları (Parquet, CSV veya Delta)

Verileriniz Azure Blob Depolama, ADLS 2. Nesil, S3 uyumlu depolama veya OneLake'deki Parquet, CSV veya Delta dosyalarındaysa şu kılavuzlardan birini izleyin:

Scenario Önerilen kılavuz Platformlar
Parquet veya CSV dosyasında hızlı geçici sorgu OPENROWSETkullanın. Dış tablo gerekmez SQL Server 2022 (16.x) ve sonraki sürümleri, Azure SQL Veritabanı, Azure SQL Yönetilen Örneği, Fabric'te SQL Veritabanı
Kalıcı şema ile Parquet dosyalarında yinelenen sorgular Parquet üzerinden dış tablo oluşturma SQL Server 2022 (16.x) ve sonraki sürümleri, Azure SQL Veritabanı, Azure SQL Yönetilen Örneği, Fabric'te SQL Veritabanı
Dış tabloyla CSV dosyalarını sorgulama Sınırlandırılmış metin için dosya biçiminde dış tablo oluşturma SQL Server 2019 (15.x) ve sonraki sürümleri, Azure SQL Veritabanı, Azure SQL Yönetilen Örneği, Dokuda SQL veritabanı
Delta Lake tablolarını sorgulama FILE_FORMAT = DeltaLakeFileFormat ile dış tablo oluşturun SQL Server 2022 (16.x) ve sonraki sürümleri
Sorgu sonuçlarını Parquet veya CSV dosyalarına (CETAS) dışarı aktarma CREATE EXTERNAL TABLE AS SELECT komutunu kullanma SQL Server 2022 (16.x) ve sonraki sürümleri, Azure SQL Yönetilen Örneği
  • Parquet veya CSV dosyasında hızlı bir ad hoc sorgu için OPENROWSET kullanın. Bu yöntem harici bir tablo gerektirmez. SQL Server 2022 (16.x) ve sonraki sürümler, Azure SQL Veritabanı, Azure SQL Yönetilen Örneği ve SQL database in Fabric bu modeli destekler.
  • Kalıcı şema olan Parquet dosyalarında tekrarlayan sorgular için, Parquet üzerinden harici bir tablo kullanın. SQL Server 2022 (16.x) ve sonraki sürümler, Azure SQL Veritabanı, Azure SQL Yönetilen Örneği ve SQL database in Fabric bu modeli destekler.
  • CSV dosyaları üzerine yapılan bir sorgu için, sınırlandırılmış metin için dosya formatı olan harici bir tablo kullanın. SQL Server 2019 (15.x) ve sonraki sürümler, Azure SQL Veritabanı, Azure SQL Yönetilen Örneği ve SQL database in Fabric bu modeli destekler.
  • Delta Lake tablolarını sorgulamak için, FILE_FORMAT = DeltaLakeFileFormat ile harici bir tablo kullanın. SQL Server 2022 (16.x) ve sonraki sürümler bu deseni destekler.
  • Sorgu sonuçlarını Parquet veya CSV dosyalarına dışa aktarmak için CREATE EXTERNAL TABLE AS SELECT. SQL Server 2022 (16.x) ve sonraki sürümler ile Azure SQL Yönetilen Örneği bu deseni destekler.

Aşağıdaki adım adım öğreticilerden birini de izleyebilirsiniz:

Kılavuz Açıklama
SQL Server 2022'de PolyBase'i kullanmaya başlama Parquet ve CSV, dış tablolar ve klasör gezintisi ile OPENROWSET örtülür.
PolyBase ile S3 uyumlu nesne depolama alanında parquet dosyasını sanallaştırma SQL Server 2022 (16.x) ve sonraki sürümleri için öğretici.
POLYBase ile CSV dosyasını sanallaştırma SQL Server 2022 (16.x) ve sonraki sürümleri için öğretici.
PolyBase ile delta tablosunu sanallaştırma SQL Server 2022 (16.x) ve sonraki sürümleri için öğretici.
Azure SQL Veritabanı ile veri sanallaştırma (Önizleme) Parquet ve CSV için Azure SQL Veritabanı kılavuzu.
Azure SQL Yönetilen Örneği ile veri sanallaştırma Parquet, CSV ve CETAS için Azure SQL Yönetilen Örneği kılavuzu.
SQL veritabanında veri sanalizasyonu Fabric'te OneLake dosyaları için Fabric'te SQL veritabanı kılavuzu.

Başka bir SQL Server örneğine, Azure SQL Veritabanı'na veya SQL Yönetilen Örneği'ne bağlanma

SQL Server 2019 (15.x) ve sonraki sürümlerinde PolyBase, bağlı sunucuları kullanmadan başka bir SQL Server örneğindeki, Azure SQL Veritabanı'ndaki veya Azure SQL Yönetilen Örneği'ndeki tabloları sorgulayabilir.

Önemli

sqlserver:// Bağlayıcı, Microsoft Fabric'teki SQL veritabanında desteklenmez. PolyBase RDBMS bağlayıcıları CREATE DATABASE SCOPED CREDENTIAL üzerinden SQL kimlik doğrulaması kullanır ve Microsoft Entra Kimliği, Yönetilen Kimlik veya hizmet sorumlusu kimlik doğrulamasını desteklemez. Fabric'teki SQL veritabanı Microsoft Entra kimlik doğrulaması gerektirdiğinden PolyBase kullanarak bu veritabanına bağlanamazsınız.

Step Yapılması gerekenler
1. PolyBase'i yükleme Windows'a PolyBase yükleme veya Linux'ta PolyBase yükleme
2. Kimlik bilgisi oluşturma CREATE DATABASE SCOPED CREDENTIAL hedef oturum açma bilgileriyle
3. Dış veri kaynağı oluşturma CREATE EXTERNAL DATA SOURCE ... WITH (LOCATION = 'sqlserver://<server>')
4. Dış tablo oluşturma CREATE EXTERNAL TABLE ... WITH (LOCATION = '<db>.<schema>.<table>')
5. Sorgu SELECT * FROM <external_table>
    1. Dış SQL verilerine erişimi yapılandırmadan önce, Windows'ta PolyBase'i Yükleme veya Linux'ta PolyBase'i Yükleme konularını kullanarak PolyBase'i Windows veya Linux'a yükleyin.
    1. Veritabanı altyapısının uzak sunucuda kimlik doğrulaması gerçekleştirebilmesi için, CREATE DATABASE SCOPED CREDENTIAL kullanarak hedef oturum açma hesabıyla veritabanı kapsamında bir kimlik bilgisi oluşturun.
    1. Uzak SQL Server için harici bir veri kaynağı oluşturun.CREATE EXTERNAL DATA SOURCE ... WITH (LOCATION = 'sqlserver://<server>')
    1. Uzak tabloyu temsil etmek için CREATE EXTERNAL TABLE ... WITH (LOCATION = '<db>.<schema>.<table>') kullanarak harici bir tablo oluşturun.
    1. SELECT * FROM <external_table> kullanarak harici tabloyu sorgulayın.

Tavsiye

SQL Server bağlayıcısı (sqlserver://), Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği için de çalışır. Aynı adımları kullanın ve LOCATION Azure SQL Veritabanı veya Azure SQL Yönetilen Örneği uç noktasına ayarlayın (örneğin, sqlserver://myserver.database.windows.net).

Ayrıntılı bir kılavuz için bkz. SQL Server'da dış verilere erişmek için PolyBase'i yapılandırma.

Oracle, Teradata veya MongoDB'ye bağlanma

SQL Server 2019 (15.x) ve sonraki sürümleri PolyBase ODBC bağlayıcıları aracılığıyla Oracle, Teradata, MongoDB ve Cosmos DB'yi sorgulayabilir.

Veri kaynağı Guide Gereksinimler
Oracle Oracle'da dış verilere erişmek için PolyBase'i yapılandırma SQL Server 2019 (15.x) ve sonraki sürümleri, Oracle istemci sürücüleri
Teradata PolyBase'i Teradata'daki dış verilere erişecek şekilde yapılandırma SQL Server 2019 (15.x) ve sonraki sürümleri, Teradata ODBC sürücüsü
MongoDB / Cosmos DB PolyBase'i MongoDB'deki dış verilere erişecek şekilde yapılandırma SQL Server 2019 (15.x) ve sonraki sürümleri, MongoDB ODBC sürücüsü
Herhangi bir ODBC kaynağı POLYBase'i ODBC genel türleriyle dış verilere erişecek şekilde yapılandırma SQL Server 2019 (15.x) ve sonraki sürümleri (Windows)

(SQL Server 2025 (17.x) ile başlayan Linux)

Azure Blob Depolama'ya veya ADLS 2. Nesil'e bağlanma

SQL platformu Kimlik doğrulama seçenekleri Guide
SQL Server 2022 (16.x) ve sonraki sürümleri SAS belirteci, erişim anahtarı, Yönetilen Kimlik (SQL Server 2025 (17.x) ile başlayarak) PolyBase'i Azure Blob Depolama'daki dış verilere erişecek şekilde yapılandırma
SQL Server 2019 (15.x) Erişim anahtarı (Hadoop bağlayıcısı aracılığıyla) PolyBase'i Azure Blob Depolama'daki dış verilere erişecek şekilde yapılandırma
Azure SQL Veritabanı SAS belirteci, Yönetilen Kimlik, Microsoft Entra geçişi Azure SQL Veritabanı ile veri sanallaştırma (Önizleme)
Azure SQL Yönetilen Varlık SAS belirteci, Yönetilen Kimlik Azure SQL Yönetilen Örneği ile veri sanallaştırma

SQL Server 2022'de (16.x), URI ön ekleri değişti. SQL Server 2019 (15.x) veya önceki sürümlerden geçiş yaparken:

  • Azure Blob Depolama: wasb[s]://'i abs:// ile değiştir
  • ADLS 2. Nesil: Değiştir abfs[s]://adls://

Daha fazla bilgi için bkz. PolyBase'i Azure Blob Depolama'daki dış verilere erişecek şekilde yapılandırma.

S3 uyumlu nesne depolamaya bağlanma

SQL Server 2022 (16.x) ve sonraki sürümleri Amazon S3, MinIO ve Ceph gibi S3 uyumlu depolamayı destekler.

Daha fazla bilgi için bkz. PolyBase'i S3 uyumlu nesne depolama alanında dış verilere erişecek şekilde yapılandırma.

(CETAS) ile CREATE EXTERNAL TABLE AS SELECT verileri dışarı aktarma

CETAS sorgu sonuçlarını Azure Blob Depolama, ADLS 2. Nesil veya S3 uyumlu depolama alanındaki dış dosyalara (Parquet veya CSV) aktarır.

SQL platformu Destekleniyor Dışa Aktarım Biçimleri Notlar
SQL Server 2022 (16.x) ve sonraki sürümler. CETAS ile ADLS Gen2'ye aktarılmak için SQL Server 2022 CU5 veya daha sonraki sürüm gereklidir. Evet Parket, CSV Sunucu yapılandırması gerekir: PolyBase dışa aktarmasına izin ver.
Azure SQL Yönetilen Varlık Evet Parket, CSV Varsayılan olarak devre dışı
Azure SQL Veritabanı Hayır Hiçbiri Mevcut değil
Fabric'de SQL veritabanı Hayır Hiçbiri Mevcut değil
  • SQL Server 2022 ve sonraki sürümler CETAS'ı destekler ve Parquet ile CSV dosyalarını dışa aktarır. Sunucu yapılandırması: PolyBase dışa aktarmaya izin ver ayarı gereklidir. CETAS dışa aktarma ADLS Gen2'ye SQL Server 2022 sürümlerinde CU5'ten önce mevcut değildir.
  • Azure SQL Yönetilen Örneği CETAS'ı destekler ve Parquet ile CSV dosyalarını dışa aktarır. Varsayılan olarak devre dışı ifadesi, varsayılan durumunu açıklar.
  • Azure SQL Veritabanı CETAS'ı desteklemiyor.
  • Fabric'teki SQL veritabanı CETAS'ı desteklemiyor.

Transact-SQL başvurusu için bkz. CREATE EXTERNAL TABLE AS SELECT (CETAS).

Hızlı başlangıç örnekleri

Örnek 1: Parquet dosyasında geçici sorgu (OPENROWSET)

Dış tablo gerekmez. SQL Server 2022 (16.x) ve sonraki sürümleri, Azure SQL Veritabanı, Azure SQL Yönetilen Örneği ve Fabric'teki SQL veritabanı üzerinde çalışır.

SELECT TOP 10 *
FROM OPENROWSET (
    BULK 'abs://mycontainer@mystorageaccount.blob.core.windows.net/data/sales/*.parquet',
    FORMAT = 'PARQUET'
) AS [result];

Örnek 2: Azure Blob Saklama'daki CSV üzerinde dış tablo

Bu örnek, harici tabloları CSV dosyaları üzerinden destekleyen tüm SQL platformlarında geçerlidir.

  • 1. Adım: Veritabanı ana anahtarı (DMK) oluşturma. SAS jetonunun gizli anahtarını depoladığı için bu yetkilendirme adımı gereklidir. Ancak, Yönetilen Kimlik veya Microsoft Entra kimlik doğrulaması kullanıyorsanız bu adımı atlayabilirsiniz.

    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
    
  • 2. Adım: SAS belirteci ile kimlik bilgisi oluşturma. Baştaki ?öğesini atla.

    CREATE DATABASE SCOPED CREDENTIAL MyStorageCred
    WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
         SECRET = '<your_SAS_token>'; -- omit the leading '?'
    
  • 3. Adım: Dış veri kaynağı oluşturma.

    CREATE EXTERNAL DATA SOURCE MyAzureStorage
    WITH (
        LOCATION = 'abs://mycontainer@mystorageaccount.blob.core.windows.net',
        CREDENTIAL = MyStorageCred
    );
    
  • 4. Adım: CSV için bir dosya biçimi oluşturun.

    CREATE EXTERNAL FILE FORMAT CsvFormat
    WITH (
        FORMAT_TYPE = DELIMITEDTEXT,
        FORMAT_OPTIONS (
            FIELD_TERMINATOR = ',',
            STRING_DELIMITER = '"',
            FIRST_ROW = 2
        )
    );
    
  • 5. Adım: Dış tabloyu oluşturun.

    CREATE EXTERNAL TABLE dbo.SalesExternal
    (
        OrderId INT,
        OrderDate DATE,
        Amount DECIMAL (18, 2),
        Customer NVARCHAR (100)
    )
    WITH (
        DATA_SOURCE = MyAzureStorage,
        LOCATION = '/data/sales/',
        FILE_FORMAT = CsvFormat
    );
    
  • 6. Adım: Dış tabloyu sorgulama.

    SELECT *
    FROM dbo.SalesExternal
    WHERE OrderDate >= '2025-01-01';
    

Örnek 3: Başka bir SQL Server'da tablo sorgulama

Bu örnek SQL Server 2019 (15.x) ve sonraki sürümlerde çalışır.

  • 1. Adım: Veritabanı ana anahtarı oluşturma (kimlik bilgisi parola depoladığı için gereklidir).

    CREATE MASTER KEY ENCRYPTION
    BY PASSWORD = '<password>';
    
  • 2. Adım: Uzak SQL Server örneği için bir kimlik bilgisi oluşturun.

    CREATE DATABASE SCOPED CREDENTIAL RemoteSqlCred
    WITH IDENTITY = 'remote_user',
         SECRET = '<password>';
    
  • 3. Adım: Dış veri kaynağını oluşturma.

    CREATE EXTERNAL DATA SOURCE RemoteSqlServer
    WITH (
        LOCATION = 'sqlserver://remote-server.contoso.com',
        PUSHDOWN = ON,
        CREDENTIAL = RemoteSqlCred
    );
    
  • 4. Adım: Dış tabloyu oluşturma (içinde LOCATIONüç bölümlü ad).

    CREATE EXTERNAL TABLE dbo.RemoteCustomers
    (
        CustomerId INT,
        CustomerName NVARCHAR (200)
            COLLATE SQL_Latin1_General_CP1_CI_AS
    )
    WITH (
        DATA_SOURCE = RemoteSqlServer,
        LOCATION = 'SalesDB.dbo.Customers'
    );
    
  • 5. Adım: Sunucular arasında sorgulama.

    SELECT c.CustomerName,
           s.Amount
    FROM dbo.RemoteCustomers AS c
         INNER JOIN dbo.LocalSales AS s
             ON c.CustomerId = s.CustomerId;
    

Örnek 4: CeTAS ile sonuçları Parquet'e dışarı aktarma

SQL Server 2022 (16.x) ve sonraki sürümleri olan Azure SQL Yönetilen Örneği üzerinde çalışır.

  • 1. Adım: CETAS'ı etkinleştirin (yalnızca SQL Server).

    EXECUTE sp_configure 'allow polybase export', 1;
    RECONFIGURE;
    
  • 2. Adım: Kimlik bilgisi ve veri kaynağı oluşturma (önceki örneklerden yeniden kullanma).

  • 3. Adım: Parquet dışarı aktarma için bir dosya biçimi oluşturun.

    CREATE EXTERNAL FILE FORMAT ParquetFormat
    WITH (
        FORMAT_TYPE = PARQUET
    );
    
  • 4. Adım: Sorgu sonuçlarını dışarı aktarma.

    CREATE EXTERNAL TABLE dbo.Sales2025Export
    WITH (
        DATA_SOURCE = MyAzureStorage,
        LOCATION = '/exports/sales_2025.parquet',
        FILE_FORMAT = ParquetFormat
    ) AS
    SELECT *
    FROM Sales.Orders
    WHERE OrderDate >= '2025-01-01';
    

PolyBase için T-SQL yapı taşları

Herhangi bir senaryoyu uygulamadan önce PolyBase'in kullandığı temel T-SQL nesnelerini ve bunların nasıl bir araya geldiğini anlayın:

PolyBase Transact-SQL nesnelerini ve ilişkilerini gösteren diyagram.

Kimlik doğrulamasından (veritabanı ana anahtarı, kimlik bilgileri) veri kaynaklarına ve dosya biçimlerinden sorgu yöntemlerine (Dış Tablo, OPENROWSET, BULK INSERT, CETAS) kadar PolyBase T-SQL nesnelerini ve bunların ilişkilerini gösteren diyagram.

Tüm nesneler için tam Transact-SQL başvuru rehberi için PolyBase Transact-SQL başvurusu kısmına bakın.

Önemli

Dış dosya biçiminiz için veri türü eşlemesini denetleyin. kullanarak OPENROWSETbir dış dosya biçimi oluşturduğunuzda veya kullanarak dosyaları sorguladığınızda PolyBase, kaynak veri türlerini (Parquet, CSV, Delta, Oracle, Teradata, MongoDB) SQL Server veri türlerine otomatik olarak eşler. Tip uyumsuzlukları sessiz veri kesilmesi, hassasiyet kaybı veya sorgu hatalarına neden olabilir. Örneğin, bir Parquet DECIMAL(38,18) ile DECIMAL(18,0) eşler. Dış tablo sütunlarını veya yan WITH tümcesini tanımlamadan önce eşleme tablolarını gözden geçirin. Başvuru kaynağının tamamı için bkz. PolyBase ile tür eşlemesi.

CREATE MASTER KEY öğesine ne zaman ihtiyaç duyarsınız?

Veritabanı ana anahtarı (DMK) CREATE MASTER KEY söz dizimi kullanılarak oluşturulur. DMK, veritabanı kapsamlı kimlik bilgileri içinde depolanan gizli bilgileri şifreleme işlemi uygular. Kimlik bilgisi, gizli bir dizi değeri, yani bir parola, belirteç veya erişim anahtarı içerdiğinde gereklidir.

  • DMK gereklidir (kimlik doğrulama bilgisi bir gizli öğe depolar):

    Doğrulama türü IDENTITY değer Gizli bilgi var DMK
    SAS belirteci 'SHARED ACCESS SIGNATURE' Evet Zorunlu
    S3 erişim anahtarı 'S3 ACCESS KEY' Evet Zorunlu
    SQL oturum açma / temel kimlik doğrulaması '<username>' Evet Zorunlu
    Depolama hesabı erişim anahtarı '<storage_account_name>' Evet Zorunlu
    • Bir SAS token kimlik bilgisi gizli bir değer kullanır IDENTITY = 'SHARED ACCESS SIGNATURE' ve saklar, bu nedenle veritabanı ana anahtarı gerektirir.
    • Bir S3 erişim anahtarı kimlik bilgisi IDENTITY = 'S3 ACCESS KEY' kullanır ve gizli bir değer depolar; bu nedenle bir veritabanı ana anahtarı gerektirir.
      • Bir SQL oturum açma hesabı veya temel kimlik doğrulama kimlik bilgisi IDENTITY = '<username>' kullanır ve gizli bir değer depolar; bu nedenle bir veritabanı ana anahtarı gerektirir.
    • Bir depolama hesabı erişim anahtarı kimlik bilgisi, IDENTITY = '<storage_account_name>' kullanır ve gizli bir değer depolar; bu nedenle veritabanı ana anahtarı gerektirir.
  • DMK gerekli değildir (gizli bilgi saklanmaz)

    Doğrulama türü IDENTITY değer Gizli bilgi var DMK
    Yönetimli Kimlik 'Managed Identity' Hayır Gerekli değil
    Microsoft Entra Kimliği 'User Identity' veya 'Managed Identity' Hayır Gerekli değil
    • Yönetilen Kimlik kimlik kimliği hiçbir sır kullanmaz IDENTITY = 'Managed Identity' ve depolamaz, bu yüzden veritabanı ana anahtarı gerektirmez.
    • Bir Microsoft Entra ID kimlik bilgisi IDENTITY = 'User Identity' veya IDENTITY = 'Managed Identity' kullanır ve hiçbir gizli bilgi saklamaz, bu nedenle veritabanı ana anahtarı gerektirmez.

Tavsiye

Eğer beyanınızda CREATE DATABASE SCOPED CREDENTIAL bir sır yoksa, DMK'ya ihtiyacınız yok. Yönetilen Kimlik ve Microsoft Entra ID kimlik doğrulaması, güveni platforma devreder. Veritabanı parolaları veya belirteçleri depolamaz.

Örnekler:

Bu örnek sorguda DMK gereklidir (Kimlik bilgisi bir SAS belirtecini depolar).

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';

CREATE DATABASE SCOPED CREDENTIAL SasCred
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
     SECRET = '<your_SAS_token>';

Bu örnek sorguda DMK gerekli değildir (Yönetilen Kimlik, gizli yok).

CREATE DATABASE SCOPED CREDENTIAL ManagedIdentityCred
WITH IDENTITY = 'Managed Identity';

Bu örnek sorguda DMK gerekli değildir (Microsoft Entra geçiş bağlantısı, gizli anahtar yoktur).

CREATE DATABASE SCOPED CREDENTIAL EntraIdCred
WITH IDENTITY = 'User Identity';

OPENROWSET ve dış tablolar ile uzaktan veri erişimi

SQL Server, uzak verileri sorgulamak için üç farklı yaklaşım sunar. Söz dizimi, kimlik doğrulaması ve mimari farklarını anladığınızda doğru yaklaşımı seçebilirsiniz.

Yaklaşım Sözdizimi Bağlanacak yer Kimlik Doğrulaması PolyBase hizmetleri Platformlar
OLE DB sorguları OPENROWSET(provider, connection, query) MSOLEDBSQL, SQLOLEDB veya diğer sağlayıcılar aracılığıyla herhangi bir OLE DB kaynağı SQL kimlik doğrulaması, Windows kimlik doğrulaması, Microsoft Entra Id (MSOLEDBSQL) Hayır SQL Server (desteklenen tüm sürümler)
SQL Server 2022 (16.x) ve SQL Server 2019 (15.x) dosya sorguları OPENROWSET(BULK ...) Yerel disk, ağ veya bulut üzerindeki dosyalar (Azure Blob, ADLS, S3, OneLake) SAS belirteci, erişim anahtarı, Yönetilen Kimlik, Microsoft Entra Id Bulut 1 için evet; Yerel için hayır SQL Server 2022 (16.x) ve SQL Server 2019 (15.x)
SQL Server 2025 (17.x) ve sonraki sürümlerdeki dosya sorguları OPENROWSET(BULK ...) Yerel disk, ağ veya bulut üzerindeki dosyalar (Azure Blob, ADLS, S3, OneLake) SAS belirteci, erişim anahtarı, Yönetilen Kimlik, Microsoft Entra Id Hayır SQL Server 2022 (16.x) ve sonraki sürümleri, Azure SQL Veritabanı, Azure SQL Yönetilen Örneği, Fabric'te SQL Veritabanı
PolyBase bağlayıcıları CREATE EXTERNAL TABLE kullanarak CREATE EXTERNAL DATA SOURCE, sqlserver://, oracle://, teradata://, mongodb://, odbc:// Uzak SQL Server, Oracle, Teradata, MongoDB, ODBC kaynakları Yalnızca SQL kimlik doğrulaması Evet SQL Server 2019 (15.x) ve sonraki sürümleri (Windows); SQL Server 2025 (17.x) ve sonraki sürümleri (Linux)

1 SQL Server 2022 (16.x)'da bulut dosyasına erişim için PolyBase özelliğinin kurulması gerekir.

  • OLE DB sorgularıOPENROWSET(provider, connection, query), tüm desteklenen SQL Server sürümlerinde MSOLEDBSQL, SQLOLEDB veya başka bir sağlayıcı aracılığıyla herhangi bir OLE DB kaynağına bağlanmak için kullanılır. SQL authentication, Windows authentication ve MSOLEDBSQL ile Microsoft Entra ID'yi destekler ve PolyBase hizmetlerinin kurulmasına gerek yoktur.
  • Dosya sorgularıOPENROWSET(BULK ...), SAS token, erişim anahtarı, Yönetilen Kimlik veya Microsoft Entra ID kullanarak yerel disk, ağ paylaşımları veya Azure Blob Depolama, ADLS, S3 veya OneLake gibi bulut depolamadaki dosyaları okumak için kullanılır. SQL Server 2005 ve sonraki sürümlerdeki yerel ve ağ dosyaları, SQL Server 2022 (16.x) ve sonraki sürümlerdeki bulut dosyaları ile Azure SQL Veritabanı, Azure SQL Yönetilen Örneği ve Fabric'teki SQL veritabanı için desteklenmektedir. Dosya sorguları, yerel dosyalar veya SQL Server 2022 (16.x) ve sonraki sürümlerdeki bulut dosyaları için PolyBase hizmetleri gerektirmez.
  • PolyBase bağlayıcıları, uzak SQL Server, Oracle, Teradata, MongoDB veya ODBC kaynaklarına bağlanmak üzere odbc://, sqlserver:// ve CREATE EXTERNAL DATA SOURCE, CREATE EXTERNAL TABLE, oracle://, mongodb:// veya teradata:// konumunu kullanır. SQL Server 2019 (15.x) ve Windows ile SQL Server 2025 (17.x) ve sonraki sürümlerde SQL kimlik doğrulama ve PolyBase hizmetleri gerektirirler. Daha fazla bilgi için bkz CREATE EXTERNAL DATA SOURCE . (Transact-SQL).

Her yaklaşımın ne zaman kullanılacağı

Ole DB OPENROWSET'i aşağıdakiler için kullanın:

  • OLE DB'sini OPENROWSET , kalıcı nesneler oluşturmadan hızlı, tek seferlik ad hoc sorgular için kullanın.
  • MSOLEDBSQL aracılığıyla Microsoft Entra ID veya Managed Identity kimlik doğrulaması için OLE DB OPENROWSET kullanın.
  • PolyBase servis bağımlılıklarından kaçınmak için OLE DB OPENROWSET kullanın.
  • OLE DB sağlayıcısı olan herhangi bir veri kaynağına bağlanmak için OLE DB OPENROWSET kullanın.

OPENROWSET(BULK) işlevini kullanın:

  • Dosyayı ad hoc dosya keşfi ve şema keşfi için kullanın OPENROWSET(BULK ...) .
  • Tablo tanımına geçmeden önce hızlı dönüşümler ve önizlemeler için file OPENROWSET(BULK ...) kullanın.
  • Döküm, filtreleme ve hesaplanan sütunlar gibi esnek satır içi sütun dönüşümleri için file OPENROWSET(BULK ...) kullanın.
  • Dosyayı sık değişmeyen ve kalıcı meta veriye ihtiyaç duymayan veriler için kullanın OPENROWSET(BULK ...) .

Şunlar için CREATE EXTERNAL TABLE ile PolyBase bağlayıcılarını kullanın:

  • Birden fazla kullanıcının veya uygulamanın erişebileceği kalıcı ve yeniden kullanılabilir tablo tanımları için PolyBase konnektörleri CREATE EXTERNAL TABLE kullanın.
  • İstatistikler ve sorgu planı optimizasyonu gerektiren üretim iş yüklerinde, PolyBase bağlayıcılarını CREATE EXTERNAL TABLE ile kullanın.
  • Oracle ve SQL Server gibi uzak kaynaklarda işlemleri yürütmek için CREATE EXTERNAL TABLE içeren PolyBase bağlayıcılarını kullanın.
  • Paylaşılan yönetişim ve güvenlik için PolyBase bağlayıcılarını kullanın CREATE EXTERNAL TABLE ; tablo oluşturulduktan sonra kullanıcıların yalnızca SELECT iznine ihtiyacı vardır.
  • Uzak kaynak için SQL doğrulaması mümkün olduğunda PolyBase bağlayıcılarını CREATE EXTERNAL TABLE kullanın.

OPENROWSET (OLE DB) - geçici uzak sorgular (PolyBase hizmetleri gerekmez)

OLE DB biçimi OPENROWSET bir OLE DB sağlayıcısı aracılığıyla uzak bir veri kaynağına bağlanır, doğrudan sorgu yürütür ve sonuçları satır kümesi olarak döndürür. Bağlantılı sunucuya tek seferlik, geçici bir alternatiftir. Kalıcı meta veriler oluşturulmaz. Bu söz dizimi PolyBase hizmetlerini gerektirmez ve bulut dosyalarını veya dış veri kaynaklarını desteklemez.

Bu örnek sorgu, OLE DB (PolyBase değil) aracılığıyla uzak bir SQL Server'a bağlanır.

SELECT *
FROM OPENROWSET (
    'MSOLEDBSQL',
    'Server=remote-server;Database=AdventureWorks;Trusted_Connection=yes;',
    'SELECT TOP 10 * FROM AdventureWorks.Sales.SalesOrderHeader'
);

OPENROWSET(BULK) - dosya tabanlı sorgular (PolyBase)

BULK biçimi OPENROWSET verileri doğrudan dosyalardan okur. SQL Server 2019 (15.x) ve önceki sürümlerinde, yerel veya UNC dosya yollarından okur ve bir biçim dosyası gerektirir. SQL Server 2022 (16.x) ve sonraki sürümlerde, ve DATA_SOURCE parametrelerini kullanarak FORMAT okuyabilirsiniz. Bu yaklaşım, veri sanallaştırma için kullanılan PolyBase ile tümleşik sürümdür.

PolyBase ve veri sanallaştırma bağlamında, bu kılavuzda OPENROWSET'ya başvurulduğunda, dış dosyaları sorgulamak için OPENROWSET(BULK ...) koşulunu içeren FORMAT söz dizimi anlamına gelir.

Örnekler:

Bu örnek sorgu, Azure Blob Depolama'dan (SQL Server 2022 ve sonraki sürümler) bir Parquet dosyası okur.

SELECT TOP 10 *
FROM OPENROWSET (
    BULK 'data/sales/*.parquet',
    DATA_SOURCE = 'MyAzureStorage',
    FORMAT = 'PARQUET'
) AS [result];

Bu örnek sorgu, satır içi yolu (Azure SQL Veritabanı, Azure SQL Yönetilen Örneği) olan bir Parquet dosyasını okur.

SELECT TOP 10 *
FROM OPENROWSET (
    BULK 'abs://mycontainer@mystorageaccount.blob.core.windows.net/data/sales/*.parquet',
    FORMAT = 'PARQUET'
) AS [result];

OPENROWSET ve dış tablolar ne zaman kullanılır?

Hem OPENROWSET(BULK ...) tabloları hem de dış tablolar, T-SQL ile dış verileri sorgulamanıza olanak sağlar, ancak farklı kullanım durumları için tasarlanmıştır. Aşağıdaki tabloda hangi yaklaşımın senaryonuza uygun olduğunu belirlemenize yardımcı olacak temel farklılıklar özetlemektedir.

Kapasite OPENROWSET(BULK ...) Dış tablo
Purpose Geçici keşif ve tek seferlik sorgular Kalıcı, yeniden kullanılabilir tablo tanımı
Veritabanında depolanan meta veriler Hayır. Sorgu çalıştırıldıktan sonra hiçbir şey kaydedilmez Evet. Tablo tanımı, veri kaynağı ve dosya biçimi veritabanı nesneleri olarak depolanır
Şema tanımı Parquet dosyasından otomatik olarak türetilir veya bir WITH tümcesi ile satır içi olarak belirtilir. CREATE EXTERNAL TABLE ifadesinde açıkça tanımlanmış
Permissions ADMINISTER BULK OPERATIONS veya ADMINISTER DATABASE BULK OPERATIONS gerektirir Oluşturulduktan sonra tabloda standart SELECT izin yeterlidir
Hesaplanan sütunlar Evet. Listeye ifadeler ve hesaplanan sütunlar SELECT ekleyin; filename() ve filepath() gibi meta veri işlevleri yalnızca burada kullanılabilir. Hayır. Sabit sütun listesi; dış tabloyu okuyan bir görünümde veya sorguda dönüştürmeler gerçekleştirme
İstatistikler Azure SQL Yönetilen Örneği: sys.sp_create_openrowset_statistics üzerinden manuel tek sütunlu istatistikler. Bkz. OPENROWSET kılavuzu istatistikleri.

SQL Server 2022 (16.x) ve sonraki sürümler, Azure SQL Veritabanı, SQL database in Fabric: predicates üzerinde otomatik istatistikler oluşturma. SQL Server'da manuel OPENROWSET istatistikler desteklenmiyor.
Tüm platformlarda tam CREATE STATISTICS desteğin yanı sıra SQL Server 2022 (16.x) ve sonraki sürümlerde otomatik oluşturma. Bkz. Harici tablo manuel istatistikleri oluşturma.
Pushdown Sınırlı destek. Altyapı, filtreleri dosya taramasına gönderse de uzak RDBMS kaynaklarına gönderme işlemi yapılmaz Evet. RDBMS bağlayıcıları için pushdown hesaplamasını destekler (SQL Server, Oracle, Teradata, MongoDB)
En uygun Veri keşfi, şema bulma, prototip oluşturma sorguları, tek seferlik veri yükleri, esnek dönüşümler Üretim iş yükleri, yinelenen sorgular, kullanıcılar arasında paylaşılan erişim, panolar ve raporlama
  • OPENROWSET(BULK ...) geçici keşif ve tek seferlik sorgular için en iyisidir, harici bir tablo ise kalıcı ve yeniden kullanılabilir tablo tanımları için daha iyidir.
  • OPENROWSET(BULK ...) sorgu çalıştıktan sonra meta veri veritabanında depolanmazken, harici bir tablo tablo tanımını, veri kaynağını ve dosya formatını veritabanı nesnesi olarak saklar.
  • OPENROWSET(BULK ...), şemayı bir Parquet dosyasından otomatik olarak algılar veya şemayı WITH yan tümcesiyle satır içinde tanımlar; harici tabloda ise şema CREATE EXTERNAL TABLE ifadesinde açıkça tanımlanır.
  • OPENROWSET(BULK ...), ADMINISTER BULK OPERATIONS veya ADMINISTER DATABASE BULK OPERATIONS gerektirirken, harici bir tablo ise tablo oluşturulduktan sonra yalnızca standart SELECT iznine ihtiyaç duyan kullanıcılar tarafından sorgulanabilir.
  • OPENROWSET(BULK ...), sorguda hesaplanan sütunları ve filename() ile filepath() gibi meta veri işlevlerini desteklerken, dış tablo sabit bir sütun listesine sahiptir ve dönüşümlerin bir görünümde veya dış tabloyu okuyan sorguda yapılmasını gerektirir.
  • OPENROWSET(BULK ...)sınırlı istatistik desteğine sahiptir: Azure SQL Yönetilen Örneği tek sütunlu istatistikler için kullanılabilirsys.sp_create_openrowset_statistics, ancak SQL Server 2022 (16.x) ve sonraki sürümler, Azure SQL Veritabanı ve SQL database in Fabric predikatlar üzerinde otomatik istatistikler oluşturur. SQL Server, Azure SQL Veritabanı ve Fabric'teki SQL veritabanında manuel OPENROWSET istatistikler desteklenmiyor. Harici bir tablo, tüm platformlarda tam CREATE STATISTICS özelliğini ve SQL Server 2022 (16.x) ve sonraki sürümlerde, Azure SQL Veritabanı'te ve Fabric'teki SQL veritabanında otomatik istatistikleri destekler. Bkz. OPENROWSET manuel istatistikler ve Harici tablo manuel istatistikleri oluştur.
  • OPENROWSET(BULK ...) sınırlı pushdown desteğine sahiptir ve uzak RDBMS kaynakları için pushdown desteği yoktur; buna karşılık harici bir tablo, RDBMS konektörleri için pushdown hesaplamalarını destekler.
  • OPENROWSET(BULK ...) veri keşfi, şema keşfi, prototipleme, tek seferlik yüklemeler ve esnek dönüşümler için en iyisidir; harici bir tablo ise üretim iş yükleri, tekrarlanan sorgular, paylaşılan erişim, dashboard'lar ve raporlama için en iyisidir.

Esnekliğe ihtiyacınız olduğunda OPENROWSET'i kullanma

Bir dosyayı keşfetmek, farklı şemaları test etmek veya herhangi bir kalıcı nesne oluşturmadan hesaplanan sütunlar ve dönüşümler eklemek için kullanın OPENROWSET . Örneğin, dosya yolunu sütun olarak ayıklayabilir, veri türlerini satır içi olarak yayınlayabilir veya tek bir sorguda hesaplanan ifadelere filtreleyebilirsiniz.

Bu örnek sorgu hesaplanan sütunları ve dönüştürmeleri içerir:

SELECT result.filename() AS [FileName],
       result.filepath(1) AS [Year],
       result.filepath(2) AS [Month],
       CAST (OrderDate AS DATE) AS OrderDate,
       Amount,
       OrderDate
FROM OPENROWSET (
    BULK 'abs://mycontainer@mystorageaccount.blob.core.windows.net/data/sales/*/*/*/*.parquet',
    FORMAT = 'PARQUET'
) AS result
WHERE result.filepath(1) = '2025';

Tavsiye

filepath() ve filename() işlevleri Azure SQL Veritabanı, Azure SQL Yönetilen Örneği ve SQL Server 2022 (16.x) ve sonraki sürümlerde kullanılabilir. Dosya yolunun bölümlerine göre filtrelemenize (bölüm eleme) ve kaynak dosya adını bir sütun olarak kullanıma sunmanıza olanak sağlar ve bu, dış tablolarla doğrudan mümkün değildir.

Kalıcılık ve idareye ihtiyacınız olduğunda dış tabloları kullanma

Birden çok kullanıcının veya uygulamanın aynı dış verileri tekrar tekrar sorgulaması gerektiğinde dış tabloları kullanın. Şemayı, veri kaynağını ve kimlik bilgilerini bir kez tanımlar ve veritabanında depolarsınız. Tüketicilerin yalnızca tabloda izne ihtiyacı vardır SELECT .

Dış tablolar, sorgu iyileştiricisinin daha iyi yürütme planları oluşturmak için kullandığı istatistikleri de destekler. İstatistikleri el ile oluşturabilir veya altyapının bunları otomatik olarak oluşturmasına izin verebilirim (SQL Server 2022 (16.x) ve sonraki sürümler).

Bu örnek sorgu, daha iyi sorgu planları için bir dış tabloda istatistikler oluşturur.

CREATE STATISTICS Stats_OrderDate
ON dbo.SalesExternal(OrderDate)
WITH FULLSCAN;

Her iki yaklaşımla ilgili istatistikler hakkında daha fazla bilgi için bkz. PolyBase performans konuları - İstatistikler.

BULK INSERT vs. OPENROWSET(BULK): Hangisini kullanmalıyım?

Hem BULK INSERT hem de OPENROWSET(BULK ...), aynı temel toplu yükleme motorunu kullanarak dosyalardan SQL Server'a veri aktarmaktadır. Ancak, bunlar söz dizimleri, esneklikleri ve sonuçlarla yapabilecekleriniz bakımından farklılık gösterir. Aşağıdaki tabloda önemli farklar özetlemektedir:

Uyarı

Bağımsız BULK INSERT ifade, Fabric'teki SQL veritabanında desteklenmiyor. Veri almak için OneLake üzerinde INSERT ... SELECT ile birlikte OPENROWSET(BULK ...) kullanın.

Kapasite BULK INSERT OPENROWSET(BULK ...)
Temel amaç Bir dosyadaki verileri doğrudan hedef tabloya yükler Satır kümesi, SELECT veya INSERT ... SELECT deyiminde kullandığınız bir sonuç döndürür.
Kullanım düzeni Tek başına ifade: BULK INSERT <table> FROM '<file>' Sorgu içinde kullanılmalıdır: SELECT * FROM OPENROWSET(BULK ...) veya INSERT INTO <table> SELECT * FROM OPENROWSET(BULK ...)
Hedef tablo mu gerekiyor? Evet. Her zaman doğrudan bir tabloya yazar Hayır. Herhangi bir yere eklemeden veya herhangi bir tabloya veya geçici tabloya ekleme yapmadan bu tablodan ekleyebilirsiniz SELECT
Yükleme sırasında sütun dönüştürmeleri Sınırlı destek. Veriler, format dosyası veya sütun sırası tarafından denetlenen eşleme ile olduğu gibi dosyadan tabloya akıyor. Tam destek. Çevresine ifadeler, CAST, WHERE filtreler, JOIN diğer tablolar ve hesaplanan sütunlar ekleyebilirsiniz SELECT
Tablo ipuçları madde WITH için BATCHSIZE, CHECK_CONSTRAINTS, FIRE_TRIGGERS, KEEPIDENTITY, KEEPNULLS, TABLOCK ve daha fazlası destek içerir INSERT ... SELECT * FROM OPENROWSET(BULK ...) WITH (TABLOCK, IGNORE_CONSTRAINTS, ...) sözdizimi aracılığıyla tablo ipuçları desteği sağlar
Büyük nesne (LOB) tek değerli aktarım Desteklenmiyor Evet. Bir dosyanın tamamını tek bir varbinary(max), varchar(max), veya nvarchar(max) değeri olarak içeri aktarmak için SINGLE_BLOB, SINGLE_CLOB, SINGLE_NCLOB'yi destekler
Dosyaları biçimlendirme Evet. (XML ve XML-dışı) aracılığıyla destek sağlanır Evet. Desteklenir (XML ve XML olmayan)
Bulut dosya erişimi DATA_SOURCEAzure Blob Depolama'ı SQL Server 2017 (14.x) ve sonraki sürümlerde, Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği'da destekler. SQL Server 2019 CU11 ve sonraki güncellemeler de ADLS Gen2'yi destekler. S3 uyumlu depolama desteklenmiyor. DATA_SOURCESQL Server 2017 (14.x) ve sonraki sürümlerde Azure Blob Depolama'ı, SQL Server 2019 CU11 ve sonraki sürümlerde ADLS Gen2'yi ve SQL Server 2022 (16.x) ve sonraki sürümlerde S3 uyumlu depolamayı destekler. Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği, Azure Blob Depolama ve ADLS Gen2'yi destekler. Fabric'teki SQL veritabanı, OneLake kısayolları aracılığıyla OneLake ve harici depolama desteğini sağlar.
Parquet veya Delta dosyaları Desteklenmiyor. Yalnızca CSV/sınırlandırılmış metin Evet. SQL Server 2022 (16.x) ve sonraki sürümler, Azure SQL Yönetilen Örneği ve Azure SQL Veritabanı, FORMAT = 'PARQUET' ve FORMAT = 'DELTA' destekler; Fabric'teki SQL veritabanı ise FORMAT = 'PARQUET''yi destekler, ancak DELTA'ü desteklemez. Daha fazla bilgi için bkz. OPENROWSET BULK (Transact-SQL).
İzin gerekiyor ADMINISTER BULK OPERATIONS veya ADMINISTER DATABASE BULK OPERATIONS, artı INSERT hedef tabloda ADMINISTER BULK OPERATIONS veya ADMINISTER DATABASE BULK OPERATIONS
Minimum günlük kaydı Evet. Basit veya büyük ölçekli günlük kaydı kurtarma modeli altında desteklenmektedir TABLOCK Evet. INSERT ... SELECT kullanıldığında ve TABLOCK ile desteklenir
  • BULK INSERTBir dosyadan doğrudan hedef tabloya veri yükler, bir OPENROWSET(BULK ...) veya INSERT ... SELECT ifadesinde SELECT kullanabileceğiniz bir satır seti döndürür.
  • BULK INSERTbağımsız bir ifadedir ve OPENROWSET(BULK ...) örneğin veya INSERT INTO <table> SELECT * FROM OPENROWSET(BULK ...)gibi bir sorgu SELECT * FROM OPENROWSET(BULK ...) içinde kullanılmalıdır.
  • BULK INSERT her zaman doğrudan hedef tabloya yazarken, OPENROWSET(BULK ...)SELECT bir dosyadan herhangi bir yere eklemeden ya da herhangi bir tabloya veya geçici tabloya ekleme yapmadan içe aktarabilir.
  • BULK INSERT Veri dosyadan tabloya as-is, ile akış yaptığı için sütun dönüşümleri için sınırlı destek sunar ve eşleme, format dosyası veya sütun sırası tarafından kontrol edilir. OPENROWSET(BULK ...), çevreleyen SELECT içindeki ifadeleri, CAST öğelerini, WHERE filtrelerini, JOIN'leri ve hesaplanan sütunları destekler.
  • BULK INSERT, FIRE_TRIGGERS, KEEPIDENTITY, KEEPNULLS, TABLOCK, BATCHSIZE, WITH ve diğer ipuçları için bir CHECK_CONSTRAINTS yan tümcesi kullanır. OPENROWSET(BULK ...), tablo ipuçlarını INSERT ... SELECT * FROM OPENROWSET(BULK ...) WITH (TABLOCK, IGNORE_CONSTRAINTS, ...) aracılığıyla destekler.
  • BULK INSERT büyük nesne tek değer içe aktarmayı desteklemiyor. OPENROWSET(BULK ...), SINGLE_CLOB, ve SINGLE_NCLOB tüm dosyayı sırasıyla bir varbinary(max), varchar(max) veya nvarchar(max) değeri olarak içe aktarmak için SINGLE_BLOBdestekler.
  • BULK INSERT ve OPENROWSET(BULK ...)'in her ikisi de XML ve XML dışı biçimindeki dosyaları destekler.
  • Bulut dosya erişimi için BULK INSERTparametre DATA_SOURCE SQL Server 2017 (14.x) ve sonraki sürümlerde, Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği'da Azure Blob Depolama'i destekler. SQL Server 2019 CU11 ve sonraki güncellemeler de ADLS Gen2'yi destekler, ancak BULK INSERT S3 uyumlu depolama desteğini desteklemez. For OPENROWSET(BULK ...), DATA_SOURCE SQL Server 2017 (14.x) ve sonraki sürümlerde Azure Blob Depolama'ı, SQL Server 2019 CU11 ve sonraki sürümlerde ADLS Gen2'yi ve SQL Server 2022 (16.x) ve sonraki sürümlerde S3 uyumlu depolamayı destekler. Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği, Azure Blob Depolama ve ADLS Gen2'yi destekler. Fabric'teki SQL veritabanı, OneLake kısayolları aracılığıyla OneLake ve harici depolama desteğini sağlar.
  • BULK INSERT Parquet veya Delta dosyalarını desteklemiyor ve sadece CSV veya sınırlandırılmış metin desteğini sunuyor. OPENROWSET(BULK ...)SQL Server 2022 (16.x) ve sonraki sürümlerde, Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği'da desteklenmektedir FORMAT = 'PARQUET'FORMAT = 'DELTA'. Fabric'teki SQL veritabanı FORMAT = 'PARQUET' destekler, ancak FORMAT = 'DELTA' desteklemez. Daha fazla bilgi için bkz. OPENROWSET BULK (Transact-SQL).
  • BULK INSERT, hedef tabloda ADMINISTER BULK OPERATIONS veya OPENROWSET(BULK ...) ile birlikte ADMINISTER BULK OPERATIONS izni gerektirirken, ADMINISTER DATABASE BULK OPERATIONS ise INSERT veya ADMINISTER DATABASE BULK OPERATIONS gerektirir.
  • BULK INSERTBasit veya toplu kayıtlı kurtarma modeli altında minimal logu destekler.TABLOCK OPENROWSET(BULK ...), INSERT ... SELECT ve TABLOCK ile kullanıldığında en az düzeyde günlüğe kaydetmeyi destekler.

BULK INSERT ne zaman seçilmeli

Basit bir dosyadan tabloya yükünüz olduğunda ve içeri aktarma sırasında verileri dönüştürmeniz, filtrelemeniz veya birleştirmeniz gerekmeyen durumlarda kullanın BULK INSERT . CSV veya diğer sınırlandırılmış dosyalar için daha basit söz dizimi kullanır:

Bu örnek sorgu, Azure Blob Depolama'dan bir CSV dosyasını doğrudan bir tabloya yükler.

BULK INSERT Sales.Invoices
FROM 'invoices/inv-2025-01.csv'
WITH (
    DATA_SOURCE = 'MyAzureBlobStorage',
    FORMAT = 'CSV',
    FIRSTROW = 2,
    FIELDTERMINATOR = ',',
    ROWTERMINATOR = '\n'
);

Bu örnek sorgu, sütun eşlemesi için biçim dosyası içeren bir yerel dosya yükler.

BULK INSERT dbo.Products
FROM 'C:\Data\products.csv'
WITH (
    FORMATFILE = 'C:\Data\products.fmt',
    FIRSTROW = 2,
    TABLOCK
);

OPENROWSET(BULK) ne zaman seçilir?

Aşağıdaki koşullardan birine veya daha fazlasına ihtiyacınız olduğunda kullanın OPENROWSET(BULK ...) :

  • Önce bir tablo oluşturmadan dosya verilerini sorgulamak veya önizlemek için kullanılır OPENROWSET(BULK ...) .
  • İçe aktarma sırasında veriyi dönüştürmek, filtrelemek veya birleştirmek için kullanılır OPENROWSET(BULK ...) .
  • OPENROWSET(BULK ...) Parquet veya Delta dosyalarını yüklemek için kullanıyorum çünkü BULK INSERT bu formatları desteklemiyor.
  • OPENROWSET(BULK ...), SINGLE_BLOB, SINGLE_CLOB veya SINGLE_NCLOB ile tüm dosyayı tek bir LOB değeri olarak içe aktarmak için kullanın.

Bu örnek sorgu, verileri herhangi bir yere eklemeden Azure Blob Depolama'dan bir CSV dosyasının önizlemesini gösterir.

SELECT TOP 10 *
FROM OPENROWSET (
    BULK 'invoices/inv-2025-01.csv',
    DATA_SOURCE = 'MyAzureBlobStorage',
    FORMAT = 'CSV',
    FIRSTROW = 2,
    FIELDTERMINATOR = ','
) AS src;

Bu örnek sorgu, dönüştürme ve filtreleme ile veri ekler.

INSERT INTO Sales.Invoices (InvoiceDate, Amount, Customer)
SELECT CAST (InvoiceDate AS DATE),
       Amount * 1.1, -- Apply a 10% markup
       UPPER(Customer)
FROM OPENROWSET (
    BULK 'invoices/inv-2025-01.csv',
    DATA_SOURCE = 'MyAzureBlobStorage',
    FORMAT = 'CSV',
    FIRSTROW = 2
) WITH (
    InvoiceDate VARCHAR (10),
    Amount DECIMAL (18, 2),
    Customer VARCHAR (100)
) AS src
WHERE Amount IS NOT NULL;

Bu örnek sorgu bir Parquet dosyası yükler (Parquet dosyasını BULK INSERT ile yüklemek mümkün değildir).

INSERT INTO Sales.Invoices
SELECT *
FROM OPENROWSET (
    BULK 'data/invoices/*.parquet',
    DATA_SOURCE = 'MyAzureStorage',
    FORMAT = 'PARQUET') AS src;

Bu örnek sorgu, xml dosyasının tamamını tek bir varbinary(max) değeri olarak içeri aktarır.

INSERT INTO dbo.XmlDocuments (DocContent)
SELECT BulkColumn
FROM OPENROWSET (
    BULK 'C:\Data\catalog.xml',
    SINGLE_BLOB
) AS x;

Tavsiye

Yaklaşımlardan biri, dosya verilerini araştırmak ve doğrulamak için bir OPENROWSET(BULK ...) ile SELECT'de başlamak ve dönüştürmelere ihtiyacınız yoksa, son üretim yükü için BULK INSERT'ye geçmektir. Parquet veya Delta desteğine ya da satır içi filtrelemeye ihtiyacınız varsa, OPENROWSET ile kalın.

Daha fazla bilgi için aşağıdaki ilgili kılavuzlara bakın:

Yararlı meta veri işlevleri

Dış dosyaları veya OPENROWSET harici tabloları kullanarak sorgularken, dosya metaverisini incelemek, şemaları keşfetmek ve bölüm farkında sorgular uygulamak için yerleşik fonksiyon ve prosedürleri kullanın.

filepath() ve filename()

filepath() ve filename() işlevleri, sonuç kümesindeki her satır için dosya yolunun veya dosya adının bölümlerini döndürür. Bunlar özellikle şunlar için kullanışlıdır:

  • Bölüm filtreleme: Motorun her şeyi taramak yerine yalnızca uyumlu dosyaları okumasını sağlamak için klasör bölümlerini (örneğin, yıl/ay/gün bölümleri) filtreleyin.

  • Kaynak meta verileri açığa çıkarma: Kaynak dosya adını veya yolu sorgu sonuçlarına sütun olarak ekleyin. Bu, denetim veya hata ayıklama için yararlıdır.

Function İadeler Example
filename() Her satır için kaynak dosyanın dosya adı (uzantı dahil) sales_2025_01.parquet
filepath(N) Yoldaki () joker karakterden (*) itibaren BULKN'inci klasör kesimi, burada N 1'den başlar Yol sales/2025/01/*.parquet için, filepath(1)2025 döndürür, filepath(2)01 döndürür

Şunlar için geçerlidir: Azure SQL Veritabanı, Azure SQL Yönetilen Örneği, SQL Server 2022 (16.x) ve sonraki sürümler, Fabric SQL Veritabanı.

Bu örnek sorgu, filepath() bölüm eleme için ve filename() kaynak dosyaları tanımlamak için kullanılır. Yalnızca klasörün altındaki /2025/ dosyaları okur ve yalnızca alt klasörün altındaki /06/ dosyaları okur.

SELECT result.filename() AS SourceFile,
       result.filepath(1) AS [Year],
       result.filepath(2) AS [Month],
       *
FROM OPENROWSET (
    BULK 'abs://mycontainer@mystorageaccount.blob.core.windows.net/data/sales/*/*/*.parquet',
    FORMAT = 'PARQUET'
) AS result
WHERE result.filepath(1) = '2025' 
      AND result.filepath(2) = '06';

Tavsiye

Filtreleri filepath(), bir alt sorgu veya CTE yerine WHERE koşuluna yerleştirin. Filtre yan tümcesinde WHERE olduğunda altyapı, dosya tarama düzeyinde bölüm eleme gerçekleştirebilir ve bu da G/Ç'yi önemli ölçüde azaltır.

sp_describe_first_result_set - OPENROWSET sütun türlerini bulma

Parquet dosyalarıyla OPENROWSET kullandığınızda motor sütun veri türlerini otomatik olarak tanımlar (şema çıkarımı). Çıkarsanan türler gerekenden daha büyük olabilir. Örneğin, Parquet meta verileri maksimum uzunluk içermediğinden karakter sütunları genellikle varchar(8000) olarak çıkarılır. Bu seçim performansı düşürebilir ve daha fazla bellek tüketebilir.

Sorgunuzu sp_describe_first_result_set çıkarsanan şemayı incelemek için kullanın. Çıkarılan türleri gördükkten sonra, performansı geliştirmek için bir WITH yan tümcede daha dar türler belirtin.

  • 1. Adım: Çıkarsanan şemayı inceleyin.

    EXECUTE sp_describe_first_result_set N'
    SELECT *
    FROM OPENROWSET(
        BULK ''abs://mycontainer@mystorageaccount.blob.core.windows.net/data/sales/*.parquet'',
        FORMAT = ''PARQUET''
    ) AS result';
    

    Çıkışta her sütunun adı, çıkarımlı veri türü, maksimum uzunluk, duyarlık ve ölçek gösterilir. Eğer varchar(8000) gördüğünüz yerde varchar(100) yeterliyse, bunu geçersiz kılın.

  • 2. Adım: Daha iyi performans için açık türleri kullanın.

    SELECT TOP 100 *
    FROM OPENROWSET (
        BULK 'abs://mycontainer@mystorageaccount.blob.core.windows.net/data/sales/*.parquet',
        FORMAT = 'PARQUET'
    ) WITH (
        OrderId INT,
        OrderDate DATE,
        Amount DECIMAL (18, 2),
        Customer VARCHAR (100) -- much narrower than the inferred varchar(8000)
    ) AS result;
    

Şema çıkarımı yalnızca Parquet dosyalarıyla çalışır. CSV dosyaları için her zaman sütun tanımlarını bir WITH açıklamasında (OPENROWSET için) veya CREATE EXTERNAL TABLE deyiminde belirtin. sp_describe_first_result_setgenel bir SQL Server, Azure SQL Veritabanı, Azure SQL Yönetilen Örneği ve SQL database in Fabric prosedürüdür, ancak özellikle sorgular için OPENROWSET faydalıdır. Daha fazla bilgi için bkz. sp_describe_first_result_set.

Performans, sorun giderme ve en iyi yöntemler

Veri sanallaştırmayı uyguladıktan sonra performansı iyileştirmek, sorunları tanılamak ve üretime hazır olduğunuzdan emin olmak için şu kılavuzları kullanın:

Area Makale Ayrıntılar
PolyBase performansı SQL Server için PolyBase'de performansla ilgili dikkat edilmesi gerekenler İstatistikler, yığma, paralel işlem ve bellek yönetimi
İtme hesaplaması PolyBase'de pushdown hesaplamaları Uzak kaynağa hangi işlemlerin gönderildiği belirtir
İtmenin gerçekleşip gerçekleşmediğini belirleme Dış baskının gerçekleşip gerçekleşmediğini belirleme Planları ve DMV'leri sorgulama
Sorun giderme PolyBase'i izleme ve sorunlarını giderme Genel sorunlar ve çözümleri
Kerberos bağlantısı PolyBase Kerberos bağlantısı sorunlarını giderme
SSS PolyBase hakkında sık sorulan sorular
Hatalar ve çözümler PolyBase hataları ve olası çözümleri