Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümler
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
SQL 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 veBULK INSERTarası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
- PolyBase, veri sanallaştırmasını sağlayan Microsoft SQL Database Engine özelliğidir.
- PolyBase, Windows Server 2016 ve sonraki sürümlerde Windows Server ile SQL Server 2019 ve daha sonraki Linux sürümlerinde desteklenmektedir.
- PolyBase, Linux'ta SQL Server 2017'de desteklenmiyor.
- PolyBase, Azure SQL Veritabanı'de desteklenmemektedir, ancak Azure SQL Veritabanı ilgili veri sanallaştırma yeteneklerini ve
OPENROWSETharici tablolar aracılığıyla sağlar. Daha fazla bilgi için bkz. Azure SQL Veritabanı ile veri sanallaştırma (Önizleme). - PolyBase, Azure SQL Yönetilen Örneği'ta isim olarak bir özellik değildir, ancak Azure SQL Yönetilen Örneği benzer şekilde çalışan veri sanallaştırma özelliklerine sahiptir. Daha fazla bilgi için bkz. Azure SQL Yönetilen Örneği ile veri sanallaştırma.
- PolyBase, Fabric'teki SQL veritabanında desteklenmemektedir, ancak Fabric'teki SQL veritabanı OneLake'teki veriler için kendi veri sanallaştırma yeteneklerini sağlar. Daha fazla bilgi için, Fabric'te SQL veritabanında veri sanallaştırmasına bakınız.
- PolyBase Fabric Data Warehouse'da bir özellik değil. Fabric Data Warehouse'de veri sanallaştırması için Fabric OneLake Kısayolları'nı değerlendirin. Fabric Data Warehouse veri yükleme makaleleri için bkz. T-SQL ile Veri alımı ve Boyutsal Modelleme: Tabloları Yükleme.
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 ... SELECTile birlikteBULK INSERTveyaOPENROWSET(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ümlerFORMAT = DELTA,FORMAT = 'CSV'veFORMAT = '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 TABLEile birliktesqlserver://,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ın
OPENROWSET(MSOLEDBSQL, ...). - Eğer kalıcı tablolara, istatistiklere veya uzak veritabanlarına pushdown hesaplamaya ihtiyacınız varsa,
CREATE EXTERNAL TABLE,mongodb://oracle://teradata://veodbc://gibi PolyBase bağlayıcılarınısqlserver://kullanın.OPENROWSETBu 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 ...)konumundakiINSERT ... 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
OPENROWSETkullanı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 = DeltaLakeFileFormatile 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> |
-
- 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.
-
- Veritabanı altyapısının uzak sunucuda kimlik doğrulaması gerçekleştirebilmesi için,
CREATE DATABASE SCOPED CREDENTIALkullanarak hedef oturum açma hesabıyla veritabanı kapsamında bir kimlik bilgisi oluşturun.
- Veritabanı altyapısının uzak sunucuda kimlik doğrulaması gerçekleştirebilmesi için,
-
- Uzak SQL Server için harici bir veri kaynağı oluşturun.
CREATE EXTERNAL DATA SOURCE ... WITH (LOCATION = 'sqlserver://<server>')
- Uzak SQL Server için harici bir veri kaynağı oluşturun.
-
- Uzak tabloyu temsil etmek için
CREATE EXTERNAL TABLE ... WITH (LOCATION = '<db>.<schema>.<table>')kullanarak harici bir tablo oluşturun.
- Uzak tabloyu temsil etmek için
-
-
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) |
- Oracle veri kaynakları, Oracle rehberinde harici verilere erişmek için PolyBase'i Configure kullanır ve SQL Server 2019 (15.x) ve daha sonraki sürümleri ile Oracle istemci sürücülerini gerektirir.
- Teradata veri kaynakları, Teradata rehberinde harici verilere erişmek için Configure PolyBase'i kullanır ve SQL Server 2019 (15.x) ve daha sonraki sürümler ile Teradata ODBC sürücüsünü gerektirir.
- MongoDB veya Cosmos DB veri kaynakları, MongoDB rehberinde harici verilere erişmek için Configure PolyBase'i kullanır ve SQL Server 2019 (15.x) ve daha sonraki sürümler ile MongoDB ODBC sürücüsünü gerektirir.
- Herhangi bir ODBC kaynağı, ODBC genel türleriyle dış verilere erişmek için PolyBase’i yapılandırma kılavuzunu kullanabilir ve bunun için Windows’ta SQL Server 2019 (15.x) ve sonraki sürümler veya Linux’ta SQL Server 2025 (17.x) ve sonraki sürümler gerekir.
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 ve sonraki sürümler, SQL Server 2025 (17.x) ile başlayan SAS tokenları, erişim anahtarları veya Yönetilen Kimlik kullanarak Azure Blob Depolama veya ADLS Gen2 doğrulamasını destekler. Daha fazla bilgi için bkz. PolyBase'i Azure Blob Depolama'daki dış verilere erişecek şekilde yapılandırma.
- SQL Server 2019, Hadoop bağlantısı üzerinden erişim anahtarı kullanarak Azure Blob Depolama veya ADLS Gen2'yi destekler. Daha fazla bilgi için bkz. PolyBase'i Azure Blob Depolama'daki dış verilere erişecek şekilde yapılandırma.
- Azure SQL Veritabanı, SAS tokens, Managed Identity veya Microsoft Entra geçişli kimlik doğrulaması kullanarak Azure Blob Depolama veya ADLS Gen2'yi destekler. Daha fazla bilgi için bkz. Azure SQL Veritabanı ile veri sanallaştırma (Önizleme).
- Azure SQL Yönetilen Örneği, SAS tokenları veya Managed Identity kullanarak Azure Blob Depolama veya ADLS Gen2'yi destekler. Daha fazla bilgi için bkz. 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]://'iabs://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:
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.
- Harici veri kaynağı sözdizimi için bkz.CREATE EXTERNAL DATA SOURCE
- Harici dosya formatı sözdizimi için bkz.CREATE EXTERNAL FILE FORMAT
- Harici tablo sözdizimi için bkz.CREATE EXTERNAL TABLE
- Ad hoc veri erişim sözdizimi için bkz. OPENROWSET.
- CETAS sözdizimi için bkz.CREATE EXTERNAL TABLE AS SELECT (CETAS).
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ü IDENTITYdeğerGizli 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 SQL oturum açma hesabı veya temel kimlik doğrulama kimlik bilgisi
- 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.
- Bir SAS token kimlik bilgisi gizli bir değer kullanır
DMK gerekli değildir (gizli bilgi saklanmaz)
Doğrulama türü IDENTITYdeğerGizli 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'veyaIDENTITY = 'Managed Identity'kullanır ve hiçbir gizli bilgi saklamaz, bu nedenle veritabanı ana anahtarı gerektirmez.
- Yönetilen Kimlik kimlik kimliği hiçbir sır kullanmaz
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://veCREATE EXTERNAL DATA SOURCE,CREATE EXTERNAL TABLE,oracle://,mongodb://veyateradata://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
OPENROWSETkullanın. - PolyBase servis bağımlılıklarından kaçınmak için OLE DB
OPENROWSETkullanın. - OLE DB sağlayıcısı olan herhangi bir veri kaynağına bağlanmak için OLE DB
OPENROWSETkullanı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 TABLEkullanın. - İstatistikler ve sorgu planı optimizasyonu gerektiren üretim iş yüklerinde, PolyBase bağlayıcılarını
CREATE EXTERNAL TABLEile kullanın. - Oracle ve SQL Server gibi uzak kaynaklarda işlemleri yürütmek için
CREATE EXTERNAL TABLEiç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ızcaSELECTiznine ihtiyacı vardır. - Uzak kaynak için SQL doğrulaması mümkün olduğunda PolyBase bağlayıcılarını
CREATE EXTERNAL TABLEkullanı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ıWITHyan tümcesiyle satır içinde tanımlar; harici tabloda ise şemaCREATE EXTERNAL TABLEifadesinde açıkça tanımlanır. -
OPENROWSET(BULK ...),ADMINISTER BULK OPERATIONSveyaADMINISTER DATABASE BULK OPERATIONSgerektirirken, harici bir tablo ise tablo oluşturulduktan sonra yalnızca standartSELECTiznine ihtiyaç duyan kullanıcılar tarafından sorgulanabilir. -
OPENROWSET(BULK ...), sorguda hesaplanan sütunları vefilename()ilefilepath()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 manuelOPENROWSETistatistikler desteklenmiyor. Harici bir tablo, tüm platformlarda tamCREATE 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, birOPENROWSET(BULK ...)veyaINSERT ... SELECTifadesindeSELECTkullanabileceğiniz bir satır seti döndürür. -
BULK INSERTbağımsız bir ifadedir veOPENROWSET(BULK ...)örneğin veyaINSERT INTO <table> SELECT * FROM OPENROWSET(BULK ...)gibi bir sorguSELECT * FROM OPENROWSET(BULK ...)içinde kullanılmalıdır. -
BULK INSERTher zaman doğrudan hedef tabloya yazarken,OPENROWSET(BULK ...)SELECTbir dosyadan herhangi bir yere eklemeden ya da herhangi bir tabloya veya geçici tabloya ekleme yapmadan içe aktarabilir. -
BULK INSERTVeri 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 ...), çevreleyenSELECTiçindeki ifadeleri,CASTöğelerini,WHEREfiltrelerini,JOIN'leri ve hesaplanan sütunları destekler. -
BULK INSERT,FIRE_TRIGGERS,KEEPIDENTITY,KEEPNULLS,TABLOCK,BATCHSIZE,WITHve diğer ipuçları için birCHECK_CONSTRAINTSyan tümcesi kullanır.OPENROWSET(BULK ...), tablo ipuçlarınıINSERT ... SELECT * FROM OPENROWSET(BULK ...) WITH (TABLOCK, IGNORE_CONSTRAINTS, ...)aracılığıyla destekler. -
BULK INSERTbüyük nesne tek değer içe aktarmayı desteklemiyor.OPENROWSET(BULK ...),SINGLE_CLOB, veSINGLE_NCLOBtüm dosyayı sırasıyla bir varbinary(max), varchar(max) veya nvarchar(max) değeri olarak içe aktarmak içinSINGLE_BLOBdestekler. -
BULK INSERTveOPENROWSET(BULK ...)'in her ikisi de XML ve XML dışı biçimindeki dosyaları destekler. - Bulut dosya erişimi için
BULK INSERTparametreDATA_SOURCESQL 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, ancakBULK INSERTS3 uyumlu depolama desteğini desteklemez. ForOPENROWSET(BULK ...),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. -
BULK INSERTParquet 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 desteklenmektedirFORMAT = 'PARQUET'FORMAT = 'DELTA'. Fabric'teki SQL veritabanıFORMAT = 'PARQUET'destekler, ancakFORMAT = 'DELTA'desteklemez. Daha fazla bilgi için bkz. OPENROWSET BULK (Transact-SQL). -
BULK INSERT, hedef tablodaADMINISTER BULK OPERATIONSveyaOPENROWSET(BULK ...)ile birlikteADMINISTER BULK OPERATIONSizni gerektirirken,ADMINISTER DATABASE BULK OPERATIONSiseINSERTveyaADMINISTER DATABASE BULK OPERATIONSgerektirir. -
BULK INSERTBasit veya toplu kayıtlı kurtarma modeli altında minimal logu destekler.TABLOCKOPENROWSET(BULK ...),INSERT ... SELECTveTABLOCKile 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 INSERTbu formatları desteklemiyor. -
OPENROWSET(BULK ...),SINGLE_BLOB,SINGLE_CLOBveyaSINGLE_NCLOBile 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:
- Verileri SQL Server'a aktarmak için Kullan BULK INSERT veya OPENROWSET(BULK...) makalesi, güvenlik konularını içeren ayrıntılı bir rehber sunar.
-
Toplu Veri İçeri ve İhtracatı (SQL Server) makalesi, bcp,
BULK INSERT, veOPENROWSETdahil olmak üzere tüm toplu veri taşıma yöntemlerinin genel bir özetini sunar. -
BULK INSERT (Transact-SQL) makalesi için
BULK INSERTtam T-SQL referansını sağlar. -
OPENROWSET BULK (Transact-SQL) makalesi, için
OPENROWSET(BULK ...)tam T-SQL referansını sağlar. - Azure Blob Depolama'daki toplu erişim örnekleri makalesi, Azure Depolama ile her iki yöntemi yan yana kullanan örnekler sunar.
-
OPENROWSET Toplu Satır Kümesi Sağlayıcısı ile büyük nesne verilerini toplu içe aktarma (SQL Server) makalesi,
SINGLE_CLOB,SINGLE_NCLOBveSINGLE_BLOBörneklerini içerir. -
Veri aktarmak için bir format dosyası (SQL Server) makalesi, her iki yöntemle de format dosyası kullanımını açıklar.
- Toplu içe aktarma sırasında null değerlerinin korunması veya varsayılan değerlerin uygulanması hakkında bilgi için bkz. Toplu içe aktarma sırasında null değerlerini veya varsayılan değerleri koru (SQL Server).
- Toplu aktarma sırasında kimlik değerlerinin korunması hakkında rehberlik için, bkz. Toplu veri aktarırken kimlik değerlerini sakla (SQL Server).
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 |