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ümleri
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Azure Synapse Analytics
Analytics Platform Sistemi (PDW)
Microsoft Fabric'teki Microsoft Fabric SQL veritabanındaKi Microsoft Fabric
Ambarı'ndakiSQL analiz uç noktası
PolyBase ve veri sanallaştırma özellikleri için kullanılan dış verileri sorgulamak için bir dış veri kaynağı oluşturur.
Bu makalede, seçtiğiniz SQL ürünü için söz dizimi, bağımsız değişkenler, açıklamalar, izinler ve örnekler sağlanır.
Ürün seçin
Aşağıdaki satırda, ilgilendiğiniz ürün adını seçin ve yalnızca bu ürünün bilgileri görüntülenir.
* SQL Server *
Azure Synapse'i
Analiz
Genel Bakış: SQL Server 2016
Şunlar için geçerlidir: SQL Server 2016 (13.x)
PolyBase sorguları için bir dış veri kaynağı oluşturur. Dış veri kaynakları, bağlantı kurmak ve şu birincil kullanım örneklerini desteklemek için kullanılır:
- SQL Server'da PolyBase kullanarak veri sanallaştırma ve veri yükü
- veya kullanarak
BULK INSERTtoplu yükleme işlemleriOPENROWSET
Uyarı
Bu söz dizimi SQL Server'ın farklı sürümlerinde farklılık gösterir. Uygun sürümü seçmek için sürüm seçici açılan listesini kullanın.
SQL Server 2019 (15.x) özelliklerini görüntülemek için CREATE EXTERNAL DATA SOURCE adresini ziyaret edin.
SQL Server 2022 (16.x) özelliklerini görüntülemek için CREATE EXTERNAL DATA SOURCE adresini ziyaret edin.
Transact-SQL söz dizimi kuralları
SQL Server 2016 söz dizimi
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ [ , ] CREDENTIAL = <credential_name> ]
[ [ , ] TYPE = { HADOOP } ]
[ [ , ] RESOURCE_MANAGER_LOCATION = '<resource_manager>[:<port>]' )
[ ; ]
Tartışmalar
data_source_name
Veri kaynağı için kullanıcı tanımlı adı belirtir. Ad, SQL Server'daki veritabanında benzersiz olmalıdır.
LOCATION = '<prefix>://<path[:p ort]>'
Bağlantı protokolunu ve dış veri kaynağının yolunu sağlar.
| Dış Veri Kaynağı | Bağlayıcı konumu ön eki | Konum yolu | Ürüne/hizmete göre desteklenen konumlar | Kimlik doğrulama |
|---|---|---|---|---|
| Cloudera CDH veya Hortonworks HDP | hdfs |
<Namenode>[:port] |
SQL Server 2016 (13.x) -SQL Server 2019 (15.x) | Anonim veya temel kimlik doğrulaması |
| Azure Depolama hesabı (V2) | wasb[s] |
<container>@<storage_account>.blob.core.windows.net |
SQL Server 2016'dan (13.x) başlayarak Hiyerarşik Ad Alanı desteklenmiyor |
Azure Depolama hesabı anahtarı |
Konum yolu:
-
<Namenode>= Hadoop kümesindeki öğesinin makine adı, ad hizmeti URI'siNamenodeveya IP adresi. PolyBase, Hadoop kümesi tarafından kullanılan DNS adlarını çözümlemelidir. -
port= Dış veri kaynağının dinlediği bağlantı noktası. Hadoop'ta bağlantı noktası yapılandırma parametresi kullanılarakfs.defaultFSbulunabilir. Varsayılan değer 8020'dir. -
<container>= verileri tutan depolama hesabının kapsayıcısı. Kök kapsayıcılar salt okunur durumdadır, veriler kapsayıcıya geri yazılamaz. -
<storage_account>= Azure kaynağının depolama hesabı adı. -
<server_name>= konak adı. -
<instance_name>= SQL Server adlı örneğin adı. Hedef örnekte çalışan SQL Server Tarayıcı Hizmetiniz varsa kullanılır.
Konumu ayarlarken ek notlar ve yönergeler:
- SQL Server Veritabanı Altyapısı, nesne oluşturulduğunda dış veri kaynağının varlığını doğrulamaz. Doğrulamak için dış veri kaynağını kullanarak bir dış tablo oluşturun.
- Tutarlı sorgu semantiği sağlamak için Hadoop sorgularken tüm tablolar için aynı dış veri kaynağını kullanın.
-
wasbsisteğe bağlıdır, ancak veriler güvenli bir TLS/SSL bağlantısı kullanılarak gönderileceği için Azure Depolama Hesaplarına erişmek için SQL Server 2016'da (13.x) önerilir. - Hadoop yük devretmesi sırasında PolyBase sorgularının başarılı olmasını sağlamak için Hadoop
NamenodekümesininNamenodesanal IP adresini kullanmayı göz önünde bulundurun. Aksi takdirde ALTER EXTERNAL DATA SOURCE komutunu yürüterek yeni konumu işaret edin.
CREDENTIAL = credential_name
Dış veri kaynağında kimlik doğrulaması için veritabanı kapsamlı bir kimlik bilgisi belirtir.
CREDENTIAL yalnızca verilerin güvenliği sağlanmışsa gereklidir.
CREDENTIAL anonim erişime izin veren veri kümeleri için gerekli değildir.
Veritabanı kapsamlı kimlik bilgileri oluşturmak için bkz. CREATE DATABASE SCOPED CREDENTIAL.
TYPE = * [ HADOOP ] *
Yapılandırılan dış veri kaynağının türünü belirtir. SQL Server 2016'da bu parametre her zaman gereklidir ve yalnızca olarak HADOOPbelirtilmelidir. Cloudera CDH, Hortonworks HDP veya Azure Depolama hesabı bağlantılarını destekler. Bu parametrenin davranışı SQL Server'ın sonraki sürümlerinde farklıdır.
Azure Depolama hesabından veri yüklemek için kullanma TYPE = HADOOP örneği için bkz. wasb:// arabirimini kullanarak Azure Depolama'daki verilere erişmek için dış veri kaynağı oluşturma
RESOURCE_MANAGER_LOCATION = *'ResourceManager_URI[:p ort]'
Yalnızca Cloudera CDH, Hortonworks HDP veya bir Azure Depolama hesabına bağlanırken bu isteğe bağlı değeri yapılandırın. Desteklenen Hadoop sürümlerinin tam listesi için bkz. PolyBase bağlantı yapılandırması.
RESOURCE_MANAGER_LOCATION tanımlandığında, sorgu iyileştirici performansı geliştirmek için maliyet tabanlı bir karar verir. MapReduce işi, hesaplamayı Hadoop'a göndermek için kullanılabilir. değerinin RESOURCE_MANAGER_LOCATION belirtilmesi Hadoop ile SQL Server arasında aktarılan veri hacmini önemli ölçüde azaltabilir ve bu da sorgu performansının artmasına neden olabilir.
Resource Manager belirtilmezse, PolyBase sorguları için Hadoop'a işlem gönderme devre dışı bırakılır. Aşağı itme özelliğinin etkinleştirildiği Hadoop'a başvurmak için dış veri kaynağı oluşturma , somut bir örnek ve daha fazla rehberlik sağlar.
dış veri kaynağını oluşturduğunuzda RESOURCE_MANAGER_LOCATION değeri doğrulanmaz. Yanlış bir değer girilmesi, sağlanan değer çözümlenemediğinden, aşağı gönderme denendiği her durumda yürütme sırasında sorgu hatasına neden olabilir.
PolyBase'in hadoop dış veri kaynağıyla düzgün çalışması için aşağıdaki Hadoop kümesi bileşenlerinin bağlantı noktalarının açık olması gerekir:
- HDFS bağlantı noktaları
- Ad Düğümü
- Veri düğümü
- Kaynak Yöneticisi
- İş gönderimi
- İş geçmişi
Bağlantı noktası belirtilmezse, 'hadoop bağlantısı' yapılandırması için geçerli ayar kullanılarak varsayılan değer seçilir.
| Hadoop Bağlantısı | Varsayılan Resource Manager Bağlantı Noktası |
|---|---|
1 |
50300 |
2 |
50300 |
3 |
8021 |
4 |
8032 |
5 |
8050 |
6 |
8032 |
7 |
8050 |
8 |
8032 |
Aşağıdaki tabloda bu bileşenler için varsayılan bağlantı noktaları gösterilmektedir. Hadoop sürüm bağımlılığının yanı sıra varsayılan bağlantı noktası atamasını kullanmayan özel yapılandırma olasılığı da vardır.
| Hadoop küme bileşeni | Varsayılan Bağlantı Noktası |
|---|---|
| NameNode | 8020 |
| DataNode (Veri aktarımı, ayrıcalıksız IPC bağlantı noktası) | 50010 |
| DataNode (Veri aktarımı, ayrıcalık IPC bağlantı noktası) | 1019 |
| Resource Manager İş Gönderimi (Hortonworks 1.3) | 50300 |
| Resource Manager İş Gönderimi (Cloudera 4.3) | 8021 |
| Resource Manager İş Gönderimi (Windows'ta Hortonworks 2.0, Linux'ta Cloudera 5.x) | 8032 |
| Resource Manager İş Gönderimi (Linux üzerinde Hortonworks 2.x, 3.0, Windows üzerinde Hortonworks 2.1-3) | 8050 |
| Resource Manager İş Geçmişi | 10020 |
İzinler
CONTROL SQL Server'daki veritabanında izin gerektirir.
Kilitleme
Nesne üzerinde EXTERNAL DATA SOURCE paylaşılan bir kilit alır.
Güvenlik
PolyBase, dış veri kaynaklarının çoğu için ara sunucu tabanlı kimlik doğrulamasını destekler. Proxy hesabını oluşturmak için veritabanı kapsamlı bir kimlik bilgisi oluşturun.
Örnekler
Önemli
PolyBase'i yükleme ve etkinleştirme hakkında bilgi için bkz. Windows'a PolyBase yükleme
A. Hadoop'a başvurmak için dış veri kaynağı oluşturma
Hortonworks HDP veya Cloudera CDH Hadoop kümenize başvurmak üzere bir dış veri kaynağı oluşturmak için, Hadoop Namenode ve bağlantı noktasının makine adını veya IP adresini belirtin.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
TYPE = HADOOP,
LOCATION = 'hdfs://10.10.10.10:8050'
);
B. Aşağı gönderme etkin hadoop'a başvurmak için dış veri kaynağı oluşturma
RESOURCE_MANAGER_LOCATION PolyBase sorguları için Hadoop'a aşağı itme hesaplamasını etkinleştirme seçeneğini belirtin. Etkinleştirildikten sonra PolyBase, sorgu hesaplamasının Hadoop'a gönderilip gönderilmeyeceğini belirlemek için maliyet tabanlı bir karar verir.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
TYPE = HADOOP,
LOCATION = 'hdfs://10.10.10.10:8020',
RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);
C. Kerberos güvenli Hadoop'a başvurmak için dış veri kaynağı oluşturma
Hadoop kümesinin Kerberos ile güvenli olup olmadığını doğrulamak için Hadoop core-site.xmliçindeki özelliğinin hadoop.security.authentication değerini denetleyin. Kerberos güvenli Hadoop kümesine başvurmak için, Kerberos kullanıcı adınızı ve parolanızı içeren veritabanı kapsamlı bir kimlik bilgisi belirtmeniz gerekir. Veritabanı ana anahtarı, veritabanı kapsamlı kimlik bilgisi gizli dizisini şifrelemek için kullanılır.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Kerberos user name and password.
CREATE DATABASE SCOPED CREDENTIAL HadoopUser1
WITH IDENTITY = '<hadoop_user_name>',
SECRET = '<hadoop_password>';
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
TYPE = HADOOP,
LOCATION = 'hdfs://10.10.10.10:8050',
CREDENTIAL = HadoopUser1,
RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);
D. wasb:// arabirimini kullanarak Azure Depolama'daki verilere erişmek için dış veri kaynağı oluşturma
Bu örnekte dış veri kaynağı adlı logsbir Azure V2 Depolama hesabıdır. Depolama konteyneri .daily Azure Depolama dış veri kaynağı yalnızca veri aktarımı içindir. Koşul aşağı göndermeyi desteklemez. Arabirim aracılığıyla wasb:// verilere erişirken hiyerarşik ad alanları desteklenmez.
Bu örnekte, Azure V2 Depolama hesabında kimlik doğrulaması için veritabanı kapsamlı kimlik bilgilerinin nasıl oluşturulacağı gösterilmektedir. Veritabanı kimlik bilgisi gizli dizisinde Azure Depolama hesabı anahtarını belirtin. Azure Depolama'da kimlik doğrulaması sırasında kullanılmadığından, veritabanı kapsamlı kimlik bilgileri kimliğindeki herhangi bir dizeyi belirtebilirsiniz. veya wasbaracılığıyla wasbs Azure Depolama'ya bağlanırken kimlik doğrulaması, paylaşılan erişim imzası (SAS) ile değil depolama hesabı anahtarıyla yapılmalıdır.
SQL Server 2016'da (13.x), TYPE Azure Depolama'ya HADOOP erişirken bile olarak ayarlanmalıdır.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
WITH IDENTITY = '<my_account>',
SECRET = '<azure_storage_account_key>';
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
TYPE = HADOOP,
LOCATION = 'wasbs://daily@logs.blob.core.windows.net/',
CREDENTIAL = AzureStorageCredential
);
İlgili içerik
Genel Bakış: SQL Server 2017
Şunlar için geçerlidir: SQL Server 2017 (14.x)
PolyBase sorguları için bir dış veri kaynağı oluşturur. Dış veri kaynakları, bağlantı kurmak ve şu birincil kullanım örneklerini desteklemek için kullanılır:
- SQL Server'da PolyBase kullanarak veri sanallaştırma ve veri yükü
- veya kullanarak
BULK INSERTtoplu yükleme işlemleriOPENROWSET
Uyarı
Bu söz dizimi, Linux üzerinde SQL Server'ın farklı sürümlerinde farklılık gösterir. Uygun sürümü seçmek için sürüm seçici açılan listesini kullanın.
SQL Server 2019 (15.x) özelliklerini görüntülemek için CREATE EXTERNAL DATA SOURCE adresini ziyaret edin.
SQL Server 2022 (16.x) özelliklerini görüntülemek için CREATE EXTERNAL DATA SOURCE adresini ziyaret edin.
Uyarı
Bu söz dizimi SQL Server'ın farklı sürümlerinde farklılık gösterir. Uygun sürümü seçmek için sürüm seçici açılan listesini kullanın.
SQL Server 2019 (15.x) özelliklerini görüntülemek için CREATE EXTERNAL DATA SOURCE adresini ziyaret edin.
SQL Server 2022 (16.x) özelliklerini görüntülemek için CREATE EXTERNAL DATA SOURCE adresini ziyaret edin.
Transact-SQL söz dizimi kuralları
SQL Server 2017 söz dizimi
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ [ , ] CREDENTIAL = <credential_name> ]
[ [ , ] TYPE = { HADOOP | BLOB_STORAGE } ]
[ [ , ] RESOURCE_MANAGER_LOCATION = '<resource_manager>[:<port>]' )
[ ; ]
Tartışmalar
data_source_name
Veri kaynağı için kullanıcı tanımlı adı belirtir. Ad, SQL Server'daki veritabanında benzersiz olmalıdır.
LOCATION = '<prefix>://<path[:p ort]>'
Bağlantı protokolunu ve dış veri kaynağının yolunu sağlar.
| Dış Veri Kaynağı | Bağlayıcı konumu ön eki | Konum yolu | Ürüne/hizmete göre desteklenen konumlar | Kimlik doğrulama |
|---|---|---|---|---|
| Cloudera CDH veya Hortonworks HDP | hdfs |
<Namenode>[:port] |
Yalnızca SQL Server 2016 (13.x) ile SQL Server 2019 (15.x) | Anonim veya temel kimlik doğrulaması |
| Azure Depolama hesabı (V2) | wasb[s] |
<container>@<storage_account>.blob.core.windows.net |
SQL Server 2016'dan (13.x) başlayarak Hiyerarşik Ad Alanı desteklenmiyor |
Azure Depolama hesabı anahtarı |
| Toplu İşlemler | https |
<storage_account>.blob.core.windows.net/<container> |
SQL Server 2017 'den (14.x) başlayarak | Paylaşılan erişim imzası (SAS) |
Konum yolu:
-
<Namenode>= Hadoop kümesindeki öğesinin makine adı, ad hizmeti URI'siNamenodeveya IP adresi. PolyBase, Hadoop kümesi tarafından kullanılan DNS adlarını çözümlemelidir. -
port= Dış veri kaynağının dinlediği bağlantı noktası. Hadoop'ta bağlantı noktası yapılandırma parametresi kullanılarakfs.defaultFSbulunabilir. Varsayılan değer 8020'dir. -
<container>= verileri tutan depolama hesabının kapsayıcısı. Kök kapsayıcılar salt okunur durumdadır, veriler kapsayıcıya geri yazılamaz. -
<storage_account>= Azure kaynağının depolama hesabı adı. -
<server_name>= konak adı. -
<instance_name>= SQL Server adlı örneğin adı. Hedef örnekte çalışan SQL Server Tarayıcı Hizmetiniz varsa kullanılır.
Konumu ayarlarken ek notlar ve yönergeler:
- SQL Server Veritabanı Altyapısı, nesne oluşturulduğunda dış veri kaynağının varlığını doğrulamaz. Doğrulamak için dış veri kaynağını kullanarak bir dış tablo oluşturun.
- Tutarlı sorgu semantiği sağlamak için Hadoop sorgularken tüm tablolar için aynı dış veri kaynağını kullanın.
- aracılığıyla
Driver={<Name of Driver>}bağlanırken değeriniODBCbelirtin. -
wasbsisteğe bağlıdır, ancak veriler güvenli bir TLS/SSL bağlantısı kullanılarak gönderileceği için Azure Depolama Hesaplarına erişmek için SQL Server 2017'de (14.x) önerilir. - Hadoop yük devretmesi sırasında PolyBase sorgularının başarılı olmasını sağlamak için Hadoop
NamenodekümesininNamenodesanal IP adresini kullanmayı göz önünde bulundurun. Aksi takdirde ALTER EXTERNAL DATA SOURCE komutunu yürüterek yeni konumu işaret edin.
CREDENTIAL = credential_name
Dış veri kaynağında kimlik doğrulaması için veritabanı kapsamlı bir kimlik bilgisi belirtir.
Kimlik bilgisi oluştururken ek notlar ve yönergeler:
-
CREDENTIALyalnızca verilerin güvenliği sağlanmışsa gereklidir.CREDENTIALanonim erişime izin veren veri kümeleri için gerekli değildir. -
TYPE=BLOB_STORAGEolduğunda kimlik bilgisi kimlik olarak kullanılarakSHARED ACCESS SIGNATUREoluşturulmalıdır. -
TYPE=BLOB_STORAGEyalnızca toplu işlemler için izin verilir; ileTYPE=BLOB_STORAGEbir dış veri kaynağı için dış tablolar oluşturamazsınız. - veya
wasbaracılığıylawasbsAzure Depolama'ya bağlanırken kimlik doğrulaması, paylaşılan erişim imzası (SAS) ile değil depolama hesabı anahtarıyla yapılmalıdır. -
TYPE=HADOOPKimlik bilgilerinin depolama hesabı anahtarı olarakSECRETkullanılarak oluşturulması gerektiğinde.
Paylaşılan erişim imzası oluşturmanın birden çok yolu vardır:
Azure portalı -><Your_Storage_Account> - Paylaşılan erişim imzası -> İzinleri yapılandırma ->> SAS ve bağlantı dizesi oluşturma bölümüne giderek SAS belirteci oluşturabilirsiniz. Daha fazla bilgi için bkz . Paylaşılan erişim imzası oluşturma.
Azure Depolama Gezgini ile SAS oluşturabilir ve yapılandırabilirsiniz.
Sas belirtecini PowerShell, Azure CLI, .NET ve REST API aracılığıyla program aracılığıyla oluşturabilirsiniz. Daha fazla bilgi için bkz . Paylaşılan erişim imzalarını (SAS) kullanarak Azure Depolama kaynaklarına sınırlı erişim verme.
SAS belirteci aşağıdaki gibi yapılandırılmalıdır:
- SAS belirteci oluşturulduğunda belirtecin başında bir soru işareti ('?') bulunur. GİzLİ olarak yapılandırıldığında baştakileri
?hariç tutun. - Geçerli bir süre sonu dönemi kullanın (tüm tarihler UTC saatindedir).
- SAS belirteci oluşturulduğunda belirtecin başında bir soru işareti ('?') bulunur. GİzLİ olarak yapılandırıldığında baştakileri
Yüklenmesi gereken dosya üzerinde en azından okuma izni verin (örneğin
srt=o&sp=r). Farklı kullanım örnekleri için birden çok paylaşılan erişim imzası oluşturulabilir. İzinler aşağıdaki gibi verilmelidir:Eylem İzin Dosyadan veri okuma Okumak Birden çok dosyadan ve alt klasörden veri okuma Okuma ve Listeleme
ve CREDENTIALSHARED ACCESS SIGNATURETYPEile = kullanma BLOB_STORAGE örneği için bkz. Toplu işlemleri yürütmek ve Azure Depolama'dan SQL Veritabanı'na veri almak için dış veri kaynağı oluşturma
Veritabanı kapsamlı kimlik bilgileri oluşturmak için bkz. CREATE DATABASE SCOPED CREDENTIAL.
TYPE = * [ HADOOP | BLOB_STORAGE ] *
Yapılandırılan dış veri kaynağının türünü belirtir. Bu parametre her zaman gerekli değildir ve yalnızca Cloudera CDH, Hortonworks HDP, azure depolama hesabı veya Azure Data Lake Storage 2. Nesil'e bağlanırken belirtilmelidir.
- Dış veri kaynağı Cloudera CDH, Hortonworks HDP, Azure Depolama hesabı veya Azure Data Lake Storage 2. Nesil olduğunda kullanın
HADOOP. - Azure Storage hesabından toplu işlemler yaparken BULK INSERT veya OPENROWSET BULK kullanılarak kullanın
BLOB_STORAGE. SQL Server 2017 (14.x) ile kullanıma sunulmuştur. Azure Depolama'ya karşı kullanmayıHADOOPplanlarken kullanınCREATE EXTERNAL TABLE.
Uyarı
TYPE Azure Depolama'ya HADOOP erişirken bile olarak ayarlanmalıdır.
Azure Depolama hesabından veri yüklemek için kullanma TYPE = HADOOP örneği için bkz. wasb:// arabirimini kullanarak Azure Depolama'daki verilere erişmek için dış veri kaynağı oluşturma
RESOURCE_MANAGER_LOCATION = 'ResourceManager_URI[:p ort]'
Yalnızca Cloudera CDH, Hortonworks HDP veya bir Azure Depolama hesabına bağlanırken bu isteğe bağlı değeri yapılandırın. Desteklenen Hadoop sürümlerinin tam listesi için bkz. PolyBase bağlantı yapılandırması.
RESOURCE_MANAGER_LOCATION tanımlandığında, sorgu iyileştirici performansı geliştirmek için maliyet tabanlı bir karar alır. MapReduce işi, hesaplamayı Hadoop'a göndermek için kullanılabilir. değerinin RESOURCE_MANAGER_LOCATION belirtilmesi Hadoop ile SQL Server arasında aktarılan veri hacmini önemli ölçüde azaltabilir ve bu da sorgu performansının artmasına neden olabilir.
Resource Manager belirtilmezse, PolyBase sorguları için Hadoop'a işlem gönderme devre dışı bırakılır. Aşağı itme özelliğinin etkinleştirildiği Hadoop'a başvurmak için dış veri kaynağı oluşturma , somut bir örnek ve daha fazla rehberlik sağlar.
Dış RESOURCE_MANAGER_LOCATION veri kaynağını oluşturduğunuzda değer doğrulanmaz. Yanlış bir değer girilmesi, sağlanan değer çözümlenemediğinden, aşağı gönderme denendiği her durumda yürütme sırasında sorgu hatasına neden olabilir.
PolyBase'in hadoop dış veri kaynağıyla düzgün çalışması için aşağıdaki Hadoop kümesi bileşenlerinin bağlantı noktalarının açık olması gerekir:
- HDFS bağlantı noktaları
- Ad Düğümü
- Veri düğümü
- Kaynak Yöneticisi
- İş gönderimi
- İş geçmişi
Bağlantı noktası belirtilmezse, 'hadoop bağlantısı' yapılandırması için geçerli ayar kullanılarak varsayılan değer seçilir.
| Hadoop Bağlantısı | Varsayılan Resource Manager Bağlantı Noktası |
|---|---|
1 |
50300 |
2 |
50300 |
3 |
8021 |
4 |
8032 |
5 |
8050 |
6 |
8032 |
7 |
8050 |
8 |
8032 |
Aşağıdaki tabloda bu bileşenler için varsayılan bağlantı noktaları gösterilmektedir. Hadoop sürüm bağımlılığının yanı sıra varsayılan bağlantı noktası atamasını kullanmayan özel yapılandırma olasılığı da vardır.
| Hadoop küme bileşeni | Varsayılan Bağlantı Noktası |
|---|---|
| NameNode | 8020 |
| DataNode (Veri aktarımı, ayrıcalıksız IPC bağlantı noktası) | 50010 |
| DataNode (Veri aktarımı, ayrıcalık IPC bağlantı noktası) | 1019 |
| Resource Manager İş Gönderimi (Hortonworks 1.3) | 50300 |
| Resource Manager İş Gönderimi (Cloudera 4.3) | 8021 |
| Resource Manager İş Gönderimi (Windows'ta Hortonworks 2.0, Linux'ta Cloudera 5.x) | 8032 |
| Resource Manager İş Gönderimi (Linux üzerinde Hortonworks 2.x, 3.0, Windows üzerinde Hortonworks 2.1-3) | 8050 |
| Resource Manager İş Geçmişi | 10020 |
İzinler
CONTROL SQL Server'daki veritabanında izin gerektirir.
Kilitleme
Nesne üzerinde EXTERNAL DATA SOURCE paylaşılan bir kilit alır.
Güvenlik
PolyBase, dış veri kaynaklarının çoğu için ara sunucu tabanlı kimlik doğrulamasını destekler. Proxy hesabını oluşturmak için veritabanı kapsamlı bir kimlik bilgisi oluşturun.
Türü HADOOP olan bir SAS belirteci desteklenmiyor. Bunun yerine yalnızca depolama hesabı erişim anahtarı kullanıldığında tür = BLOB_STORAGE ile desteklenir. Tür HADOOP ve SAS kimlik bilgilerine sahip bir dış veri kaynağı oluşturma girişimi aşağıdaki hatayla başarısız oluyor:
Msg 105019, Level 16, State 1 - EXTERNAL TABLE access failed due to internal error: 'Java exception raised on call to HdfsBridge_Connect. Java exception message: Parameters provided to connect to the Azure storage account aren't valid.: Error [Parameters provided to connect to the Azure storage account aren't valid.] occurred while accessing external file.'
Örnekler
Önemli
PolyBase'i yükleme ve etkinleştirme hakkında bilgi için bkz. Windows'a PolyBase yükleme
A. Hadoop'a başvurmak için dış veri kaynağı oluşturma
Hortonworks HDP veya Cloudera CDH Hadoop kümenize başvurmak üzere bir dış veri kaynağı oluşturmak için, Hadoop Namenode ve bağlantı noktasının makine adını veya IP adresini belirtin.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
TYPE = HADOOP,
LOCATION = 'hdfs://10.10.10.10:8050'
);
B. Aşağı gönderme etkin hadoop'a başvurmak için dış veri kaynağı oluşturma
RESOURCE_MANAGER_LOCATION PolyBase sorguları için Hadoop'a aşağı itme hesaplamasını etkinleştirme seçeneğini belirtin. Etkinleştirildikten sonra PolyBase, sorgu hesaplamasının Hadoop'a gönderilip gönderilmeyeceğini belirlemek için maliyet tabanlı bir karar verir.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
TYPE = HADOOP,
LOCATION = 'hdfs://10.10.10.10:8020',
RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);
C. Kerberos güvenli Hadoop'a başvurmak için dış veri kaynağı oluşturma
Hadoop kümesinin Kerberos ile güvenli olup olmadığını doğrulamak için Hadoop core-site.xmliçindeki özelliğinin hadoop.security.authentication değerini denetleyin. Kerberos güvenli Hadoop kümesine başvurmak için, Kerberos kullanıcı adınızı ve parolanızı içeren veritabanı kapsamlı bir kimlik bilgisi belirtmeniz gerekir. Veritabanı ana anahtarı, veritabanı kapsamlı kimlik bilgisi gizli dizisini şifrelemek için kullanılır.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Kerberos user name and password.
CREATE DATABASE SCOPED CREDENTIAL HadoopUser1
WITH IDENTITY = '<hadoop_user_name>',
SECRET = '<hadoop_password>';
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
TYPE = HADOOP,
LOCATION = 'hdfs://10.10.10.10:8050',
CREDENTIAL = HadoopUser1,
RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);
D. wasb:// arabirimini kullanarak Azure Depolama'daki verilere erişmek için dış veri kaynağı oluşturma
Bu örnekte dış veri kaynağı adlı logsbir Azure V2 Depolama hesabıdır. Depolama konteyneri .daily Azure Depolama dış veri kaynağı yalnızca veri aktarımı içindir. Koşul aşağı göndermeyi desteklemez. Arabirim aracılığıyla wasb:// verilere erişirken hiyerarşik ad alanları desteklenmez. veya wasbaracılığıyla wasbs Azure Depolama'ya bağlanırken kimlik doğrulaması, paylaşılan erişim imzası (SAS) ile değil depolama hesabı anahtarıyla yapılmalıdır.
Bu örnekte, Azure V2 Depolama hesabında kimlik doğrulaması için veritabanı kapsamlı kimlik bilgilerinin nasıl oluşturulacağı gösterilmektedir. Veritabanı kimlik bilgisi gizli dizisinde Azure Depolama hesabı anahtarını belirtin. Azure Depolama'da kimlik doğrulaması sırasında kullanılmadığından, veritabanı kapsamlı kimlik bilgileri kimliğindeki herhangi bir dizeyi belirtebilirsiniz.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
WITH IDENTITY = '<my_account>',
SECRET = '<azure_storage_account_key>';
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
TYPE = HADOOP,
LOCATION = 'wasbs://daily@logs.blob.core.windows.net/',
CREDENTIAL = AzureStorageCredential
);
Örnekler: Toplu işlemler
Önemli
Bir dış veri kaynağını toplu işlemler için yapılandırırken URL'nin sonuna sondaki /, dosya adı veya paylaşılan erişim imzası parametrelerini eklemeyin LOCATION .
E. Azure Depolama'dan veri alma toplu işlemleri için dış veri kaynağı oluşturma
Şunlar için geçerlidir: SQL Server 2017 (14.x) ve sonraki sürümleri.
BULK INSERT veya OPENROWSET BULK kullanarak toplu işlemler için aşağıdaki veri kaynağını kullanın. Kimlik bilgisi kimlik olarak ayarlanmalıdır SHARED ACCESS SIGNATURE , SAS belirtecinde başta ? yer almamalıdır, yüklenmesi gereken dosyada (örneğin srt=o&sp=r) en az okuma iznine sahip olmalıdır ve süre sonu süresi geçerli olmalıdır (tüm tarihler UTC saatindedir). Paylaşılan erişim imzaları hakkında daha fazla bilgi için bkz. Paylaşılan Erişim İmzalarını (SAS) Kullanma.
CREATE DATABASE SCOPED CREDENTIAL AccessAzureInvoices
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = -- Remove ? from the beginning of the SAS token'<azure_storage_account_key>';
CREATE EXTERNAL DATA SOURCE MyAzureInvoices
WITH (
TYPE = BLOB_STORAGE,
LOCATION = 'https://newinvoices.blob.core.windows.net/week3',
CREDENTIAL = AccessAzureInvoices
);
Bu örneği kullanımda görmek için bkz . BULK INSERT.
İlgili içerik
- HARICI VERI KAYNAĞINI DEĞIŞTIR (Transact-SQL)
- VERİTABANI KAPSAMINDA KIMLIK BİLGİSİ OLUŞTUR (Transact-SQL)
- HARICI DOSYA FORMATI OLUŞTUR (Transact-SQL)
- DIŞ TABLO OLUŞTUR (Transact-SQL)
- sys.external_data_sources (Transact-SQL)
- Paylaşılan Erişim İmzalarını (SAS) Kullanma
- PolyBase bağlantı yapılandırması (Transact-SQL)
Genel Bakış: SQL Server 2019
için geçerlidir: SQL Server 2019 (15.x)
PolyBase sorguları için bir dış veri kaynağı oluşturur. Dış veri kaynakları, bağlantı kurmak ve şu birincil kullanım örneklerini desteklemek için kullanılır:
- SQL Server'da PolyBase kullanarak veri sanallaştırma ve veri yükü
- veya kullanarak
BULK INSERTtoplu yükleme işlemleriOPENROWSET
Uyarı
Bu söz dizimi SQL Server'ın farklı sürümlerinde farklılık gösterir. Uygun sürümü seçmek için sürüm seçici açılan listesini kullanın.
SQL Server 2022 (16.x) özelliklerini görüntülemek için CREATE EXTERNAL DATA SOURCE adresini ziyaret edin.
Uyarı
Bu söz dizimi SQL Server'ın farklı sürümlerinde farklılık gösterir. Uygun sürümü seçmek için sürüm seçici açılan listesini kullanın.
SQL Server 2022 (16.x) özelliklerini görüntülemek için CREATE EXTERNAL DATA SOURCE adresini ziyaret edin.
Transact-SQL söz dizimi kuralları
SQL Server 2019 söz dizimi
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ [ , ] CONNECTION_OPTIONS = '<key_value_pairs>'[,...]]
[ [ , ] CREDENTIAL = <credential_name> ]
[ [ , ] PUSHDOWN = { ON | OFF } ]
[ [ , ] TYPE = { HADOOP | BLOB_STORAGE } ]
[ [ , ] RESOURCE_MANAGER_LOCATION = '<resource_manager>[:<port>]' ]
)
[ ; ]
Tartışmalar
data_source_name
Veri kaynağı için kullanıcı tanımlı adı belirtir. Ad, SQL Server'daki veritabanında benzersiz olmalıdır.
LOCATION = '<prefix>://<path[:p ort]>'
Bağlantı protokolunu ve dış veri kaynağının yolunu sağlar.
| Dış Veri Kaynağı | Bağlayıcı konumu ön eki | Konum yolu | Ürüne/hizmete göre desteklenen konumlar | Kimlik doğrulama |
|---|---|---|---|---|
| Cloudera CDH veya Hortonworks HDP | hdfs |
<Namenode>[:port] |
SQL Server 2016 (13.x) -SQL Server 2019 (15.x) | Anonim veya temel kimlik doğrulaması |
| Azure Depolama hesabı (V2) | wasb[s] |
<container>@<storage_account>.blob.core.windows.net |
SQL Server 2016'dan (13.x) başlayarak Hiyerarşik Ad Alanı desteklenmiyor |
Azure Depolama hesabı anahtarı |
| SQL Sunucusu | sqlserver |
<server_name>[\<instance_name>][:port] |
SQL Server 2019 (15.x) ile başlayarak | Yalnızca SQL kimlik doğrulaması |
| Oracle | oracle |
<server_name>[:port] |
SQL Server 2019 (15.x) ile başlayarak | Yalnızca temel kimlik doğrulaması |
| Teradata | teradata |
<server_name>[:port] |
SQL Server 2019 (15.x) ile başlayarak | Yalnızca temel kimlik doğrulaması |
| MongoDB için MongoDB veya Cosmos DB API'si | mongodb |
<server_name>[:port] |
SQL Server 2019 (15.x) ile başlayarak | Yalnızca temel kimlik doğrulaması |
| Genel ODBC | odbc |
<server_name>[:port] |
SQL Server 2019 (15.x) ile başlayarak - Yalnızca Windows | Yalnızca temel kimlik doğrulaması |
| Toplu İşlemler | https |
<storage_account>.blob.core.windows.net/<container> |
SQL Server 2017 'den (14.x) başlayarak | Paylaşılan erişim imzası (SAS) |
| Azure Data Lake Storage (İkinci Nesil) | abfs[s] |
abfss://<container>@<storage_account>.dfs.core.windows.net |
SQL Server 2019 (15.x) CU11+ ile başlayarak. | Depolama Erişim Anahtarı |
| SQL Server Büyük Veri Kümeleri veri havuzu | sqldatapool |
sqldatapool://controller-svc/default |
Yalnızca SQL Server 2019 Büyük Veri Kümelerinde desteklenir | Yalnızca temel kimlik doğrulaması |
| SQL Server Büyük Veri Kümeleri depolama havuzu | sqlhdfs |
sqlhdfs://controller-svc/default |
Yalnızca SQL Server 2019 Büyük Veri Kümelerinde desteklenir | Yalnızca temel kimlik doğrulaması |
Konum yolu:
-
<Namenode>= Hadoop kümesindeki öğesinin makine adı, ad hizmeti URI'siNamenodeveya IP adresi. PolyBase, Hadoop kümesi tarafından kullanılan DNS adlarını çözümlemelidir. -
port= Dış veri kaynağının dinlediği bağlantı noktası. Hadoop'ta bağlantı noktası yapılandırma parametresi kullanılarakfs.defaultFSbulunabilir. Varsayılan değer 8020'dir. -
<container>= verileri tutan depolama hesabının kapsayıcısı. Kök kapsayıcılar salt okunur durumdadır, veriler kapsayıcıya geri yazılamaz. -
<storage_account>= Azure kaynağının depolama hesabı adı. -
<server_name>= konak adı. -
<instance_name>= SQL Server adlı örneğin adı. Hedef örnekte çalışan SQL Server Tarayıcı Hizmetiniz varsa kullanılır.
Konumu ayarlarken ek notlar ve yönergeler:
- SQL Server Veritabanı Altyapısı, nesne oluşturulduğunda dış veri kaynağının varlığını doğrulamaz. Doğrulamak için dış veri kaynağını kullanarak bir dış tablo oluşturun.
- Tutarlı sorgu semantiği sağlamak için Hadoop sorgularken tüm tablolar için aynı dış veri kaynağını kullanın.
- Bağlayıcıyı
sqlserverkullanarak SQL Server 2019'u (15.x) başka bir SQL Server'a veya Azure SQL Veritabanı'na bağlayabilirsiniz. - aracılığıyla
Driver={<Name of Driver>}bağlanırken değeriniODBCbelirtin. - veya
wasbskullanmakabfssisteğe bağlıdır, ancak veriler güvenli bir TLS/SSL bağlantısı kullanılarak gönderileceği için Azure Depolama Hesaplarına erişmek için SQL Server 2019'da (15.x) önerilir. - VEYA
abfsAPI'leriabfss, SQL Server 2019 (15.x) CU11'den başlayarak Azure Depolama Hesaplarına erişirken desteklenir. Daha fazla bilgi için bkz. Azure Blob Dosya Sistemi sürücüsü (ABFS). - Kullanan
abfs[s]Azure Depolama Hesapları (V2) için Hiyerarşik Ad Alanı seçeneği, SQL Server 2019 (15.x) CU11+ ile başlayarak Azure Data Lake Storage 2. Nesil aracılığıyla desteklenir. Hiyerarşik Ad Alanı seçeneği aksi takdirde desteklenmez ve bu seçenek devre dışı bırakılmalıdır. - Hadoop yük devretmesi sırasında PolyBase sorgularının başarılı olmasını sağlamak için Hadoop
NamenodekümesininNamenodesanal IP adresini kullanmayı göz önünde bulundurun. Aksi takdirde ALTER EXTERNAL DATA SOURCE komutunu yürüterek yeni konumu işaret edin. -
sqlhdfsvesqldatapooltürleri, büyük bir veri kümesinin ana örneğiyle depolama havuzu arasında bağlantı kurmak için desteklenir. Cloudera CDH veya Hortonworks HDP için kullanınhdfs. SQL Server Büyük Veri Kümeleri depolama havuzlarını sorgulamak için kullanmasqlhdfshakkında daha fazla bilgi için bkz. SQL Server 2019 Büyük Veri Kümesinde HDFS Sorgulama. - HDFS Cloudera (CDP) ve Hortonworks (HDP) dış veri kaynakları için SQL Server desteği kullanımdan kaldırılmıştır ve SQL Server 2022 (16.x) ve sonraki sürümlere dahil değildir. Daha fazla bilgi için bkz. Microsoft SQL Server platformunda Büyük veri seçenekleri.
CONNECTION_OPTIONS = key_value_pair
SQL Server 2019 (15.x) ve sonraki sürümler için belirtildi. Dış veri kaynağına bağlanırken ODBC ek seçenekleri belirtir. Birden çok bağlantı seçeneği kullanmak için bunları noktalı virgülle ayırın.
Genel ODBC bağlantıların yanı sıra SQL Server, Oracle, Teradata, MongoDB ve MongoDB için Azure Cosmos DB API'sine ODBC yönelik yerleşik bağlayıcılar için geçerlidir.
key_value_pair, belirli bir bağlantı seçeneğinin anahtar sözcüğü ve değeridir. Kullanılabilir anahtar sözcükler ve değerler dış veri kaynağı türüne bağlıdır. Sürücünün adı en düşük değer olarak gereklidir, ancak veya gibi APP='<your_application_name>'ApplicationIntent= ReadOnly|ReadWrite ayarlamak için de yararlı olan ve sorun gidermeye yardımcı olabilecek başka seçenekler de vardır.
Olası anahtar değer çiftleri, dış veri kaynağı satıcısı için sağlayıcıya özgüdür. Her sağlayıcı hakkında daha fazla bilgi için bkz. CREATE EXTERNAL DATA SOURCE (Transact-SQL) CONNECTION_OPTIONS.
SQL Server 2019 (15.x) Toplu Güncelleştirme 19 ve sonraki sürümleri Oracle TNS dosyalarını desteklemek için ek anahtar sözcükler sağlar:
- anahtar sözcüğü
TNSNamesFile, Oracle sunucusunda bulunan dosyanın dosya yolutnsnames.orabelirtir. - anahtar sözcüğü
ServerName, içinde konaktnsnames.oraadını ve bağlantı noktasını değiştirmek için kullanılacak diğer adı belirtir.
Pushdown = ON | KAPALI
Yalnızca SQL Server 2019 (15.x) için belirtilir. Hesaplamanın dış veri kaynağına gönderilip gönderilemeyeceğini belirtir. Varsayılan olarak ON'dır .
PUSHDOWN SQL Server, Oracle, Teradata, MongoDB, MongoDB için Azure Cosmos DB API'sine veya dış veri kaynağı düzeyinde ODBC'ye bağlanırken desteklenir.
Sorgu düzeyinde aşağı göndermeyi etkinleştirme veya devre dışı bırakma işlemi , EXTERNALPUSHDOWN ipucu aracılığıyla sağlanır.
CREDENTIAL = credential_name
Dış veri kaynağında kimlik doğrulaması için veritabanı kapsamlı bir kimlik bilgisi belirtir.
Kimlik bilgisi oluştururken ek notlar ve yönergeler:
-
CREDENTIALyalnızca verilerin güvenliği sağlanmışsa gereklidir.CREDENTIALanonim erişime izin veren veri kümeleri için gerekli değildir. -
TYPE=BLOB_STORAGEolduğunda kimlik bilgisi kimlik olarak kullanılarakSHARED ACCESS SIGNATUREoluşturulmalıdır. -
TYPE=BLOB_STORAGEyalnızca toplu işlemler için izin verilir; ileTYPE=BLOB_STORAGEbir dış veri kaynağı için dış tablolar oluşturamazsınız.
Paylaşılan erişim imzası oluşturmanın birden çok yolu vardır:
Azure portalı -><Your_Storage_Account> - Paylaşılan erişim imzası -> İzinleri yapılandırma ->> SAS ve bağlantı dizesi oluşturma bölümüne giderek SAS belirteci oluşturabilirsiniz. Daha fazla bilgi için bkz . Paylaşılan erişim imzası oluşturma.
Azure Depolama Gezgini ile SAS oluşturabilir ve yapılandırabilirsiniz.
Sas belirtecini PowerShell, Azure CLI, .NET ve REST API aracılığıyla program aracılığıyla oluşturabilirsiniz. Daha fazla bilgi için bkz . Paylaşılan erişim imzalarını (SAS) kullanarak Azure Depolama kaynaklarına sınırlı erişim verme.
SAS belirteci aşağıdaki gibi yapılandırılmalıdır:
- SAS belirteci oluşturulduğunda belirtecin başında bir soru işareti ('?') bulunur. GİzLİ olarak yapılandırıldığında baştakileri
?hariç tutun. - Geçerli bir süre sonu dönemi kullanın (tüm tarihler UTC saatindedir).
- SAS belirteci oluşturulduğunda belirtecin başında bir soru işareti ('?') bulunur. GİzLİ olarak yapılandırıldığında baştakileri
Yüklenmesi gereken dosya üzerinde en azından okuma izni verin (örneğin
srt=o&sp=r). Farklı kullanım örnekleri için birden çok paylaşılan erişim imzası oluşturulabilir. İzinler aşağıdaki gibi verilmelidir:Eylem İzin Dosyadan veri okuma Okumak Birden çok dosyadan ve alt klasörden veri okuma Okuma ve Listeleme
ve CREDENTIALSHARED ACCESS SIGNATURETYPEile = kullanma BLOB_STORAGE örneği için bkz. Toplu işlemleri yürütmek ve Azure Depolama'dan SQL Veritabanı'na veri almak için dış veri kaynağı oluşturma
Veritabanı kapsamlı kimlik bilgileri oluşturmak için bkz. CREATE DATABASE SCOPED CREDENTIAL.
TYPE = * [ HADOOP | BLOB_STORAGE ] *
Yapılandırılan dış veri kaynağının türünü belirtir. Bu parametre her zaman gerekli değildir ve yalnızca Cloudera CDH, Hortonworks HDP, azure depolama hesabı veya Azure Data Lake Storage 2. Nesil'e bağlanırken belirtilmelidir.
- SQL Server 2019'da (15.x), Bir Azure Depolama hesabı olan Cloudera CDH, Hortonworks HDP'ye bağlanmadığınız sürece TYPE belirtmeyin.
- Dış veri kaynağı Cloudera CDH, Hortonworks HDP, Azure Depolama hesabı veya Azure Data Lake Storage 2. Nesil olduğunda kullanın
HADOOP. -
BLOB_STORAGEveya OPENROWSET BULK ile SQL Server 2017 (14.x) kullanarak Azure Depolama hesabından toplu işlemleri yürütürken kullanın. Azure Depolama'da EXTERNAL TABLE oluşturmak istediğinizde kullanınHADOOP. - HDFS Cloudera (CDP) ve Hortonworks (HDP) dış veri kaynakları için SQL Server desteği kullanımdan kaldırılmıştır ve SQL Server 2022 (16.x) ve sonraki sürümlere dahil değildir. Daha fazla bilgi için bkz. Microsoft SQL Server platformunda Büyük veri seçenekleri.
Azure Depolama hesabından veri yüklemek için kullanma TYPE = HADOOP örneği için bkz. wasb:// arabirimini kullanarak Azure Depolama'daki verilere erişmek için dış veri kaynağı oluşturma.
RESOURCE_MANAGER_LOCATION = 'ResourceManager_URI[:p ort]'
SQL Server 2019'da (15.x), Bir Azure Depolama hesabı olan Cloudera CDH, Hortonworks HDP'ye bağlanmadığınız sürece RESOURCE_MANAGER_LOCATION belirtmeyin.
Yalnızca Cloudera CDH, Hortonworks HDP veya bir Azure Depolama hesabına bağlanırken bu isteğe bağlı değeri yapılandırın. Desteklenen Hadoop sürümlerinin tam listesi için bkz. PolyBase bağlantı yapılandırması.
RESOURCE_MANAGER_LOCATION tanımlandığında, sorgu iyileştirici performansı geliştirmek için maliyet tabanlı bir karar verir. MapReduce işi, hesaplamayı Hadoop'a göndermek için kullanılabilir. değerinin RESOURCE_MANAGER_LOCATION belirtilmesi Hadoop ile SQL Server arasında aktarılan veri hacmini önemli ölçüde azaltabilir ve bu da sorgu performansının artmasına neden olabilir.
Resource Manager belirtilmezse, PolyBase sorguları için Hadoop'a işlem gönderme devre dışı bırakılır. Aşağı itme özelliğinin etkinleştirildiği Hadoop'a başvurmak için dış veri kaynağı oluşturma , somut bir örnek ve daha fazla rehberlik sağlar.
dış veri kaynağını oluşturduğunuzda RESOURCE_MANAGER_LOCATION değeri doğrulanmaz. Yanlış bir değer girilmesi, sağlanan değer çözümlenemediğinden, aşağı gönderme denendiği her durumda yürütme sırasında sorgu hatasına neden olabilir.
PolyBase'in hadoop dış veri kaynağıyla düzgün çalışması için aşağıdaki Hadoop kümesi bileşenlerinin bağlantı noktalarının açık olması gerekir:
- HDFS bağlantı noktaları
- Ad Düğümü
- Veri düğümü
- Kaynak Yöneticisi
- İş gönderimi
- İş geçmişi
Bağlantı noktası belirtilmezse, 'hadoop bağlantısı' yapılandırması için geçerli ayar kullanılarak varsayılan değer seçilir.
| Hadoop Bağlantısı | Varsayılan Resource Manager Bağlantı Noktası |
|---|---|
1 |
50300 |
2 |
50300 |
3 |
8021 |
4 |
8032 |
5 |
8050 |
6 |
8032 |
7 |
8050 |
8 |
8032 |
Aşağıdaki tabloda bu bileşenler için varsayılan bağlantı noktaları gösterilmektedir. Hadoop sürüm bağımlılığının yanı sıra varsayılan bağlantı noktası atamasını kullanmayan özel yapılandırma olasılığı da vardır.
| Hadoop küme bileşeni | Varsayılan Bağlantı Noktası |
|---|---|
| NameNode | 8020 |
| DataNode (Veri aktarımı, ayrıcalıksız IPC bağlantı noktası) | 50010 |
| DataNode (Veri aktarımı, ayrıcalık IPC bağlantı noktası) | 1019 |
| Resource Manager İş Gönderimi (Hortonworks 1.3) | 50300 |
| Resource Manager İş Gönderimi (Cloudera 4.3) | 8021 |
| Resource Manager İş Gönderimi (Windows'ta Hortonworks 2.0, Linux'ta Cloudera 5.x) | 8032 |
| Resource Manager İş Gönderimi (Linux üzerinde Hortonworks 2.x, 3.0, Windows üzerinde Hortonworks 2.1-3) | 8050 |
| Resource Manager İş Geçmişi | 10020 |
İzinler
CONTROL SQL Server'daki veritabanında izin gerektirir.
Kilitleme
Nesne üzerinde EXTERNAL DATA SOURCE paylaşılan bir kilit alır.
Güvenlik
PolyBase, dış veri kaynaklarının çoğu için ara sunucu tabanlı kimlik doğrulamasını destekler. Proxy hesabını oluşturmak için veritabanı kapsamlı bir kimlik bilgisi oluşturun.
SQL Server 2019 Büyük Veri Kümesi'ndeki depolama veya veri havuzuna bağlandığınızda, kullanıcının kimlik bilgileri arka uç sistemine geçirilir. Geçiş kimlik doğrulamasını etkinleştirmek için veri havuzunun kendisinde oturum açma bilgileri oluşturun.
Türü HADOOP olan bir SAS belirteci desteklenmiyor. Bunun yerine yalnızca depolama hesabı erişim anahtarı kullanıldığında tür = BLOB_STORAGE ile desteklenir. Tür HADOOP ve SAS kimlik bilgilerine sahip bir dış veri kaynağı oluşturma girişimi aşağıdaki hatayla başarısız oluyor:
Msg 105019, Level 16, State 1 - EXTERNAL TABLE access failed due to internal error: 'Java exception raised on call to HdfsBridge_Connect. Java exception message: Parameters provided to connect to the Azure storage account aren't valid.: Error [Parameters provided to connect to the Azure storage account aren't valid.] occurred while accessing external file.'
Örnekler
Önemli
PolyBase'i yükleme ve etkinleştirme hakkında bilgi için bkz. Windows'a PolyBase yükleme
A. Oracle'a başvurmak için SQL Server 2019'da dış veri kaynağı oluşturma
Oracle'a başvuran bir dış veri kaynağı oluşturmak için veritabanı kapsamlı bir kimlik bilgileriniz olduğundan emin olun. Ayrıca, isteğe bağlı olarak bu veri kaynağında hesaplamanın aşağı itilmesi özelliğini etkinleştirebilir veya devre dışı bırakabilirsiniz.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL OracleProxyAccount
WITH IDENTITY = 'oracle_username',
SECRET = 'oracle_password';
CREATE EXTERNAL DATA SOURCE MyOracleServer
WITH (
LOCATION = 'oracle://145.145.145.145:1521',
PUSHDOWN = ON,
CREDENTIAL = OracleProxyAccount
);
İsteğe bağlı olarak, Oracle'a dış veri kaynağı ayrıntılı erişim denetimi sağlamak için ara sunucu kimlik doğrulamasını kullanabilir. Ara sunucu kullanıcısı, kimliğine bürünülen kullanıcıyla karşılaştırıldığında sınırlı erişime sahip olacak şekilde yapılandırılabilir.
CREATE DATABASE SCOPED CREDENTIAL [OracleProxyCredential]
WITH IDENTITY = 'oracle_username',
SECRET = 'oracle_password';
CREATE EXTERNAL DATA SOURCE [OracleSalesSrvr]
WITH (
LOCATION = 'oracle://145.145.145.145:1521',
CONNECTION_OPTIONS = 'ImpersonateUser=%CURRENT_USER',
CREDENTIAL = [OracleProxyCredential]
);
Alternatif olarak, TNS kimlik doğrulamayı kullanabilirsiniz.
SQL Server 2019 (15.x) Toplu Güncelleştirme 19'dan başlayarak, CREATE EXTERNAL DATA SOURCE artık Oracle'a bağlanırken TNS dosyalarının kullanımını destekliyor.
CONNECTION_OPTIONS parametresi genişletildi ve şimdi dosyaya TNSNamesFile göz atmak ServerName ve sunucuyla bağlantı kurmak için ve değişken olarak ve kullanıyortnsnames.ora.
Aşağıdaki örnekte, çalışma zamanı sırasında SQL Server tnsnames.ora tarafından TNSNamesFile belirtilen dosya konumunu ve tarafından ServerNamebelirtilen konak ve ağ bağlantı noktasını arar.
CREATE EXTERNAL DATA SOURCE [external_data_source_name]
WITH (
LOCATION = N'oracle://XE',
CREDENTIAL = [OracleCredentialTest],
CONNECTION_OPTIONS = N'TNSNamesFile=C:\Temp\tnsnames.ora;ServerName=XE'
);
MongoDB gibi diğer veri kaynaklarına yönelik ek örnekler için bkz. PolyBase'i MongoDB'deki dış verilere erişmek için yapılandırma.
B. Hadoop'a başvurmak için dış veri kaynağı oluşturma
Hortonworks HDP veya Cloudera CDH Hadoop kümenize başvurmak üzere bir dış veri kaynağı oluşturmak için, Hadoop Namenode ve bağlantı noktasının makine adını veya IP adresini belirtin.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
TYPE = HADOOP,
LOCATION = 'hdfs://10.10.10.10:8050'
);
C. Aşağı gönderme etkin hadoop'a başvurmak için dış veri kaynağı oluşturma
RESOURCE_MANAGER_LOCATION PolyBase sorguları için Hadoop'a aşağı itme hesaplamasını etkinleştirme seçeneğini belirtin. Etkinleştirildikten sonra PolyBase, sorgu hesaplamasının Hadoop'a gönderilip gönderilmeyeceğini belirlemek için maliyet tabanlı bir karar verir.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
TYPE = HADOOP,
LOCATION = 'hdfs://10.10.10.10:8020',
RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);
D. Kerberos güvenli Hadoop'a başvurmak için dış veri kaynağı oluşturma
Hadoop kümesinin Kerberos ile güvenli olup olmadığını doğrulamak için Hadoop core-site.xmliçindeki özelliğinin hadoop.security.authentication değerini denetleyin. Kerberos güvenli Hadoop kümesine başvurmak için, Kerberos kullanıcı adınızı ve parolanızı içeren veritabanı kapsamlı bir kimlik bilgisi belirtmeniz gerekir. Veritabanı ana anahtarı, veritabanı kapsamlı kimlik bilgisi gizli dizisini şifrelemek için kullanılır.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Kerberos user name and password.
CREATE DATABASE SCOPED CREDENTIAL HadoopUser1
WITH IDENTITY = '<hadoop_user_name>',
SECRET = '<hadoop_password>';
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
TYPE = HADOOP,
LOCATION = 'hdfs://10.10.10.10:8050',
CREDENTIAL = HadoopUser1,
RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);
E. wasb:// arabirimini kullanarak Azure Depolama'daki verilere erişmek için dış veri kaynağı oluşturma
Bu örnekte dış veri kaynağı adlı logsbir Azure V2 Depolama hesabıdır. Depolama konteyneri .daily Azure Depolama dış veri kaynağı yalnızca veri aktarımı içindir. Koşul aşağı göndermeyi desteklemez. Arabirim aracılığıyla wasb:// verilere erişirken hiyerarşik ad alanları desteklenmez. veya wasbaracılığıyla wasbs Azure Depolama'ya bağlanırken kimlik doğrulaması, paylaşılan erişim imzası (SAS) ile değil depolama hesabı anahtarıyla yapılmalıdır.
Bu örnekte, Azure V2 Depolama hesabında kimlik doğrulaması için veritabanı kapsamlı kimlik bilgilerinin nasıl oluşturulacağı gösterilmektedir. Veritabanı kimlik bilgisi gizli dizisinde Azure Depolama hesabı anahtarını belirtin. Azure Depolama'da kimlik doğrulaması sırasında kullanılmadığından, veritabanı kapsamlı kimlik bilgileri kimliğindeki herhangi bir dizeyi belirtebilirsiniz.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
WITH IDENTITY = '<my_account>',
SECRET = '<azure_storage_account_key>';
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
TYPE = HADOOP,
LOCATION = 'wasbs://daily@logs.blob.core.windows.net/',
CREDENTIAL = AzureStorageCredential
);
F. PolyBase bağlantısı aracılığıyla örnek adlı bir SQL Server'a başvurmak için dış veri kaynağı oluşturma
Şunlar için geçerlidir: SQL Server 2019 (15.x) ve üzeri
SQL Server'ın adlandırılmış bir örneğine başvuran bir dış veri kaynağı oluşturmak için örnek adını belirtmek için kullanın CONNECTION_OPTIONS .
Aşağıdaki örnekte konak WINSQL2019 adı ve SQL2019 örnek adıdır.
'Server=%s\SQL2019' anahtar değer çiftidir.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2019',
CONNECTION_OPTIONS = 'Server=%s\SQL2019',
CREDENTIAL = SQLServerCredentials
);
Alternatif olarak, sql server varsayılan örneğine bağlanmak için bir bağlantı noktası kullanabilirsiniz.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2019:58137',
CREDENTIAL = SQLServerCredentials
);
G. Always On kullanılabilirlik grubunun okunabilir ikincil çoğaltmasına başvurmak için dış veri kaynağı oluşturma
Şunlar için geçerlidir: SQL Server 2019 (15.x) ve üzeri
SQL Server'ın okunabilir ikincil çoğaltmasına başvuran bir dış veri kaynağı oluşturmak için öğesini CONNECTION_OPTIONS kullanarak belirtin ApplicationIntent=ReadOnly. Ayrıca, kullanılabilirlik veritabanını içinde Database={dbname}olarak CONNECTION_OPTIONS ayarlamanız veya kullanılabilirlik veritabanını, veritabanı kapsamlı kimlik bilgileri için kullanılan oturum açma bilgilerinin varsayılan veritabanı olarak ayarlamanız gerekir. Bunu, kullanılabilirlik grubunun tüm kullanılabilirlik çoğaltmalarında yapmanız gerekir.
İlk olarak, SQL kimliği doğrulanmış oturum açma bilgileri için kimlik bilgilerini depolayarak veritabanı kapsamlı kimlik bilgilerini oluşturun. PolyBase için SQL ODBC Bağlayıcısı yalnızca temel kimlik doğrulamasını destekler. Veritabanı kapsamlı bir kimlik bilgisi oluşturmadan önce, veritabanının kimlik bilgilerini korumak için bir ana anahtarı olmalıdır. Daha fazla bilgi için bkz. CREATE MASTER KEY . Aşağıdaki örnek, veritabanı kapsamlı bir kimlik bilgisi oluşturur, kendi oturum açma bilgilerinizi ve parolanızı sağlar.
CREATE DATABASE SCOPED CREDENTIAL SQLServerCredentials
WITH IDENTITY = 'username',
SECRET = 'password';
Ardından yeni dış veri kaynağını oluşturun.
veritabanı kapsamlı kimlik bilgilerindeki Database=dbname oturum açma bilgileri için kullanılabilirlik veritabanını varsayılan veritabanı olarak dahil CONNECTION_OPTIONS etmeniz veya ayarlamanız fark etmeksizin, LOCATION parametresinde CREATE EXTERNAL TABLE deyiminde veritabanı adını üç parçalı bir adla sağlamanız gerekir. Örnek için bkz . EXTERNAL TABLE OLUŞTURMA.
Aşağıdaki örnekte kullanılabilirlik WINSQL2019AGL grubu dinleyici adı ve dbname CREATE EXTERNAL TABLE deyiminin hedefi olacak veritabanının adıdır.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2019AGL',
CONNECTION_OPTIONS = 'ApplicationIntent=ReadOnly; Database=dbname',
CREDENTIAL = SQLServerCredentials
);
Sistem görünümünde ApplicationIntentbir dış tablo belirtip sys.servers oluşturarak kullanılabilirlik grubunun yeniden yönlendirme davranışını gösterebilirsiniz. Aşağıdaki örnek betikte iki dış veri kaynağı oluşturulur ve her biri için bir dış tablo oluşturulur. Hangi sunucunun bağlantıya yanıt verdiğini test etmek için görünümleri kullanın. Benzer sonuçlar salt okunur yönlendirme özelliği aracılığıyla da elde edilebilir. Daha fazla bilgi için bkz. Always On kullanılabilirlik grubu için salt okunur yönlendirmeyi yapılandırma.
CREATE EXTERNAL DATA SOURCE [DataSource_SQLInstanceListener_ReadOnlyIntent]
WITH (
LOCATION = 'sqlserver://WINSQL2019AGL',
CONNECTION_OPTIONS = 'ApplicationIntent=ReadOnly; Database=dbname',
CREDENTIAL = [SQLServerCredentials]
);
GO
CREATE EXTERNAL DATA SOURCE [DataSource_SQLInstanceListener_ReadWriteIntent]
WITH (
LOCATION = 'sqlserver://WINSQL2019AGL',
CONNECTION_OPTIONS = 'ApplicationIntent=ReadWrite',
CREDENTIAL = [SQLServerCredentials]
);
GO
Kullanılabilirlik grubundaki veritabanının içinde, döndürülecek sys.servers bir görünüm ve sorguya hangi çoğaltmanın yanıt verdiğini belirlemenize yardımcı olan yerel örneğin adını oluşturun. Daha fazla bilgi için bkz. sys.servers.
CREATE VIEW vw_sys_servers
AS
SELECT [name]
FROM sys.servers
WHERE server_id = 0;
GO
Ardından kaynak örnekte bir dış tablo oluşturun:
CREATE EXTERNAL TABLE vw_sys_servers_ro (name SYSNAME NOT NULL)
WITH (
DATA_SOURCE = [DataSource_SQLInstanceListener_ReadOnlyIntent],
LOCATION = N'dbname.dbo.vw_sys_servers'
);
GO
CREATE EXTERNAL TABLE vw_sys_servers_rw (name SYSNAME NOT NULL)
WITH (
DATA_SOURCE = [DataSource_SQLInstanceListener_ReadWriteIntent],
LOCATION = N'dbname.dbo.vw_sys_servers'
);
GO
SELECT [name]
FROM dbo.vw_sys_servers_ro;--should return secondary replica instance
SELECT [name]
FROM dbo.vw_sys_servers_rw;--should return primary replica instance
GO
Örnekler: Toplu işlemler
Önemli
Bir dış veri kaynağını toplu işlemler için yapılandırırken URL'nin sonuna sondaki /, dosya adı veya paylaşılan erişim imzası parametrelerini eklemeyin LOCATION .
H. Azure Depolama'dan veri alma toplu işlemleri için dış veri kaynağı oluşturma
Şunlar için geçerlidir: SQL Server 2017 (14.x) ve SQL Server 2019 (15.x)
BULK INSERT veya OPENROWSET BULK kullanarak toplu işlemler için aşağıdaki veri kaynağını kullanın. Kimlik bilgisi kimlik olarak ayarlanmalıdır SHARED ACCESS SIGNATURE , SAS belirtecinde başta ? yer almamalıdır, yüklenmesi gereken dosyada (örneğin srt=o&sp=r) en az okuma iznine sahip olmalıdır ve süre sonu süresi geçerli olmalıdır (tüm tarihler UTC saatindedir). Paylaşılan erişim imzaları hakkında daha fazla bilgi için bkz. Paylaşılan Erişim İmzalarını (SAS) Kullanma.
CREATE DATABASE SCOPED CREDENTIAL AccessAzureInvoices
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = -- Remove ? from the beginning of the SAS token'<azure_shared_access_signature>';
CREATE EXTERNAL DATA SOURCE MyAzureInvoices
WITH (
TYPE = BLOB_STORAGE,
LOCATION = 'https://newinvoices.blob.core.windows.net/week3',
CREDENTIAL = AccessAzureInvoices
);
Bu örneği kullanımda görmek için bkz . BULK INSERT.
Ben. abfs:// arabirimini kullanarak Azure Depolama'daki verilere erişmek için dış veri kaynağı oluşturma
Şunlar için geçerlidir: SQL Server 2019 (15.x) CU11 ve üzeri
Bu örnekte dış veri kaynağı, Azure logs Lake Storage 2. Nesil hesabıdır. Depolama konteyneri .daily Koşul gönderimi desteklenmediğinden Azure Data Lake Storage 2. Nesil dış veri kaynağı yalnızca veri aktarımına yöneliktir.
Bu örnekte, Azure Data Lake Storage 2. Nesil hesabında kimlik doğrulaması için veritabanı kapsamlı kimlik bilgilerinin nasıl oluşturulacağı gösterilmektedir. Veritabanı kimlik bilgisi gizli dizisinde Azure Depolama hesabı anahtarını belirtin. Azure Depolama'da kimlik doğrulaması sırasında kullanılmadığından, veritabanı kapsamlı kimlik bilgileri kimliğindeki herhangi bir dizeyi belirtebilirsiniz.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
WITH IDENTITY = '<my_account>',
SECRET = '<azure_storage_account_key>';
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
TYPE = HADOOP,
LOCATION = 'abfss://daily@logs.dfs.core.windows.net/',
CREDENTIAL = AzureStorageCredential
);
J. PostgreSQL'e genel ODBC kullanarak dış veri kaynağı oluşturma
Önceki örneklerde olduğu gibi, önce bir veritabanı ana anahtarı ve veritabanı kapsamlı kimlik bilgileri oluşturun. Dış veri kaynağı için veritabanı kapsamlı kimlik bilgileri kullanılır. Bu örnekte, sunucuda PostgreSQL için genel bir ODBC veri sağlayıcısının yüklü olduğu da varsayılır.
Bu örnekte genel ODBC veri sağlayıcısı, varsayılan TCP 5432 bağlantı noktası kullanılarak PostgreSQL sunucusunun tam etki alanı adının olduğu POSTGRES1aynı ağdaki bir PostgreSQL veritabanı sunucusuna bağlanmak için kullanılır.
CREATE EXTERNAL DATA SOURCE POSTGRES1
WITH (
LOCATION = 'odbc://POSTGRES1.domain:5432',
CONNECTION_OPTIONS = 'Driver={PostgreSQL Unicode(x64)};',
CREDENTIAL = postgres_credential
);
İlgili içerik
- HARICI VERI KAYNAĞINI DEĞIŞTIR (Transact-SQL)
- VERİTABANI KAPSAMINDA KIMLIK BİLGİSİ OLUŞTUR (Transact-SQL)
- HARICI DOSYA FORMATI OLUŞTUR (Transact-SQL)
- DIŞ TABLO OLUŞTUR (Transact-SQL)
- sys.external_data_sources (Transact-SQL)
- Paylaşılan Erişim İmzalarını (SAS) Kullanma
- PolyBase bağlantı yapılandırması (Transact-SQL)
Genel Bakış: SQL Server 2022
için geçerlidir: SQL Server 2022 (16.x) ve sonraki sürümler
PolyBase sorguları için bir dış veri kaynağı oluşturur. Dış veri kaynakları, bağlantı kurmak ve şu birincil kullanım örneklerini desteklemek için kullanılır:
- SQL Server'da PolyBase kullanarak veri sanallaştırma ve veri yükü
- veya kullanarak
BULK INSERTtoplu yükleme işlemleriOPENROWSET
Uyarı
Bu söz dizimi SQL Server'ın farklı sürümlerinde farklılık gösterir. Uygun sürümü seçmek için sürüm seçici açılan listesini kullanın. Bu içerik SQL Server 2022 (16.x) ve sonraki sürümler için geçerlidir.
SQL Server 2022 söz dizimi
SQL Server 2022 ve sonraki sürümleri için söz dizimi
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ [ , ] CONNECTION_OPTIONS = '<key_value_pairs>'[,...]]
[ [ , ] CREDENTIAL = <credential_name> ]
[ [ , ] PUSHDOWN = { ON | OFF } ]
)
[ ; ]
Tartışmalar
data_source_name
Veri kaynağı için kullanıcı tanımlı adı belirtir. Ad, SQL Server'daki veritabanında benzersiz olmalıdır.
LOCATION = '<prefix>://<path[:p ort]>'
Bağlantı protokolunu ve dış veri kaynağının yolunu sağlar.
| Dış Veri Kaynağı | Bağlayıcı konumu ön eki | Konum yolu | Ürüne/hizmete göre desteklenen konumlar | Kimlik doğrulama |
|---|---|---|---|---|
| Azure Depolama Hesabı (V2) | abs |
abs://<container_name>@<storage_account_name>.blob.core.windows.net/veya abs://<storage_account_name>.blob.core.windows.net/<container_name> |
SQL Server 2022 (16.x) ile başlayarak Hiyerarşik Ad Alanı desteklenir. |
Paylaşılan erişim imzası (SAS) |
| Azure Data Lake Storage (İkinci Nesil) | adls |
adls://<container_name>@<storage_account_name>.dfs.core.windows.net/veya adls://<storage_account_name>.dfs.core.windows.net/<container_name> |
SQL Server 2022 (16.x) ile başlayarak | Paylaşılan erişim imzası (SAS) |
| SQL Sunucusu | sqlserver |
<server_name>[\<instance_name>][:port] |
SQL Server 2019 (15.x) ile başlayarak | Yalnızca SQL kimlik doğrulaması |
| Oracle | oracle |
<server_name>[:port] |
SQL Server 2019 (15.x) ile başlayarak | Yalnızca temel kimlik doğrulaması |
| Teradata | teradata |
<server_name>[:port] |
SQL Server 2019 (15.x) ile başlayarak | Yalnızca temel kimlik doğrulaması |
| MongoDB için MongoDB veya Cosmos DB API'si | mongodb |
<server_name>[:port] |
SQL Server 2019 (15.x) ile başlayarak | Yalnızca temel kimlik doğrulaması |
| Genel ODBC | odbc |
<server_name>[:port] |
SQL Server 2019 (15.x) ile başlayarak - Yalnızca Windows | Yalnızca temel kimlik doğrulaması |
| Toplu İşlemler | https |
<storage_account>.blob.core.windows.net/<container> |
SQL Server 2017 'den (14.x) başlayarak | Paylaşılan erişim imzası (SAS) |
| S3 uyumlu nesne depolama | s3 |
- S3 uyumlu: s3://<server_name>:<port>/- AWS S3: s3://<bucket_name>.S3.amazonaws.com[:port]/<folder>veya s3://s3.amazonaws.com[:port]/<bucket_name>/<folder> |
SQL Server 2022 (16.x) ile başlayarak | Temel veya geçişli (STS) * |
* Kimliğin sabit kodlandığı ve SECRET bağımsız değişkeninin biçiminde IDENTITY = 'S3 Access Key' olduğu veya geçiş (STS) yetkilendirmesini kullandığı = '<AccessKeyID>:<SecretKeyID>' olmalıdır. Daha fazla bilgi için bkz. PolyBase'i S3 uyumlu nesne depolama alanında dış verilere erişecek şekilde yapılandırma.
Konum yolu:
-
port= Dış veri kaynağının dinlediği bağlantı noktası. Çoğu durumda, ağ yapılandırmasına bağlı olarak isteğe bağlıdır. -
<container_name>= verileri tutan depolama hesabının kapsayıcısı. Kök kapsayıcılar salt okunur durumdadır, veriler kapsayıcıya geri yazılamaz. -
<storage_account>= Azure kaynağının depolama hesabı adı. -
<server_name>= konak adı. -
<instance_name>= SQL Server adlı örneğin adı. Hedef örnekte çalışan SQL Server Tarayıcı Hizmetiniz varsa kullanılır. -
<ip_address>:<port>= Yalnızca S3 uyumlu nesne depolama için (SQL Server 2022 (16.x) ile başlayarak), S3 uyumlu depolamaya bağlanmak için kullanılan uç nokta ve bağlantı noktası. -
<bucket_name>= Yalnızca S3 uyumlu nesne depolama için (SQL Server 2022 (16.x) ile başlayarak), depolama platformuna özgü. -
<region>= Yalnızca S3 uyumlu nesne depolama için (SQL Server 2022 (16.x) ile başlayarak), depolama platformuna özgü. -
<folder>= Depolama URL'sinin içindeki depolama yolunun bir parçası.
Konumu ayarlarken ek notlar ve yönergeler:
- SQL Server Veritabanı Altyapısı, nesne oluşturulduğunda dış veri kaynağının varlığını doğrulamaz. Doğrulamak için dış veri kaynağını kullanarak bir dış tablo oluşturun.
- BAĞLAYıCıyı
sqlserverkullanarak SQL Server 2019'u (15.x) başka bir SQL Server'a veya Azure SQL Veritabanı'na bağlayabilirsiniz. - aracılığıyla
Driver={<Name of Driver>}bağlanırken değeriniODBCbelirtin. - Ön ekini
adlskullanan Azure Depolama Hesapları (V2) için Hiyerarşik Ad Alanı seçeneği, SQL Server 2022'de (16.x) Azure Data Lake Storage 2. Nesil aracılığıyla desteklenir.
- HDFS Cloudera (CDP) ve Hortonworks (HDP) dış veri kaynakları için SQL Server desteği kullanımdan kaldırılmıştır ve SQL Server 2022'ye (16.x) dahil değildir. SQL Server 2022'de (16.x) TYPE bağımsız değişkenini kullanmanız gerekmez.
- SQL Server 2022 (16.x) ile başlayan S3 uyumlu nesne depolama ve PolyBase hakkında daha fazla bilgi için bkz. PolyBase'i S3 uyumlu nesne depolama alanında dış verilere erişecek şekilde yapılandırma. S3 uyumlu nesne depolama alanında bir parquet dosyasını sorgulama örneği için bkz. PolyBase ile S3 uyumlu nesne depolama alanında parquet dosyasını sanallaştırma.
- SQL Server 2022'de (16.x) önceki sürümlerden farklı olarak, Azure Depolama Hesabı (v2) için kullanılan ön ek olarak
wasb[s]absolarak değiştirildi. - SQL Server 2022'de (16.x) önceki sürümlerden farklı olarak, Azure Data Lake Storage 2. Nesil için kullanılan ön ek olarak
abfs[s]adlsdeğiştirildi. - Azure Depolama'da bir CSV dosyasını sanallaştırmak için PolyBase'i kullanma örneği için bkz. PolyBase ile CSV dosyasını sanallaştırma.
- ADLS 2. Nesil'de delta tablosunu sanallaştırmak için PolyBase kullanma örneği için bkz. PolyBase ile delta tablosunu sanallaştırma.
- SQL Server 2022 (16.x), hem Azure Depolama Hesabı v2 () hem de Azure Data Lake 2. Nesil (
absadls) için iki URL biçimlerini tam olarak destekler.- LOCATION yolu şu biçimleri kullanabilir:
<container>@<storage_account_name>..(önerilen) veya<storage_account_name>../<container>. Örneğin:- Azure Depolama Hesabı v2:
abs://<container>@<storage_account_name>.blob.core.windows.net(önerilen) veyaabs://<storage_account_name>.blob.core.windows.net/<container>.
- Azure Depolama Hesabı v2:
- LOCATION yolu şu biçimleri kullanabilir:
- Azure Data Lake 2. Nesil şu desteği destekler:
adls://<container>@<storage_account_name>.blob.core.windows.net(önerilen) veyaadls://<storage_account_name>.dfs.core.windows.net/<container>.
CONNECTION_OPTIONS = key_value_pair
SQL Server 2019 (15.x) ve sonraki sürümler için belirtildi. Dış veri kaynağına bağlanırken ODBC ek seçenekleri belirtir. Birden çok bağlantı seçeneği kullanmak için bunları noktalı virgülle ayırın.
Genel ODBC bağlantıların yanı sıra SQL Server, Oracle, Teradata, MongoDB ve MongoDB için Azure Cosmos DB API'sine ODBC yönelik yerleşik bağlayıcılar için geçerlidir.
key_value_pair, belirli bir bağlantı seçeneğinin anahtar sözcüğü ve değeridir. Kullanılabilir anahtar sözcükler ve değerler dış veri kaynağı türüne bağlıdır. Sürücünün adı en düşük değer olarak gereklidir, ancak veya gibi APP='<your_application_name>'ApplicationIntent= ReadOnly|ReadWrite ayarlamak için de yararlı olan ve sorun gidermeye yardımcı olabilecek başka seçenekler de vardır.
Olası anahtar değer çiftleri sürücüye özgüdür. Her sağlayıcı hakkında daha fazla bilgi için bkz. CREATE EXTERNAL DATA SOURCE (Transact-SQL) CONNECTION_OPTIONS.
SQL Server 2022 (16.x) Toplu Güncelleştirme 2'den başlayarak, Oracle TNS dosyalarını desteklemek için ek anahtar sözcükler kullanıma sunulmuştur:
- anahtar sözcüğü
TNSNamesFile, Oracle sunucusunda bulunan dosyanın dosya yolutnsnames.orabelirtir. - anahtar sözcüğü
ServerName, içinde konaktnsnames.oraadını ve bağlantı noktasını değiştirmek için kullanılacak diğer adı belirtir.
PUSHDOWN = ON | KAPALI
Şunlar için geçerlidir: SQL Server 2019 (15.x) ve sonraki sürümleri. Hesaplamanın dış veri kaynağına gönderilip gönderilemeyeceğini belirtir. Varsayılan olarak açıktır.
PUSHDOWN SQL Server, Oracle, Teradata, MongoDB, MongoDB için Azure Cosmos DB API'sine veya dış veri kaynağı düzeyinde ODBC'ye bağlanırken desteklenir.
Sorgu düzeyinde aşağı göndermeyi etkinleştirme veya devre dışı bırakma işlemi , EXTERNALPUSHDOWN ipucu aracılığıyla sağlanır.
CREDENTIAL = credential_name
Dış veri kaynağında kimlik doğrulaması için veritabanı kapsamlı bir kimlik bilgisi belirtir.
Kimlik bilgisi oluştururken ek notlar ve yönergeler:
-
CREDENTIALyalnızca verilerin güvenliği sağlanmışsa gereklidir.CREDENTIALanonim erişime izin veren veri kümeleri için gerekli değildir. - Azure Depolama Hesabına (V2) veya Azure Data Lake Storage 2. Nesil'e erişirken, olması
IDENTITYSHARED ACCESS SIGNATUREgerekir. - Örnek için bkz. Toplu işlemleri yürütmek ve Azure Depolama'dan SQL Veritabanı'na veri almak için dış veri kaynağı oluşturma.
Paylaşılan erişim imzası oluşturmanın birden çok yolu vardır:
Azure portalı -><Your_Storage_Account> - Paylaşılan erişim imzası -> İzinleri yapılandırma ->> SAS ve bağlantı dizesi oluşturma bölümüne giderek SAS belirteci oluşturabilirsiniz. Daha fazla bilgi için bkz . Paylaşılan erişim imzası oluşturma.
Azure Depolama Gezgini ile SAS oluşturabilir ve yapılandırabilirsiniz.
Sas belirtecini PowerShell, Azure CLI, .NET ve REST API aracılığıyla program aracılığıyla oluşturabilirsiniz. Daha fazla bilgi için bkz . Paylaşılan erişim imzalarını (SAS) kullanarak Azure Depolama kaynaklarına sınırlı erişim verme.
SAS belirteci aşağıdaki gibi yapılandırılmalıdır:
- SAS belirteci oluşturulduğunda belirtecin başında bir soru işareti ('?') bulunur. GİzLİ olarak yapılandırıldığında baştakileri
?hariç tutun. - Geçerli bir süre sonu dönemi kullanın (tüm tarihler UTC saatindedir).
- SAS belirteci oluşturulduğunda belirtecin başında bir soru işareti ('?') bulunur. GİzLİ olarak yapılandırıldığında baştakileri
Yüklenmesi gereken dosya üzerinde en azından okuma izni verin (örneğin
srt=o&sp=r). Farklı kullanım örnekleri için birden çok paylaşılan erişim imzası oluşturulabilir. İzinler aşağıdaki gibi verilmelidir:Eylem İzin Dosyadan veri okuma Okumak Birden çok dosyadan ve alt klasörden veri okuma Okuma ve Listeleme Dış Tablo Oluştur'u Seç Olarak Kullanma (CETAS) Okuma, Oluşturma, Listeleme ve Yazma Azure Blob Depolama ve Azure Data Lake 2. Nesil için:
- İzin verilen hizmetler:
BlobSAS belirtecini oluşturmak için seçilmelidir
- İzin verilen hizmetler:
İzin verilen kaynak türleri:
ContainerveObjectSAS belirtecini oluşturmak için seçilmelidir
S3 uyumlu nesne depolama ve PolyBase ile kullanma CREDENTIAL örneği için bkz. PolyBase'i S3 uyumlu nesne depolama alanında dış verilere erişecek şekilde yapılandırma.
Veritabanı kapsamlı kimlik bilgileri oluşturmak için bkz. CREATE DATABASE SCOPED CREDENTIAL.
İzinler
CONTROL SQL Server'daki veritabanında izin gerektirir.
Kilitleme
Nesne üzerinde EXTERNAL DATA SOURCE paylaşılan bir kilit alır.
Güvenlik
PolyBase, dış veri kaynaklarının çoğu için ara sunucu tabanlı kimlik doğrulamasını destekler. Proxy hesabını oluşturmak için veritabanı kapsamlı bir kimlik bilgisi oluşturun.
SQL Server 2022'ye yükseltme
SQL Server 2022'den (16.x) başlayarak Hadoop dış veri kaynakları artık desteklenmiyor. Daha önce ile TYPE = HADOOPoluşturulan dış veri kaynaklarını ve bu dış veri kaynağını kullanan tüm dış tabloları el ile yeniden oluşturmak gerekir.
Kullanıcıların Azure Depolama'ya bağlanırken yeni bağlayıcıları kullanacak şekilde dış veri kaynaklarını da yapılandırmaları gerekir.
| Dış Veri Kaynağı | Kaynak | İçin |
|---|---|---|
| Azure Blob Saklama Alanı | wasb[s] |
abs |
| ADLS 2. Nesil | abfs[s] |
adls |
Örnekler
Önemli
PolyBase'i yükleme ve etkinleştirme hakkında bilgi için bkz. Windows'a PolyBase yükleme
A. Oracle'a başvurmak için SQL Server'da dış veri kaynağı oluşturma
Oracle'a başvuran bir dış veri kaynağı oluşturmak için veritabanı kapsamlı bir kimlik bilgileriniz olduğundan emin olun. Ayrıca, isteğe bağlı olarak bu veri kaynağında hesaplamanın aşağı itilmesi özelliğini etkinleştirebilir veya devre dışı bırakabilirsiniz.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL OracleProxyAccount
WITH IDENTITY = 'oracle_username',
SECRET = 'oracle_password';
CREATE EXTERNAL DATA SOURCE MyOracleServer
WITH (
LOCATION = 'oracle://145.145.145.145:1521',
PUSHDOWN = ON,
CREDENTIAL = OracleProxyAccount
);
İsteğe bağlı olarak, Oracle'a dış veri kaynağı ayrıntılı erişim denetimi sağlamak için ara sunucu kimlik doğrulamasını kullanabilir. Ara sunucu kullanıcısı, kimliğine bürünülen kullanıcıyla karşılaştırıldığında sınırlı erişime sahip olacak şekilde yapılandırılabilir.
CREATE DATABASE SCOPED CREDENTIAL [OracleProxyCredential]
WITH IDENTITY = 'oracle_username',
SECRET = 'oracle_password';
CREATE EXTERNAL DATA SOURCE [OracleSalesSrvr]
WITH (
LOCATION = 'oracle://145.145.145.145:1521',
CONNECTION_OPTIONS = 'ImpersonateUser=%CURRENT_USER',
CREDENTIAL = [OracleProxyCredential]
);
Alternatif olarak, TNS kullanarak kimlik doğrulaması yapabilirsiniz.
SQL Server 2022 (16.x) Toplu Güncelleştirme 2'den başlayarak, CREATE EXTERNAL DATA SOURCE artık Oracle'a bağlanırken TNS dosyalarının kullanımını destekliyor.
CONNECTION_OPTIONS parametresi genişletildi ve şimdi dosyaya TNSNamesFile göz atmak ServerName ve sunucuyla bağlantı kurmak için ve değişken olarak ve kullanıyortnsnames.ora.
Aşağıdaki örnekte, çalışma zamanı sırasında SQL Server tnsnames.ora tarafından TNSNamesFile belirtilen dosya konumunu ve tarafından ServerNamebelirtilen konak ve ağ bağlantı noktasını arar.
CREATE EXTERNAL DATA SOURCE [external_data_source_name]
WITH (
LOCATION = N'oracle://XE',
CREDENTIAL = [OracleCredentialTest],
CONNECTION_OPTIONS = N'TNSNamesFile=C:\Temp\tnsnames.ora;ServerName=XE'
);
B. PolyBase bağlantısı aracılığıyla örnek adlı bir SQL Server'a başvurmak için dış veri kaynağı oluşturma
Şunlar için geçerlidir: SQL Server 2019 (15.x) ve üzeri
SQL Server'ın adlandırılmış bir örneğine başvuran bir dış veri kaynağı oluşturmak için örnek adını belirtmek için kullanın CONNECTION_OPTIONS .
İlk olarak, SQL kimliği doğrulanmış oturum açma bilgileri için kimlik bilgilerini depolayarak veritabanı kapsamlı kimlik bilgilerini oluşturun. PolyBase için SQL ODBC Bağlayıcısı yalnızca temel kimlik doğrulamasını destekler. Veritabanı kapsamlı bir kimlik bilgisi oluşturmadan önce, veritabanının kimlik bilgilerini korumak için bir ana anahtarı olmalıdır. Daha fazla bilgi için bkz. CREATE MASTER KEY . Aşağıdaki örnek, veritabanı kapsamlı bir kimlik bilgisi oluşturur, kendi oturum açma bilgilerinizi ve parolanızı sağlar.
CREATE DATABASE SCOPED CREDENTIAL SQLServerCredentials
WITH IDENTITY = 'username',
SECRET = 'password';
Aşağıdaki örnekte konak WINSQL2019 adı ve SQL2019 örnek adıdır.
'Server=%s\SQL2019' anahtar değer çiftidir.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2019',
CONNECTION_OPTIONS = 'Server=%s\SQL2019',
CREDENTIAL = SQLServerCredentials
);
Alternatif olarak, sql server varsayılan örneğine bağlanmak için bir bağlantı noktası kullanabilirsiniz.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2019:58137',
CREDENTIAL = SQLServerCredentials
);
C. Always On kullanılabilirlik grubunun okunabilir ikincil çoğaltmasına başvurmak için dış veri kaynağı oluşturma
Şunlar için geçerlidir: SQL Server 2019 (15.x) ve üzeri
SQL Server'ın okunabilir ikincil çoğaltmasına başvuran bir dış veri kaynağı oluşturmak için öğesini CONNECTION_OPTIONS kullanarak belirtin ApplicationIntent=ReadOnly. Ayrıca, kullanılabilirlik veritabanını içinde Database={dbname}olarak CONNECTION_OPTIONS ayarlamanız veya kullanılabilirlik veritabanını, veritabanı kapsamlı kimlik bilgileri için kullanılan oturum açma bilgilerinin varsayılan veritabanı olarak ayarlamanız gerekir. Bunu, kullanılabilirlik grubunun tüm kullanılabilirlik çoğaltmalarında yapmanız gerekir.
İlk olarak, SQL kimliği doğrulanmış oturum açma bilgileri için kimlik bilgilerini depolayarak veritabanı kapsamlı kimlik bilgilerini oluşturun. PolyBase için SQL ODBC Bağlayıcısı yalnızca temel kimlik doğrulamasını destekler. Veritabanı kapsamlı bir kimlik bilgisi oluşturmadan önce, veritabanının kimlik bilgilerini korumak için bir ana anahtarı olmalıdır. Daha fazla bilgi için bkz. CREATE MASTER KEY . Aşağıdaki örnek, veritabanı kapsamlı bir kimlik bilgisi oluşturur, kendi oturum açma bilgilerinizi ve parolanızı sağlar.
CREATE DATABASE SCOPED CREDENTIAL SQLServerCredentials
WITH IDENTITY = 'username',
SECRET = 'password';
Ardından yeni dış veri kaynağını oluşturun.
veritabanı kapsamlı kimlik bilgilerindeki Database=dbname oturum açma bilgileri için kullanılabilirlik veritabanını varsayılan veritabanı olarak dahil CONNECTION_OPTIONS etmeniz veya ayarlamanız fark etmeksizin, LOCATION parametresinde CREATE EXTERNAL TABLE deyiminde veritabanı adını üç parçalı bir adla sağlamanız gerekir. Örnek için bkz . EXTERNAL TABLE OLUŞTURMA.
Aşağıdaki örnekte kullanılabilirlik WINSQL2019AGL grubu dinleyici adı ve dbname CREATE EXTERNAL TABLE deyiminin hedefi olacak veritabanının adıdır.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2019AGL',
CONNECTION_OPTIONS = 'ApplicationIntent=ReadOnly; Database=dbname',
CREDENTIAL = SQLServerCredentials
);
Sistem görünümünde ApplicationIntentbir dış tablo belirtip sys.servers oluşturarak kullanılabilirlik grubunun yeniden yönlendirme davranışını gösterebilirsiniz. Aşağıdaki örnek betikte iki dış veri kaynağı oluşturulur ve her biri için bir dış tablo oluşturulur. Hangi sunucunun bağlantıya yanıt verdiğini test etmek için görünümleri kullanın. Benzer sonuçlar salt okunur yönlendirme özelliği aracılığıyla da elde edilebilir. Daha fazla bilgi için bkz. Always On kullanılabilirlik grubu için salt okunur yönlendirmeyi yapılandırma.
CREATE EXTERNAL DATA SOURCE [DataSource_SQLInstanceListener_ReadOnlyIntent]
WITH (
LOCATION = 'sqlserver://WINSQL2019AGL',
CONNECTION_OPTIONS = 'ApplicationIntent=ReadOnly; Database=dbname',
CREDENTIAL = [SQLServerCredentials]
);
GO
CREATE EXTERNAL DATA SOURCE [DataSource_SQLInstanceListener_ReadWriteIntent]
WITH (
LOCATION = 'sqlserver://WINSQL2019AGL',
CONNECTION_OPTIONS = 'ApplicationIntent=ReadWrite',
CREDENTIAL = [SQLServerCredentials]
);
GO
Kullanılabilirlik grubundaki veritabanının içinde, döndürülecek sys.servers bir görünüm ve sorguya hangi çoğaltmanın yanıt verdiğini belirlemenize yardımcı olan yerel örneğin adını oluşturun. Daha fazla bilgi için bkz. sys.servers.
CREATE VIEW vw_sys_servers
AS
SELECT [name]
FROM sys.servers
WHERE server_id = 0;
GO
Ardından kaynak örnekte bir dış tablo oluşturun:
CREATE EXTERNAL TABLE vw_sys_servers_ro (name SYSNAME NOT NULL)
WITH (
DATA_SOURCE = [DataSource_SQLInstanceListener_ReadOnlyIntent],
LOCATION = N'dbname.dbo.vw_sys_servers'
);
GO
CREATE EXTERNAL TABLE vw_sys_servers_rw (name SYSNAME NOT NULL)
WITH (
DATA_SOURCE = [DataSource_SQLInstanceListener_ReadWriteIntent],
LOCATION = N'dbname.dbo.vw_sys_servers'
);
GO
SELECT [name]
FROM dbo.vw_sys_servers_ro;--should return secondary replica instance
SELECT [name]
FROM dbo.vw_sys_servers_rw;--should return primary replica instance
GO
D. PolyBase aracılığıyla S3 uyumlu nesne depolama alanında bir parquet dosyasını sorgulamak için dış veri kaynağı oluşturma
Şunlar için geçerlidir: SQL Server 2022 (16.x) ve üzeri
Aşağıdaki örnek betik, SQL Server'daki kaynak kullanıcı veritabanında bir dış veri kaynağı s3_ds oluşturur. Dış veri kaynağı, s3_dc veritabanı kapsamlı kimlik bilgilerine başvurur.
CREATE DATABASE SCOPED CREDENTIAL s3_dc
WITH IDENTITY = 'S3 Access Key', -- for S3-compatible object storage the identity must always be S3 Access Key
SECRET = '<access_key_id>:<secret_key_id>' -- provided by the S3-compatible object storage
GO
CREATE EXTERNAL DATA SOURCE s3_ds
WITH (
LOCATION = 's3://<ip_address>:<port>/',
CREDENTIAL = s3_dc
);
GO
yeni dış veri kaynağını sys.external_data_sourcesile doğrulayın.
SELECT *
FROM sys.external_data_sources;
Ardından aşağıdaki örnek, OPENROWSET sorgusu aracılığıyla S3 uyumlu nesne depolama alanında depolanan bir parquet dosyasını sorgulamak için T-SQL'in kullanılmasını gösterir. Daha fazla bilgi için bkz. PolyBase ile S3 uyumlu bir nesne depolama alanında parquet dosyasını sanallaştırma.
SELECT *
FROM OPENROWSET (
BULK '/<bucket>/<parquet_folder>',
FORMAT = 'PARQUET',
DATA_SOURCE = 's3_ds'
) AS [cc];
E. PostgreSQL'e genel ODBC kullanarak dış veri kaynağı oluşturma
Önceki örneklerde olduğu gibi, önce bir veritabanı ana anahtarı ve veritabanı kapsamlı kimlik bilgileri oluşturun. Dış veri kaynağı için veritabanı kapsamlı kimlik bilgileri kullanılır. Bu örnekte, sunucuda PostgreSQL için genel bir ODBC veri sağlayıcısının yüklü olduğu da varsayılır.
Bu örnekte genel ODBC veri sağlayıcısı, varsayılan TCP 5432 bağlantı noktası kullanılarak PostgreSQL sunucusunun tam etki alanı adının olduğu POSTGRES1aynı ağdaki bir PostgreSQL veritabanı sunucusuna bağlanmak için kullanılır.
CREATE EXTERNAL DATA SOURCE POSTGRES1
WITH (
LOCATION = 'odbc://POSTGRES1.domain:5432',
CONNECTION_OPTIONS = 'Driver={PostgreSQL Unicode(x64)};',
CREDENTIAL = postgres_credential
);
Azure Depolama
Paylaşılan erişim imzası oluşturma
Hem Azure Blob Depolama hem de Azure Data Lake Storage (ADLS) 2. Nesil için desteklenen kimlik doğrulama yöntemi paylaşılan erişim imzası (SAS) yöntemidir. Paylaşılan erişim imzası belirteci oluşturmanın basit bir yolu aşağıdaki adımları izleyin. Daha fazla bilgi için bkz. CREDENTIAL.
Azure portalına ve istediğiniz Depolama Hesabına gidin.
Veri Depolama menüsü altında istediğiniz Kapsayıcıya gidin.
Paylaşılan erişim belirteçleri'ni seçin.
İstenen eyleme göre uygun izni seçin:
Eylem İzin Dosyadan veri okuma Okumak Birden çok dosyadan ve alt klasörden veri okuma Okuma ve Listeleme Dış Tablo Oluştur'u Seç Olarak Kullanma (CETAS) Okuma, Oluşturma ve Yazma Belirteç son kullanma tarihini seçin.
SAS belirteci ve URL'si oluşturun.
SAS belirtecini kopyalayın.
F. abs:// arabirimini kullanarak Azure Blob Depolama'daki verilere erişmek için dış veri kaynağı oluşturma
Şunlar için geçerlidir: SQL Server 2022 (16.x) ve üzeri
SQL Server 2022'den (16.x) başlayarak Azure Depolama Hesabı v2 için yeni bir ön ek abs kullanın. Ön abs ek, kullanarak SHARED ACCESS SIGNATUREkimlik doğrulamasını destekler. Ön ek, abs önceki sürümlerde wasbkullanılan öğesinin yerini alır. HADOOP artık desteklenmiyor, artık kullanılmasına TYPE = BLOB_STORAGEgerek yok.
Azure depolama hesabı anahtarı artık gerekli değildir; bunun yerine aşağıdaki örnekte görebileceğiniz gibi SAS Belirteci kullanılır:
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
GO
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredentialv2
WITH IDENTITY = 'SHARED ACCESS SIGNATURE', -- to use SAS the identity must be fixed as-is
SECRET = '<Blob_SAS_Token>';
GO
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
LOCATION = 'abs://<container>@<storage_account_name>.blob.core.windows.net/',
CREDENTIAL = AzureStorageCredentialv2
);
Azure Blob Depolama'da depolanan CSV dosyalarına erişme hakkında daha ayrıntılı bir örnek için bkz. PolyBase ile CSV dosyasını sanallaştırma.
G. Azure Data Lake 2. Nesil'deki verilere erişmek için dış veri kaynağı oluşturma
Şunlar için geçerlidir: SQL Server 2022 (16.x) ve sonraki sürümleri
SQL Server 2022'den (16.x) başlayarak Azure Data Lake 2adls. Nesil için önceki sürümlerde kullanılan yerine yeni bir ön ek abfs kullanın. Ön ek, adls bu örnekte gösterildiği gibi kimlik doğrulama yöntemi olarak SAS belirtecini de destekler:
--Create a database scoped credential using SAS Token
CREATE DATABASE SCOPED CREDENTIAL datalakegen2
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = '<DataLakeGen2_SAS_Token>';
GO
CREATE EXTERNAL DATA SOURCE data_lake_gen2_dfs
WITH (
LOCATION = 'adls://<container>@<storage_account>.dfs.core.windows.net',
CREDENTIAL = datalakegen2
);
Azure Data Lake 2. Nesil'de depolanan delta dosyalarına erişme hakkında daha ayrıntılı bir örnek için bkz. PolyBase ile delta tablosunu sanallaştırma.
Örnekler: Toplu İşlemler
Önemli
Bir dış veri kaynağını toplu işlemler için yapılandırırken URL'nin sonuna sondaki /, dosya adı veya paylaşılan erişim imzası parametrelerini eklemeyin LOCATION .
H. Azure Depolama'dan veri alma toplu işlemleri için dış veri kaynağı oluşturma
Şunlar için geçerlidir: SQL Server 2022 (16.x) ve sonraki sürümleri.
BULK INSERT veya OPENROWSET BULK kullanarak toplu işlemler için aşağıdaki veri kaynağını kullanın. Kimlik bilgisi kimlik olarak ayarlanmalıdır SHARED ACCESS SIGNATURE , SAS belirtecinde başta ? yer almamalıdır, yüklenmesi gereken dosyada (örneğin srt=o&sp=r) en az okuma iznine sahip olmalıdır ve süre sonu süresi geçerli olmalıdır (tüm tarihler UTC saatindedir). Paylaşılan erişim imzaları hakkında daha fazla bilgi için bkz. Paylaşılan Erişim İmzalarını (SAS) Kullanma.
CREATE DATABASE SCOPED CREDENTIAL AccessAzureInvoices
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
-- Remove ? from the beginning of the SAS token
SECRET = '<azure_shared_access_signature>';
CREATE EXTERNAL DATA SOURCE MyAzureInvoices
WITH (
LOCATION = 'abs://<container>@<storage_account_name>.blob.core.windows.net/',
CREDENTIAL = AccessAzureInvoices,
);
İlgili içerik
- HARICI VERI KAYNAĞINI DEĞIŞTIR (Transact-SQL)
- VERİTABANI KAPSAMINDA KIMLIK BİLGİSİ OLUŞTUR (Transact-SQL)
- HARICI DOSYA FORMATI OLUŞTUR (Transact-SQL)
- DIŞ TABLO OLUŞTUR (Transact-SQL)
- sys.external_data_sources (Transact-SQL)
- Paylaşılan Erişim İmzalarını (SAS) Kullanma
- PolyBase bağlantı yapılandırması (Transact-SQL)
Genel Bakış: SQL Server 2025
Uygulanır: SQL Server 2025 (17.x)
PolyBase sorguları için bir dış veri kaynağı oluşturur. Dış veri kaynakları, bağlantı kurmak ve şu birincil kullanım örneklerini desteklemek için kullanılır:
- SQL Server'da PolyBase kullanarak veri sanallaştırma ve veri yükü
- veya kullanarak
BULK INSERTtoplu yükleme işlemleriOPENROWSET
Azure Arc tarafından etkinleştirilen örnekler için Yönetilen Kimlik bağlantılarını destekler. Detaylar için PolyBase'ten yönetilen kimlik ile Azure Storage'a Connect programını inceleyin.
Uyarı
Bu söz dizimi SQL Server'ın farklı sürümlerinde farklılık gösterir. Uygun sürümü seçmek için sürüm seçici açılan listesini kullanın. Bu içerik, SQL Server 2025 (17.x) ve sonraki sürümler için geçerlidir.
SQL Server 2025 ve sonraki sürümleri için söz dizimi
Söz dizimi kuralları hakkında daha fazla bilgi için bkz.
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ [ , ] CONNECTION_OPTIONS = '<key_value_pairs>'[,...]]
[ [ , ] CREDENTIAL = <credential_name> ]
[ [ , ] PUSHDOWN = { ON | OFF } ]
)
[ ; ]
Tartışmalar
data_source_name
Veri kaynağı için kullanıcı tanımlı adı belirtir. Ad, SQL Server'daki veritabanında benzersiz olmalıdır.
LOCATION = '<prefix>://<path[:p ort]>'
Bağlantı protokolunu ve dış veri kaynağının yolunu sağlar.
| Dış veri kaynağı | Bağlayıcı konumu ön eki | Konum yolu | Ürüne/hizmete göre desteklenen konumlar | Kimlik doğrulama |
|---|---|---|---|---|
| Azure Depolama Hesabı (V2) | abs |
abs://<container_name>@<storage_account_name>.blob.core.windows.net/veya abs://<storage_account_name>.blob.core.windows.net/<container_name> |
SQL Server 2022 (16.x) ile başlayarak Hiyerarşik Ad Alanı desteklenir. |
Paylaşılan erişim imzası (SAS) veya Azure Depolama 1'e Yönetilen Kimlik için PolyBase desteği |
| Azure Data Lake Storage (İkinci Nesil) | adls |
adls://<container_name>@<storage_account_name>.dfs.core.windows.net/veya adls://<storage_account_name>.dfs.core.windows.net/<container_name> |
SQL Server 2022 (16.x) ile başlayarak | Paylaşılan erişim imzası (SAS) veya Azure Depolama 1'e Yönetilen Kimlik için PolyBase desteği |
| SQL Sunucusu | sqlserver |
<server_name>[\<instance_name>][:port] |
SQL Server 2019 (15.x) ile başlayarak | Yalnızca SQL kimlik doğrulaması |
| Oracle | oracle |
<server_name>[:port] |
SQL Server 2019 (15.x) ile başlayarak | Yalnızca temel kimlik doğrulaması |
| Teradata | teradata |
<server_name>[:port] |
SQL Server 2019 (15.x) ile başlayarak | Yalnızca temel kimlik doğrulaması |
| MongoDB için MongoDB veya Cosmos DB API'si | mongodb |
<server_name>[:port] |
SQL Server 2019 (15.x) ile başlayarak | Yalnızca temel kimlik doğrulaması |
| Genel ODBC | odbc |
<server_name>[:port] |
SQL Server 2019 (15.x) ile başlayarak - Yalnızca Windows | Yalnızca temel kimlik doğrulaması |
| Toplu İşlemler | https |
<storage_account>.blob.core.windows.net/<container> |
SQL Server 2017 'den (14.x) başlayarak | Paylaşılan erişim imzası (SAS) |
| S3 uyumlu nesne depolama | s3 |
- S3 uyumlu: s3://<server_name>:<port>/- AWS S3: s3://<bucket_name>.S3.amazonaws.com[:port]/<folder>veya s3://s3.amazonaws.com[:port]/<bucket_name>/<folder> |
SQL Server 2022 (16.x) ile başlayarak | Temel veya geçişli (STS) 2 |
1 Azure Arc tarafından etkinleştirilmiş SQL Server 2025 (17.x) örneği gerektirir. Detaylar için PolyBase'ten yönetilen kimlik ile Azure Storage'a Connect programını inceleyin.
2 Veritabanı kapsamlı bir kimlik bilgisi olmalıdır; burada IDENTITY sabit kodlanır IDENTITY = 'S3 Access Key' ve SECRET bağımsız değişken biçimindedir = '<AccessKeyID>:<SecretKeyID>' veya geçiş (STS) yetkilendirmesini kullanır. Daha fazla bilgi için bkz. PolyBase'i S3 uyumlu nesne depolama alanında dış verilere erişecek şekilde yapılandırma.
Konum yolu:
| Konum yolu | Açıklama |
|---|---|
port |
Dış veri kaynağının dinlediği bağlantı noktası. Çoğu durumda, ağ yapılandırmasına bağlı olarak isteğe bağlıdır. |
<container_name> |
Verileri tutan depolama hesabının kapsayıcısı. Kök kapsayıcılar salt okunur durumdadır, veriler kapsayıcıya geri yazılamaz. |
<storage_account> |
Azure kaynağının depolama hesabı adı. |
<server_name> |
Ana bilgisayar adı. |
<instance_name> |
SQL Server adlı örneğin adı. Hedef örnekte çalışan SQL Server Tarayıcı Hizmetiniz varsa kullanılır. |
<ip_address>:<port>
1 |
Yalnızca S3 uyumlu nesne depolaması için, S3 uyumlu depolamaya bağlanmak için kullanılan uç nokta ve bağlantı noktası. |
<bucket_name>
1 |
Yalnızca S3 uyumlu nesne depolaması için, depolama platformuna özgü. |
<region>
1 |
Yalnızca S3 uyumlu nesne depolaması için, depolama platformuna özgü. |
<folder> |
Depolama URL'si içindeki depolama yolunun bir parçası. |
1 SQL Server 2022 (16.x) ve sonraki sürümleri.
Konumu ayarlarken ek notlar ve yönergeler:
SQL Server Veritabanı Altyapısı, nesne oluşturulduğunda dış veri kaynağının varlığını doğrulamaz. Doğrulamak için dış veri kaynağını kullanarak bir dış tablo oluşturun.
BAĞLAYıCıyı
sqlserverkullanarak SQL Server 2019'u (15.x) başka bir SQL Server'a veya Azure SQL Veritabanı'na bağlayabilirsiniz.aracılığıyla
Driver={<Name of Driver>}bağlanırken değeriniODBCbelirtin.Ön ekini
adlskullanan Azure Depolama Hesapları (V2) için Hiyerarşik Ad Alanı seçeneği, SQL Server 2022 (16.x) ve sonraki sürümlerde Azure Data Lake Storage 2. Nesil aracılığıyla desteklenir.HDFS Cloudera (CDP) ve Hortonworks (HDP) dış veri kaynakları için SQL Server desteği kullanımdan kaldırılmıştır ve SQL Server 2022 (16.x) ve sonraki sürümlere dahil değildir. SQL Server 2025 (17.x)'de argümanı
TYPEkullanmaya gerek yok.SQL Server 2022 (16.x) ve sonraki sürümlerde S3 uyumlu nesne depolama ve PolyBase hakkında daha fazla bilgi için bkz. PolyBase'i S3 uyumlu nesne depolamadaki dış verilere erişecek şekilde yapılandırma. S3 uyumlu nesne depolama alanında bir parquet dosyasını sorgulama örneği için bkz. PolyBase ile S3 uyumlu nesne depolama alanında parquet dosyasını sanallaştırma.
SQL Server 2022 (16.x) ve sonraki sürümlerde:
Azure Depolama Hesabı (v2) için kullanılan ön ek olarak
wasb[s]değiştirildiabsAzure Data Lake Storage 2. Nesil için kullanılan ön ek olarak
abfs[s]değiştirildiadlsAzure Depolama'da bir CSV dosyasını sanallaştırmak için PolyBase'i kullanma örneği için bkz. PolyBase ile CSV dosyasını sanallaştırma.
ADLS 2. Nesil'de delta tablosunu sanallaştırmak için PolyBase kullanma örneği için bkz. PolyBase ile delta tablosunu sanallaştırma.
SQL Server 2022 (16.x) ve sonraki sürümleri hem Azure Depolama Hesabı v2 () hem de Azure Data Lake 2. Nesil (
absadls) için iki URL biçimini tam olarak destekler.Yol
LOCATIONşu biçimleri kullanabilir:<container>@<storage_account_name>..(önerilen) veya<storage_account_name>../<container>. Örneğin:- Azure Depolama Hesabı v2:
abs://<container>@<storage_account_name>.blob.core.windows.net(önerilen) veyaabs://<storage_account_name>.blob.core.windows.net/<container>.
- Azure Depolama Hesabı v2:
Azure Data Lake 2. Nesil şu desteği destekler:
adls://<container>@<storage_account_name>.blob.core.windows.net(önerilen) veyaadls://<storage_account_name>.dfs.core.windows.net/<container>.
CONNECTION_OPTIONS = key_value_pair
için geçerlidir: SQL Server 2019 (15.x) ve sonraki sürümler.
Dış veri kaynağına bağlanırken ODBC ek seçenekleri belirtir. Birden çok bağlantı seçeneği kullanmak için bunları noktalı virgülle ayırın.
Genel ODBC bağlantıların yanı sıra SQL Server, Oracle, Teradata, MongoDB ve MongoDB için Azure Cosmos DB API'sine ODBC yönelik yerleşik bağlayıcılar için geçerlidir.
key_value_pair, belirli bir bağlantı seçeneğinin anahtar sözcüğü ve değeridir. Kullanılabilir anahtar sözcükler ve değerler dış veri kaynağı türüne bağlıdır. Sürücünün adı en düşük değer olarak gereklidir, ancak veya gibi APP='<your_application_name>'ApplicationIntent= ReadOnly|ReadWrite ayarlamak için de yararlı olan ve sorun gidermeye yardımcı olabilecek başka seçenekler de vardır.
Olası anahtar değer çiftleri sürücüye özgüdür. Her sağlayıcı hakkında daha fazla bilgi için bkz. CREATE EXTERNAL DATA SOURCE (Transact-SQL) CONNECTION_OPTIONS.
SQL Server 2022 (16.x) Toplu Güncelleştirme 2'den başlayarak, Oracle TNS dosyalarını desteklemek için ek anahtar sözcükler kullanıma sunulmuştur:
- anahtar sözcüğü
TNSNamesFile, Oracle sunucusunda bulunan dosyanın dosya yolutnsnames.orabelirtir. - anahtar sözcüğü
ServerName, içinde konaktnsnames.oraadını ve bağlantı noktasını değiştirmek için kullanılacak diğer adı belirtir.
SQL Server 2025'te şifreleme seçenekleri (17.x)
SQL Server 2025 (17.x) ile itibaren, veri kaynağı olarak kullanıldığında sqlserver , SQL Server için Microsoft ODBC Driver sürüm 18 varsayılan sürücüdür. Bu Encryption seçenek gereklidir (Yes, No, veya Strict) ve TrustServerCertificate kullanılabilir (Yes veya No). Belirtilmezse Encryption , varsayılan davranış şeklindedir Encrypt=Yes;TrustServerCertificate=No;ve bir sunucu sertifikası gerektirir.
TDS 8.0 protokolunu kullanarak bağlanmak için katı mod (Encrypt=Strict) eklenmiştir. Bu modda, güvenilen bir sunucu sertifikasının yüklenmesi gerekir ve her zaman doğrulanır (TrustServerCertificate yoksayılır). Yeni bir anahtar sözcük olan , HostnameInCertificatebelirtilen sunucudan farklıysa sertifikada bulunan beklenen konak adını belirtmek için kullanılabilir.
HostnameInCertificatetüm şifreleme modlarında kullanılabilir ve sunucu tarafı Şifrelemeyi Zorla seçeneği etkinse de geçerlidir. Bu seçenek, kullanılarak devre dışı bırakılmadığı sürece sürücünün İsteğe bağlı veya TrustServerCertificate modlarda sertifikayı doğrulamasına neden olur.
Seçenekler, sunucu sertifikaları ve Encryptionhakkında TrustServerCertificate daha fazla bilgi için bkz. Windows üzerinde SQL Server için Microsoft ODBC Sürücüsünün Özellikleri.
Her zaman en son sürücüyü kullanmalısınız. Ancak, SQL Server 2025 (17.x) ayrıca geriye dönük uyumluluk için SQL Server için Microsoft ODBC Driver sürüm 17'yi de destekler. PolyBase tarafından kullanılan sürücü sürümünü değiştirme hakkında daha fazla bilgi için bkz. PolyBase için SQL Server sürücü sürümünü değiştirme.
PUSHDOWN = ON | KAPALI
için geçerlidir: SQL Server 2019 (15.x) ve sonraki sürümler.
Hesaplamanın dış veri kaynağına gönderilip gönderilemeyeceğini belirtir. Varsayılan olarak etkindir.
PUSHDOWN SQL Server, Oracle, Teradata, MongoDB, MongoDB için Azure Cosmos DB API'sine veya dış veri kaynağı düzeyinde ODBC'ye bağlanırken desteklenir.
Sorgu düzeyinde aşağı göndermeyi etkinleştirme veya devre dışı bırakma işlemi bir ipucu aracılığıyla oluşturulduğunda elde edilir.
CREDENTIAL = credential_name
Dış veri kaynağında kimlik doğrulaması için veritabanı kapsamlı bir kimlik bilgisi belirtir.
Kimlik bilgisi oluştururken ek notlar ve yönergeler:
CREDENTIALyalnızca verilerin güvenliği sağlanmışsa gereklidir.CREDENTIALanonim erişime izin veren veri kümeleri için gerekli değildir.Azure Depolama Hesabına (V2) veya Azure Data Lake Storage 2. Nesil'e erişirken, olması
IDENTITYSHARED ACCESS SIGNATUREgerekir.Örnek için bkz. Toplu işlemleri yürütmek ve Azure Depolama'dan SQL Veritabanı'na veri almak için dış veri kaynağı oluşturma.
Paylaşılan erişim imzası oluşturmanın birden çok yolu vardır:
Paylaşılanerişim imzası><>SAS ve bağlantı dizesi oluşturma>> giderek SAS belirteci oluşturabilirsiniz. Daha fazla bilgi için bkz . Paylaşılan erişim imzası oluşturma.
Azure Depolama Gezgini ile SAS oluşturabilir ve yapılandırabilirsiniz.
Sas belirtecini PowerShell, Azure CLI, .NET ve REST API aracılığıyla program aracılığıyla oluşturabilirsiniz. Daha fazla bilgi için bkz . Paylaşılan erişim imzalarını (SAS) kullanarak Azure Depolama kaynaklarına sınırlı erişim verme.
SAS belirteci aşağıdaki gibi yapılandırılmalıdır:
SAS belirteci oluşturulduğunda belirtecin başında bir soru işareti ('?') bulunur. olarak yapılandırıldığında baştakileri
?SECREThariç tutun.Geçerli bir süre sonu dönemi kullanın (tüm tarihler UTC saatindedir).
Yüklenmesi gereken dosya üzerinde en azından okuma izni verin (örneğin
srt=o&sp=r). Farklı kullanım örnekleri için birden çok paylaşılan erişim imzası oluşturulabilir. İzinler aşağıdaki gibi verilmelidir:Eylem İzin Dosyadan veri okuma Okumak Birden çok dosyadan ve alt klasörden veri okuma Okuma ve Listeleme Dış Tablo Oluştur'u Seç Olarak Kullanma (CETAS) Okuma, Oluşturma, Listeleme ve Yazma Azure Blob Depolama ve Azure Data Lake 2. Nesil için:
- İzin verilen hizmetler:
BlobSAS belirtecini oluşturmak için seçilmelidir
- İzin verilen hizmetler:
İzin verilen kaynak türleri:
ContainerveObjectSAS belirtecini oluşturmak için seçilmelidir
S3 uyumlu nesne depolama ve PolyBase ile kullanma CREDENTIAL örneği için bkz. PolyBase'i S3 uyumlu nesne depolama alanında dış verilere erişecek şekilde yapılandırma.
Veritabanı kapsamlı kimlik bilgileri oluşturmak için bkz. CREATE DATABASE SCOPED CREDENTIAL.
İzinler
CONTROL SQL Server'daki veritabanında izin gerektirir.
Kilitleme
Nesne üzerinde EXTERNAL DATA SOURCE paylaşılan bir kilit alır.
Güvenlik
PolyBase, dış veri kaynaklarının çoğu için ara sunucu tabanlı kimlik doğrulamasını destekler. Proxy hesabını oluşturmak için veritabanı kapsamlı bir kimlik bilgisi oluşturun.
SQL Server 2025'e yükseltme
SQL Server 2022 (16.x) ve sonraki sürümlerinde Hadoop dış veri kaynakları desteklenmez. Daha önce ile TYPE = HADOOPoluşturulan dış veri kaynaklarını ve bu dış veri kaynağını kullanan tüm dış tabloları el ile yeniden oluşturmak gerekir.
Kullanıcıların Azure Depolama'ya bağlanırken yeni bağlayıcıları kullanacak şekilde dış veri kaynaklarını da yapılandırmaları gerekir.
| Dış veri kaynağı | Kaynak | İçin |
|---|---|---|
| Azure Blob Saklama Alanı | wasb[s] | Karın kasları |
| ADLS 2. Nesil | abfs[s] | adls |
Örnekler
Önemli
PolyBase'i yükleme ve etkinleştirme hakkında bilgi için bkz. Windows'a PolyBase yükleme.
A. Oracle'a başvurmak için SQL Server'da dış veri kaynağı oluşturma
Oracle'a başvuran bir dış veri kaynağı oluşturmak için veritabanı kapsamlı bir kimlik bilgileriniz olduğundan emin olun. Ayrıca, isteğe bağlı olarak bu veri kaynağında hesaplamanın aşağı itilmesi özelliğini etkinleştirebilir veya devre dışı bırakabilirsiniz.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL OracleProxyAccount
WITH IDENTITY = 'oracle_username',
SECRET = 'oracle_password';
CREATE EXTERNAL DATA SOURCE MyOracleServer
WITH (
LOCATION = 'oracle://145.145.145.145:1521',
PUSHDOWN = ON,
CREDENTIAL = OracleProxyAccount
);
İsteğe bağlı olarak, Oracle'a dış veri kaynağı ayrıntılı erişim denetimi sağlamak için ara sunucu kimlik doğrulamasını kullanabilir. Ara sunucu kullanıcısı, kimliğine bürünülen kullanıcıyla karşılaştırıldığında sınırlı erişime sahip olacak şekilde yapılandırılabilir.
CREATE DATABASE SCOPED CREDENTIAL [OracleProxyCredential]
WITH IDENTITY = 'oracle_username',
SECRET = 'oracle_password';
CREATE EXTERNAL DATA SOURCE [OracleSalesSrvr]
WITH (
LOCATION = 'oracle://145.145.145.145:1521',
CONNECTION_OPTIONS = 'ImpersonateUser=%CURRENT_USER',
CREDENTIAL = [OracleProxyCredential]
);
Alternatif olarak, TNS kullanarak kimlik doğrulaması yapabilirsiniz.
SQL Server 2022 (16.x) Toplu Güncelleştirme 2'den başlayarak, CREATE EXTERNAL DATA SOURCE artık Oracle'a bağlanırken TNS dosyalarının kullanımını destekliyor.
CONNECTION_OPTIONS parametresi genişletildi ve şimdi dosyaya TNSNamesFile göz atmak ServerName ve sunucuyla bağlantı kurmak için ve değişken olarak ve kullanıyortnsnames.ora.
Aşağıdaki örnekte, çalışma zamanı sırasında SQL Server tnsnames.ora tarafından TNSNamesFile belirtilen dosya konumunu ve tarafından ServerNamebelirtilen konak ve ağ bağlantı noktasını arar.
CREATE EXTERNAL DATA SOURCE [external_data_source_name]
WITH (
LOCATION = N'oracle://XE',
CREDENTIAL = [OracleCredentialTest],
CONNECTION_OPTIONS = N'TNSNamesFile=C:\Temp\tnsnames.ora;ServerName=XE'
);
B. PolyBase bağlantısı aracılığıyla örnek adlı bir SQL Server'a başvurmak için dış veri kaynağı oluşturma
Şunlar için geçerlidir: SQL Server 2019 (15.x) ve sonraki sürümleri.
SQL Server'ın adlandırılmış bir örneğine başvuran bir dış veri kaynağı oluşturmak için örnek adını belirtmek için kullanın CONNECTION_OPTIONS .
İlk olarak, SQL kimliği doğrulanmış oturum açma bilgileri için kimlik bilgilerini depolayarak veritabanı kapsamlı kimlik bilgilerini oluşturun. PolyBase için SQL ODBC Bağlayıcısı yalnızca temel kimlik doğrulamasını destekler. Veritabanı kapsamlı bir kimlik bilgisi oluşturmadan önce, veritabanının kimlik bilgilerini korumak için bir ana anahtarı olmalıdır. Daha fazla bilgi için bkz. CREATE MASTER KEY . Aşağıdaki örnek, veritabanı kapsamlı bir kimlik bilgisi oluşturur, kendi oturum açma bilgilerinizi ve parolanızı sağlar.
CREATE DATABASE SCOPED CREDENTIAL SQLServerCredentials
WITH IDENTITY = 'username',
SECRET = 'password';
Aşağıdaki örnekte konak WINSQL2019 adı ve SQL2019 örnek adıdır.
'Server=%s\SQL2019' anahtar değer çiftidir.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2019',
CONNECTION_OPTIONS = 'Server=%s\SQL2019',
CREDENTIAL = SQLServerCredentials
);
Alternatif olarak, sql server varsayılan örneğine bağlanmak için bir bağlantı noktası kullanabilirsiniz.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2019:58137',
CREDENTIAL = SQLServerCredentials
);
C. Always On kullanılabilirlik grubunun okunabilir ikincil çoğaltmasına başvurmak için dış veri kaynağı oluşturma
Şunlar için geçerlidir: SQL Server 2019 (15.x) ve sonraki sürümleri.
SQL Server'ın okunabilir ikincil çoğaltmasına başvuran bir dış veri kaynağı oluşturmak için öğesini CONNECTION_OPTIONS kullanarak belirtin ApplicationIntent=ReadOnly. Buna ek olarak, kullanılabilirlik veritabanını içinde Database={dbname}olarak CONNECTION_OPTIONS ayarlamanız veya kullanılabilirlik veritabanını, veritabanı kapsamlı kimlik bilgileri için kullanılan oturum açma bilgilerinin varsayılan veritabanı olarak ayarlamanız gerekir. Bunu kullanılabilirlik grubunun tüm kullanılabilirlik çoğaltmalarında yapmanız gerekir.
İlk olarak, SQL kimliği doğrulanmış oturum açma bilgileri için kimlik bilgilerini depolayarak veritabanı kapsamlı kimlik bilgilerini oluşturun. PolyBase için SQL ODBC Bağlayıcısı yalnızca temel kimlik doğrulamasını destekler. Veritabanı kapsamlı bir kimlik bilgisi oluşturmadan önce, veritabanının kimlik bilgilerini korumak için bir ana anahtarı olmalıdır. Daha fazla bilgi için bkz. CREATE MASTER KEY . Aşağıdaki örnek, veritabanı kapsamlı bir kimlik bilgisi oluşturur, kendi oturum açma bilgilerinizi ve parolanızı sağlar.
CREATE DATABASE SCOPED CREDENTIAL SQLServerCredentials
WITH IDENTITY = 'username',
SECRET = 'password';
Ardından yeni dış veri kaynağını oluşturun.
veritabanı kapsamlı kimlik bilgilerindeki Database=dbname oturum açma bilgileri için kullanılabilirlik veritabanını varsayılan veritabanı olarak dahil CONNECTION_OPTIONS etmeniz veya ayarlamanız fark etmeksizin, LOCATION parametresinde CREATE EXTERNAL TABLE deyiminde veritabanı adını üç parçalı bir adla sağlamanız gerekir. Örnek için bkz . EXTERNAL TABLE OLUŞTURMA.
Aşağıdaki örnekte kullanılabilirlik WINSQL2019AGL grubu dinleyici adı ve dbname CREATE EXTERNAL TABLE deyiminin hedefi olacak veritabanının adıdır.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2019AGL',
CONNECTION_OPTIONS = 'ApplicationIntent=ReadOnly; Database=dbname',
CREDENTIAL = SQLServerCredentials
);
Sistem görünümünde ApplicationIntentbir dış tablo belirtip sys.servers oluşturarak kullanılabilirlik grubunun yeniden yönlendirme davranışını gösterebilirsiniz. Aşağıdaki örnek betikte iki dış veri kaynağı oluşturulur ve her biri için bir dış tablo oluşturulur. Hangi sunucunun bağlantıya yanıt verdiğini test etmek için görünümleri kullanın. Benzer sonuçlar salt okunur yönlendirme özelliği aracılığıyla da elde edilebilir. Daha fazla bilgi için bkz. Always On kullanılabilirlik grubu için salt okunur yönlendirmeyi yapılandırma.
CREATE EXTERNAL DATA SOURCE [DataSource_SQLInstanceListener_ReadOnlyIntent]
WITH (
LOCATION = 'sqlserver://WINSQL2019AGL',
CONNECTION_OPTIONS = 'ApplicationIntent=ReadOnly; Database=dbname',
CREDENTIAL = [SQLServerCredentials]
);
GO
CREATE EXTERNAL DATA SOURCE [DataSource_SQLInstanceListener_ReadWriteIntent]
WITH (
LOCATION = 'sqlserver://WINSQL2019AGL',
CONNECTION_OPTIONS = 'ApplicationIntent=ReadWrite',
CREDENTIAL = [SQLServerCredentials]
);
GO
Kullanılabilirlik grubundaki veritabanının içinde, döndürülecek sys.servers bir görünüm ve sorguya hangi çoğaltmanın yanıt verdiğini belirlemenize yardımcı olan yerel örneğin adını oluşturun. Daha fazla bilgi için bkz. sys.servers.
CREATE VIEW vw_sys_servers AS
SELECT [name]
FROM sys.servers
WHERE server_id = 0;
GO
Ardından kaynak örnekte bir dış tablo oluşturun:
CREATE EXTERNAL TABLE vw_sys_servers_ro
(
name SYSNAME NOT NULL
)
WITH (
DATA_SOURCE = [DataSource_SQLInstanceListener_ReadOnlyIntent],
LOCATION = N'dbname.dbo.vw_sys_servers'
);
GO
CREATE EXTERNAL TABLE vw_sys_servers_rw
(
name SYSNAME NOT NULL
)
WITH (
DATA_SOURCE = [DataSource_SQLInstanceListener_ReadWriteIntent],
LOCATION = N'dbname.dbo.vw_sys_servers'
);
GO
SELECT [name]
FROM dbo.vw_sys_servers_ro;
--should return secondary replica instance
SELECT [name]
FROM dbo.vw_sys_servers_rw;
--should return primary replica instance
GO
D. PolyBase aracılığıyla S3 uyumlu nesne depolama alanında bir parquet dosyasını sorgulamak için dış veri kaynağı oluşturma
Şunlar için geçerlidir: SQL Server 2022 (16.x) ve sonraki sürümleri.
Aşağıdaki örnek betik, SQL Server'daki kaynak kullanıcı veritabanında bir dış veri kaynağı s3_ds oluşturur. Dış veri kaynağı, s3_dc veritabanı kapsamlı kimlik bilgilerine başvurur.
CREATE DATABASE SCOPED CREDENTIAL s3_dc
WITH IDENTITY = 'S3 Access Key', -- for S3-compatible object storage the identity must always be S3 Access Key
SECRET = '<access_key_id>:<secret_key_id>'; -- provided by the S3-compatible object storage
GO
CREATE EXTERNAL DATA SOURCE s3_ds
WITH (
LOCATION = 's3://<ip_address>:<port>/',
CREDENTIAL = s3_dc
);
GO
yeni dış veri kaynağını sys.external_data_sourcesile doğrulayın.
SELECT *
FROM sys.external_data_sources;
Ardından aşağıdaki örnek, OPENROWSET sorgusu aracılığıyla S3 uyumlu nesne depolama alanında depolanan bir parquet dosyasını sorgulamak için T-SQL'in kullanılmasını gösterir. Daha fazla bilgi için bkz. PolyBase ile S3 uyumlu bir nesne depolama alanında parquet dosyasını sanallaştırma.
SELECT *
FROM OPENROWSET (
BULK '/<bucket>/<parquet_folder>',
FORMAT = 'PARQUET',
DATA_SOURCE = 's3_ds'
) AS [cc];
E. PostgreSQL'e genel ODBC kullanarak dış veri kaynağı oluşturma
Önceki örneklerde olduğu gibi, önce bir veritabanı ana anahtarı ve veritabanı kapsamlı kimlik bilgileri oluşturun. Dış veri kaynağı için veritabanı kapsamlı kimlik bilgileri kullanılır. Bu örnekte, sunucuda PostgreSQL için genel bir ODBC veri sağlayıcısının yüklü olduğu da varsayılır.
Bu örnekte genel ODBC veri sağlayıcısı, varsayılan TCP 5432 bağlantı noktası kullanılarak PostgreSQL sunucusunun tam etki alanı adının olduğu POSTGRES1aynı ağdaki bir PostgreSQL veritabanı sunucusuna bağlanmak için kullanılır.
CREATE EXTERNAL DATA SOURCE POSTGRES1
WITH (
LOCATION = 'odbc://POSTGRES1.domain:5432',
CONNECTION_OPTIONS = 'Driver={PostgreSQL Unicode(x64)};',
CREDENTIAL = postgres_credential
);
Azure Depolama
Paylaşılan erişim imzası oluşturma
Hem Azure Blob Depolama hem de Azure Data Lake 2. Nesil için desteklenen kimlik doğrulama yöntemi paylaşılan erişim imzası (SAS) yöntemidir. Paylaşılan erişim imzası belirteci oluşturmanın basit bir yolu aşağıdaki adımları izleyin. Daha fazla bilgi için bkz. CREDENTIAL.
- Azure portalına ve istediğiniz Depolama Hesabına gidin.
- Veri Depolama menüsü altında istediğiniz Kapsayıcıya gidin.
- Paylaşılan erişim belirteçleri'ni seçin.
- İstenen eyleme göre uygun izni seçin. Başvuru için aşağıdaki tabloyu kullanın:
| Eylem | İzin |
|---|---|
| Dosyadan veri okuma | Okumak |
| Birden çok dosyadan ve alt klasörden veri okuma | Okuma ve Listeleme |
| Dış Tablo Oluştur'u Seç Olarak Kullanma (CETAS) | Okuma, Oluşturma ve Yazma |
- Belirteç son kullanma tarihini seçin.
- SAS belirteci ve URL'si oluşturun.
- SAS belirtecini kopyalayın.
F. abs:// arabirimini kullanarak Azure Blob Depolama'daki verilere erişmek için dış veri kaynağı oluşturma
Şunlar için geçerlidir: SQL Server 2022 (16.x) ve sonraki sürümleri.
Azure Depolama Hesabı v2 için yeni bir ön ek abs kullanın. Ön abs ek, kullanarak SHARED ACCESS SIGNATUREkimlik doğrulamasını destekler. Ön ek, abs önceki sürümlerde wasbkullanılan öğesinin yerini alır. HADOOP artık desteklenmiyor, artık kullanılmasına TYPE = BLOB_STORAGEgerek yok.
Azure depolama hesabı anahtarı artık gerekli değildir; bunun yerine aşağıdaki örnekte görebileceğiniz gibi SAS Belirteci kullanılır:
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD= '<password>';
GO
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredentialv2
WITH IDENTITY = 'SHARED ACCESS SIGNATURE', -- to use SAS the identity must be fixed as-is
SECRET = '<Blob_SAS_Token>';
GO
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
LOCATION = 'abs://<container>@<storage_account_name>.blob.core.windows.net/',
CREDENTIAL = AzureStorageCredentialv2
);
Azure Blob Depolama'da depolanan CSV dosyalarına erişme hakkında daha ayrıntılı bir örnek için bkz. PolyBase ile CSV dosyasını sanallaştırma.
G. Azure Data Lake 2. Nesil'deki verilere erişmek için dış veri kaynağı oluşturma
Şunlar için geçerlidir: SQL Server 2022 (16.x) ve sonraki sürümleri.
Önceki sürümlerde kullanılan yerine Azure Data Lake 2adls. Nesil için yeni bir ön ek abfs kullanın. Ön ek, adls bu örnekte gösterildiği gibi kimlik doğrulama yöntemi olarak SAS belirtecini de destekler:
--Create a database scoped credential using SAS Token
CREATE DATABASE SCOPED CREDENTIAL datalakegen2
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = '<DataLakeGen2_SAS_Token>';
GO
CREATE EXTERNAL DATA SOURCE data_lake_gen2_dfs
WITH (
LOCATION = 'adls://<container>@<storage_account>.dfs.core.windows.net',
CREDENTIAL = datalakegen2
);
Azure Data Lake 2. Nesil'de depolanan delta dosyalarına erişme hakkında daha ayrıntılı bir örnek için bkz. PolyBase ile delta tablosunu sanallaştırma.
Örnekler: Toplu İşlemler
Önemli
Bir dış veri kaynağını toplu işlemler için yapılandırırken URL'nin sonuna sondaki /, dosya adı veya paylaşılan erişim imzası parametrelerini eklemeyin LOCATION .
H. Azure Depolama'dan veri alma toplu işlemleri için dış veri kaynağı oluşturma
Şunlar için geçerlidir: SQL Server 2022 (16.x) ve sonraki sürümleri.
BULK INSERT veya OPENROWSET kullanarak toplu işlemler için aşağıdaki veri kaynağını kullanın. Kimlik bilgisi kimlik olarak ayarlanmalıdır SHARED ACCESS SIGNATURE , SAS belirtecinde başta ? yer almamalıdır, yüklenmesi gereken dosyada (örneğin srt=o&sp=r) en az okuma iznine sahip olmalıdır ve süre sonu süresi geçerli olmalıdır (tüm tarihler UTC saatindedir). Paylaşılan erişim imzaları hakkında daha fazla bilgi için bkz. Paylaşılan Erişim İmzalarını (SAS) Kullanma.
CREATE DATABASE SCOPED CREDENTIAL AccessAzureInvoices
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
-- Remove ? from the beginning of the SAS token
SECRET = '<azure_shared_access_signature>';
CREATE EXTERNAL DATA SOURCE MyAzureInvoices
WITH (
LOCATION = 'abs://<container>@<storage_account_name>.blob.core.windows.net/',
CREDENTIAL = AccessAzureInvoices,
);
Ben. Başka bir SQL Server'a bağlanmak için TDS 8.0 kullanarak dış veri kaynağı oluşturma
SQL Server 2025 (17.x) ve sonraki sürümler için geçerlidir.
SQL Server için en son Microsoft ODBC Sürücüsü 18'i kullanırken altında Encryptionseçeneğini kullanmanız CONNECTION_OPTIONS gerekir ve TrustServerCertificate ayrıca desteklenir. Belirtilmezse Encryption , varsayılan davranış şeklindedir Encrypt=Yes;TrustServerCertificate=No;ve bir sunucu sertifikasına ihtiyacınız vardır.
Bu örnekte SQL Kimlik Doğrulaması kullanılmıştır. Kimlik bilgilerini korumak için bir veritabanı ana anahtarına (DMK) ihtiyacınız vardır. Daha fazla bilgi için bkz. CREATE MASTER KEY . Aşağıdaki örnek, özel oturum açma bilgileri ve parola ile veritabanı kapsamlı bir kimlik bilgisi oluşturur.
CREATE DATABASE SCOPED CREDENTIAL SQLServerCredentials
WITH IDENTITY = '<username>',
SECRET = '<password>';
Hedef sunucu adı WINSQL2022, bağlantı noktası 58137ve varsayılan bir örnektir. belirterek Encrypt=Strict, bağlantı TDS 8.0 kullanır ve sunucu sertifikası her zaman doğrulanır. bu örnekte HostnameinCertificate kullanılan:WINSQL2022
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2022:58137',
CONNECTION_OPTIONS = 'Encrypt=Strict;HostnameInCertificate=WINSQL2022;'
CREDENTIAL = SQLServerCredentials
);
J. Şifreleme ve TrustServerCertificate seçeneğini kullanarak dış veri kaynağı oluşturma
Aşağıdaki önceki örnekte iki kod örneği verilmiştır. İlk kod parçacığında ve EncryptionTrustServerCertificate ayarlanmıştır.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2022:58137',
CONNECTION_OPTIONS = 'Encrypt=Yes;HostnameInCertificate=WINSQL2022;TrustServerCertificate=Yes;'
CREDENTIAL = SQLServerCredentials
);
Aşağıdaki kod parçacığı etkinleştirilmemiş Encryption .
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2022:58137',
CONNECTION_OPTIONS = 'Encrypt=no;'
CREDENTIAL = SQLServerCredentials
);
İlgili içerik
- HARICI VERI KAYNAĞINI DEĞIŞTIR (Transact-SQL)
- VERİTABANI KAPSAMINDA KIMLIK BİLGİSİ OLUŞTUR (Transact-SQL)
- HARICI DOSYA FORMATI OLUŞTUR (Transact-SQL)
- DIŞ TABLO OLUŞTUR (Transact-SQL)
- sys.external_data_sources (Transact-SQL)
- Paylaşılan Erişim İmzalarını (SAS) Kullanma
- PolyBase bağlantı yapılandırması (Transact-SQL)
* SQL Veritabanı *
Azure Synapse'i
Analiz
Genel Bakış: Azure SQL Veritabanı
için geçerlidir: Azure SQL Veritabanı
Elastik sorgular için bir dış veri kaynağı oluşturur. Dış veri kaynakları, bağlantı kurmak ve şu birincil kullanım örneklerini desteklemek için kullanılır:
- Veri sanallaştırma (önizleme)
- veya kullanarak
BULK INSERTtoplu yükleme işlemleriOPENROWSET - Elastik sorguyla SQL Veritabanı kullanarak uzak SQL Veritabanı veya Azure Synapse örneklerini sorgulama
- Elastik sorgu kullanarak parçalı SQL Veritabanı sorgulama
Transact-SQL söz dizimi kuralları
Sözdizimi
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ [ , ] CREDENTIAL = <credential_name> ]
[ [ , ] TYPE = { BLOB_STORAGE | RDBMS | SHARD_MAP_MANAGER } ]
[ [ , ] DATABASE_NAME = '<database_name>' ]
[ [ , ] SHARD_MAP_NAME = '<shard_map_manager>' ] )
[ ; ]
Tartışmalar
data_source_name
Veri kaynağı için kullanıcı tanımlı adı belirtir. Ad, SQL Veritabanı'ndaki veritabanında benzersiz olmalıdır.
LOCATION = '<prefix>://<path[:p ort]>'
Bağlantı protokolunu ve dış veri kaynağının yolunu sağlar.
| Dış Veri Kaynağı | Bağlayıcı konumu ön eki | Konum yolu | Kullanılabilirlik |
|---|---|---|---|
| Toplu İşlemler | https |
<storage_account>.blob.core.windows.net/<container> |
|
| Elastik Sorgu (parça) | Gerekli değil | <shard_map_server_name>.database.windows.net |
|
| Elastik Sorgu (uzak) | Gerekli değil | <remote_server_name>.database.windows.net |
|
| EdgeHub | edgehub |
edgehub:// |
YalnızcaAzure SQL Edge'de kullanılabilir. EdgeHub, Azure SQL Edge örneğinde her zaman yereldir. Bu nedenle bir yol veya bağlantı noktası değeri belirtmeniz gerekmez. |
| Kafka | kafka |
kafka://<kafka_bootstrap_server_name_ip>:<port_number> |
YalnızcaAzure SQL Edge'de kullanılabilir. |
| Azure Depolama Hesabı (v2) | abs |
abs://<container_name>@<storage_account_name>.blob.core.windows.net/veya abs://<storage_account_name>.blob.core.windows.net/
<container_name> |
|
| Azure Data Lake Storage (İkinci Nesil) | adls |
adls://<container_name>@<storage_account_name>.dfs.core.windows.net/veya adls://<storage_account_name>.dfs.core.windows.net/<container_name> |
Konum yolu:
-
<shard_map_server_name>= Azure'da parça eşleme yöneticisini barındıran mantıksal sunucu adı.DATABASE_NAMEbağımsız değişkeni, parça eşlemesini barındırmak için kullanılan veritabanını sağlar veSHARD_MAP_NAMEparça eşlemesinin kendisi için kullanılır. -
<remote_server_name>= Elastik sorgunun hedef mantıksal sunucu adı. Veritabanı adı bağımsız değişkeni kullanılarakDATABASE_NAMEbelirtilir.
Konumu ayarlarken ek notlar ve yönergeler:
- Veritabanı Altyapısı, nesne oluşturulduğunda dış veri kaynağının varlığını doğrulamaz. Doğrulamak için dış veri kaynağını kullanarak bir dış tablo oluşturun.
CREDENTIAL = credential_name
Dış veri kaynağında kimlik doğrulaması için veritabanı kapsamlı bir kimlik bilgisi belirtir.
Kimlik bilgisi oluştururken ek notlar ve yönergeler:
- Azure Depolama'dan Azure SQL Veritabanı'na veri yüklemek için Paylaşılan Erişim İmzası (SAS belirteci) kullanın.
-
CREDENTIALyalnızca verilerin güvenliği sağlanmışsa gereklidir.CREDENTIALanonim erişime izin veren veri kümeleri için gerekli değildir. -
TYPE=BLOB_STORAGEolduğunda kimlik bilgisi kimlik olarak kullanılarakSHARED ACCESS SIGNATUREoluşturulmalıdır. - Azure Depolama bağlantısı WASB[s] bağlayıcısını kullandığında, kimlik doğrulaması paylaşılan erişim imzası (SAS) ile değil depolama hesabı anahtarıyla yapılmalıdır.
-
TYPE=HADOOPKimlik bilgilerinin depolama hesabı anahtarı olarakSECRETkullanılarak oluşturulması gerektiğinde. -
TYPE=BLOB_STORAGEyalnızca toplu işlemler için izin verilir; ileTYPE=BLOB_STORAGEbir dış veri kaynağı için dış tablolar oluşturamazsınız.
Paylaşılan erişim imzası oluşturmanın birden çok yolu vardır:
Azure portalı -><Your_Storage_Account> - Paylaşılan erişim imzası -> İzinleri yapılandırma ->> SAS ve bağlantı dizesi oluşturma bölümüne giderek SAS belirteci oluşturabilirsiniz. Daha fazla bilgi için bkz . Paylaşılan erişim imzası oluşturma.
Azure Depolama Gezgini ile SAS oluşturabilir ve yapılandırabilirsiniz.
Sas belirtecini PowerShell, Azure CLI, .NET ve REST API aracılığıyla program aracılığıyla oluşturabilirsiniz. Daha fazla bilgi için bkz . Paylaşılan erişim imzalarını (SAS) kullanarak Azure Depolama kaynaklarına sınırlı erişim verme.
SAS belirteci aşağıdaki gibi yapılandırılmalıdır:
- SAS belirteci oluşturulduğunda belirtecin başında bir soru işareti ('?') bulunur. GİzLİ olarak yapılandırıldığında baştakileri
?hariç tutun. - Geçerli bir süre sonu dönemi kullanın (tüm tarihler UTC saatindedir).
- SAS belirteci oluşturulduğunda belirtecin başında bir soru işareti ('?') bulunur. GİzLİ olarak yapılandırıldığında baştakileri
Yüklenmesi gereken dosya üzerinde en azından okuma izni verin (örneğin
srt=o&sp=r). Farklı kullanım örnekleri için birden çok paylaşılan erişim imzası oluşturulabilir. İzinler aşağıdaki gibi verilmelidir:Eylem İzin Dosyadan veri okuma Okumak Birden çok dosyadan ve alt klasörden veri okuma Okuma ve Listeleme Dış Tablo Oluştur'u Seç Olarak Kullanma (CETAS) Okuma, Oluşturma ve Yazma
ve CREDENTIALSHARED ACCESS SIGNATURETYPEile = kullanma BLOB_STORAGE örneği için bkz. Toplu işlemleri yürütmek ve Azure Depolama'dan SQL Veritabanı'na veri almak için dış veri kaynağı oluşturma
Veritabanı kapsamlı kimlik bilgileri oluşturmak için bkz. CREATE DATABASE SCOPED CREDENTIAL.
TÜR = * [ BLOB_STORAGE | RDBMS | SHARD_MAP_MANAGER ] *
Yapılandırılan dış veri kaynağının türünü belirtir. Bu parametre her zaman gerekli değildir ve yalnızca belirli dış veri kaynakları için sağlanmalıdır.
- SQL Veritabanı'ndan elastik sorgu kullanarak veritabanları arası sorgular için kullanın
RDBMS. - Parçalı SQL Veritabanına bağlanırken dış veri kaynağı oluştururken kullanın
SHARD_MAP_MANAGER. - Yalnızca
BLOB_STORAGEön ek ilehttpskullanmak için kullanılır. veabdön ekleri içinadlssağlamayınTYPE.
Önemli
Başka bir dış veri kaynağı kullanıyorsanız ayarlamayın TYPE .
DATABASE_NAME = database_name
veya TYPEolarak ayarlandığında RDBMS bu bağımsız değişkeni SHARD_MAP_MANAGER yapılandırın.
| TİP | DATABASE_NAME değeri |
|---|---|
RDBMS |
Kullanılarak sağlanan sunucudaki uzak veritabanının adı LOCATION |
SHARD_MAP_MANAGER |
Parça eşleme yöneticisi olarak çalışan veritabanının adı |
burada TYPE = RDBMSdış veri kaynağının nasıl oluşturulacağını gösteren bir örnek için bkz. RDBMS dış veri kaynağı oluşturma.
SHARD_MAP_NAME = shard_map_name
TYPE Bağımsız değişken yalnızca parça eşlemesinin adını ayarlamak için ayarlandığında SHARD_MAP_MANAGER kullanılır.
Parça eşleme yöneticisi dış veri kaynağı oluşturma bölümüne başvuran TYPE nasıl oluşturulacağını = SHARD_MAP_MANAGER gösteren bir örnek için
İzinler
CONTROL Azure SQL Veritabanı'ndaki veritabanında izin gerektirir.
Kilitleme
Nesne üzerinde EXTERNAL DATA SOURCE paylaşılan bir kilit alır.
Örnekler
A. Parça eşleme yöneticisi dış veri kaynağı oluşturma
bir öğesine başvurmak SHARD_MAP_MANAGERüzere bir dış veri kaynağı oluşturmak için, SQL Veritabanı'nda parça eşleme yöneticisini barındıran SQL Veritabanı sunucu adını veya bir sanal makinedeki SQL Server veritabanını belirtin.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
CREATE DATABASE SCOPED CREDENTIAL ElasticDBQueryCred
WITH IDENTITY = '<username>',
SECRET = '<password>';
CREATE EXTERNAL DATA SOURCE MyElasticDBQueryDataSrc
WITH (
TYPE = SHARD_MAP_MANAGER,
LOCATION = '<server_name>.database.windows.net',
DATABASE_NAME = 'ElasticScaleStarterKit_ShardMapManagerDb',
CREDENTIAL = ElasticDBQueryCred,
SHARD_MAP_NAME = 'CustomerIDShardMap'
);
Adım adım öğretici için bkz. Parçalama (yatay bölümleme) için elastik sorgularla çalışmaya başlama.
B. RDBMS dış veri kaynağı oluşturma
RDBMS'ye başvurmak üzere bir dış veri kaynağı oluşturmak için, SQL Veritabanı'ndaki uzak veritabanının SQL Veritabanı sunucu adını belirtir.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
CREATE DATABASE SCOPED CREDENTIAL SQL_Credential
WITH IDENTITY = '<username>',
SECRET = '<password>';
CREATE EXTERNAL DATA SOURCE MyElasticDBQueryDataSrc
WITH (
TYPE = RDBMS,
LOCATION = '<server_name>.database.windows.net',
DATABASE_NAME = 'Customers',
CREDENTIAL = SQL_Credential
);
RDBMS ile ilgili adım adım öğretici için bkz. Veritabanları arası sorguları (dikey bölümleme) kullanmaya başlama.
Örnekler: Toplu işlemler
Önemli
Bir dış veri kaynağını toplu işlemler için yapılandırırken URL'nin sonuna sondaki /, dosya adı veya paylaşılan erişim imzası parametrelerini eklemeyin LOCATION .
C. Azure Depolama'dan veri alma toplu işlemleri için dış veri kaynağı oluşturma
BULK INSERT veya OPENROWSET BULK kullanarak toplu işlemler için aşağıdaki veri kaynağını kullanın. Kimlik bilgisi kimlik olarak ayarlanmalıdır SHARED ACCESS SIGNATURE , SAS belirtecinde başta ? yer almamalıdır, yüklenmesi gereken dosyada (örneğin srt=o&sp=r) en az okuma iznine sahip olmalıdır ve süre sonu süresi geçerli olmalıdır (tüm tarihler UTC saatindedir). Paylaşılan erişim imzaları hakkında daha fazla bilgi için bkz. Paylaşılan Erişim İmzalarını (SAS) Kullanma.
Yönetilen Kimlik kullanarak Azure Blob Depolama (ABS) için dış veri kaynağı oluşturma:
CREATE DATABASE SCOPED CREDENTIAL DSC_MI
WITH IDENTITY = 'Managed Identity';
--Create external data source pointing to the file path, and referencing database-scoped credential:
CREATE EXTERNAL DATA SOURCE PrivateABS
WITH (
LOCATION = 'abs://<container>@<storage_account_name>.blob.core.windows.net/',
CREDENTIAL = [DSC_MI]
);
Kullanıcı Kimliği kullanarak Azure Data Lake 2. Nesil (ADLS) için dış veri kaynağı oluşturma:
CREATE DATABASE SCOPED CREDENTIAL DSC_ADLS
WITH IDENTITY = 'User Identity';
--Create external data source pointing to the file path, and referencing database-scoped credential:
CREATE EXTERNAL DATA SOURCE PrivateADLS
WITH (
LOCATION = 'adls://<container>@<storage_account_name>.dfs.core.windows.net/',
CREDENTIAL = [DSC_ADLS]
);
Bu örneği kullanımda görmek için bkz . BULK INSERT.
Örnekler: Azure SQL Edge
Önemli
Azure SQL Edge için dış verileri yapılandırma hakkında bilgi için bkz. Azure SQL Edge'de veri akışı.
A. Kafka'ya başvurmak için dış veri kaynağı oluşturma
Şunlar için geçerlidir:YalnızcaAzure SQL Edge
Bu örnekte dış veri kaynağı, IP adresi xxx.xxx.xxx.xxx ve bağlantı noktası 1900'de dinleyen bir Kafka sunucusudur. Kafka dış veri kaynağı yalnızca veri akışı içindir ve koşul aşağı göndermeyi desteklemez.
-- Create an External Data Source for Kafka
CREATE EXTERNAL DATA SOURCE MyKafkaServer
WITH (
LOCATION = 'kafka://xxx.xxx.xxx.xxx:1900'
);
B. EdgeHub'a başvurmak için dış veri kaynağı oluşturma
Şunlar için geçerlidir:YalnızcaAzure SQL Edge
Bu örnekte dış veri kaynağı, Azure SQL Edge ile aynı uç cihazda çalışan bir EdgeHub'dır. edgeHub dış veri kaynağı yalnızca veri akışı içindir ve koşul aşağı göndermeyi desteklemez.
-- Create an External Data Source for Kafka
CREATE EXTERNAL DATA SOURCE MyEdgeHub
WITH (
LOCATION = 'edgehub://'
);
İlgili içerik
* Azure Synapse
Analiz *
Genel Bakış: Azure Synapse Analytics
için geçerlidir: Azure Synapse Analytics
Veri sanallaştırma için bir dış veri kaynağı oluşturur. Dış veri kaynakları, bağlantı kurmak ve dış veri kaynaklarından veri sanallaştırma ve veri yüklemenin birincil kullanım örneğini desteklemek için kullanılır. Daha fazla bilgi için bkz. Synapse SQL ile dış tabloları kullanma.
Önemli
Elastik sorguyla Azure SQL Veritabanı kullanarak Azure Synapse Analytics kaynağını sorgulamak üzere bir dış veri kaynağı oluşturmak için bkz. Azure SQL Veritabanı için EXTERNAL DATA SOURCE OLUŞTURMA.
Transact-SQL söz dizimi kuralları
Sözdizimi
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ [ , ] CREDENTIAL = <credential_name> ]
[ [ , ] TYPE = HADOOP ]
)
[ ; ]
Tartışmalar
data_source_name
Veri kaynağı için kullanıcı tanımlı adı belirtir. Ad, Azure Synapse Analytics'teki Azure SQL Veritabanı içinde benzersiz olmalıdır.
KONUM = '<önek>://<path>'
Bağlantı protokolunu ve dış veri kaynağının yolunu sağlar.
| Dış Veri Kaynağı | Bağlayıcı konumu ön eki | Konum yolu |
|---|---|---|
| Data Lake Storage* 1. Nesil | adl |
<storage_account>.azuredatalake.net |
| Data Lake Storage Gen 2 | abfs[s] |
<container>@<storage_account>.dfs.core.windows.net |
| Azure Blob Saklama Alanı | wasbs |
<container>@<storage_account>.blob.core.windows.net |
| Azure Blob Saklama Alanı | https |
<storage_account>.blob.core.windows.net/<container>/subfolders |
| Data Lake Storage 1. Nesil | http[s] |
<storage_account>.azuredatalakestore.net/webhdfs/v1 |
| Data Lake Storage Gen 2 | http[s] |
<storage_account>.dfs.core.windows.net/<container>/subfolders |
| Data Lake Storage Gen 2 | wasb[s] |
<container>@<storage_account>.blob.core.windows.net |
* Microsoft Azure Data Lake Storage 1. Nesil sınırlı desteğe sahiptir, tüm yeni geliştirmeler için 2. Nesil önerilir.
| Dış Veri Kaynağı | Bağlayıcı konumu ön eki | Ayrılmış SQL havuzları: PolyBase | Ayrılmış SQL havuzları: yerel* | Sunucusuz SQL havuzları |
|---|---|---|---|---|
| Data Lake Storage** 1. Nesil | adl |
Hayı | Hayı | Evet |
| Data Lake Storage Gen 2 | abfs[s] |
Evet | Evet | Evet |
| Azure Blob Saklama Alanı | wasbs |
Evet | Evet*** | Evet |
| Azure Blob Saklama Alanı | https |
Hayı | Evet | Evet |
| Data Lake Storage 1. Nesil | http[s] |
Hayı | Hayı | Evet |
| Data Lake Storage Gen 2 | http[s] |
Evet | Evet | Evet |
| Data Lake Storage Gen 2 | wasb[s] |
Evet | Evet | Evet |
* Azure Synapse Analytics'teki sunucusuz ve ayrılmış SQL havuzları, veri sanallaştırma için farklı kod temelleri kullanır. Sunucusuz SQL havuzları yerel bir veri sanallaştırma teknolojisini destekler. Ayrılmış SQL havuzları hem yerel hem de PolyBase veri sanallaştırmayı destekler. PolyBase veri sanallaştırması, EXTERNAL DATA SOURCE TYPE=HADOOPile oluşturulduğunda kullanılır.
** Microsoft Azure Data Lake Storage 1. Nesil sınırlı desteğe sahiptir. Tüm yeni geliştirmeler için 2. Nesil önerilir.
üzerinden wasbsdaha güvenli wasb bağlayıcı önerilir. Yalnızca ayrılmış SQL havuzlarında yerel veri sanallaştırma (TYPE'ın HADOOP'a eşit olmadığı) desteği wasb.
Konum yolu:
-
<container>= verileri tutan depolama hesabının kapsayıcısı. Kök kapsayıcılar salt okunur durumdadır, veriler kapsayıcıya geri yazılamaz. -
<storage_account>= Azure kaynağının depolama hesabı adı.
Konumu ayarlarken ek notlar ve yönergeler:
- Varsayılan seçenek, Azure Data Lake Storage 2. Nesil'i sağlarken kullanmaktır
enable secure SSL connections. Bu etkinleştirildiğinde güvenli bir TLS/SSL bağlantısı seçildiğinde kullanmanızabfssgerekir, ancakabfssgüvenli olmayan TLS bağlantıları için de çalışır. Daha fazla bilgi için bkz. Azure Blob Dosya Sistemi sürücüsü (ABFS). - Azure Synapse, nesne oluşturulduğunda dış veri kaynağının varlığını doğrulamaz. Doğrulamak için dış veri kaynağını kullanarak bir dış tablo oluşturun.
- Tutarlı sorgu semantiği sağlamak için Hadoop sorgularken tüm tablolar için aynı dış veri kaynağını kullanın.
-
https:ön ek, yolda alt klasör kullanmanızı sağlar.httpstüm veri erişim yöntemlerinde kullanılamaz. -
wasbsgüvenli bir TLS bağlantısı kullanılarak veri gönderileceği için önerilir. - Hiyerarşik Ad Alanları, eski
wasb://arabirimi kullanarak verilere erişirken Azure V2 Depolama Hesapları ile desteklenmez, ancak kullanmakwasbs://Hiyerarşik Ad Alanlarını destekler.
CREDENTIAL = credential_name
Opsiyonel. Dış veri kaynağında kimlik doğrulaması için veritabanı kapsamlı kimlik bilgilerini belirtir. Kimlik bilgisi olmayan dış veri kaynağı, azure depolamadaki dosyalara erişmek için genel depolama hesabına erişebilir veya çağıranın Microsoft Entra kimliğini kullanabilir.
Kimlik bilgisi oluştururken ek notlar ve yönergeler:
- Azure Depolama veya Azure Data Lake Store (ADLS) 2. Nesil'den Azure Synapse Analytics'e veri yüklemek için bir Azure Depolama Anahtarı kullanın.
-
CREDENTIALyalnızca verilerin güvenliği sağlanmışsa gereklidir.CREDENTIALanonim erişime izin veren veri kümeleri için gerekli değildir.
Veritabanı kapsamlı kimlik bilgileri oluşturmak için bkz. CREATE DATABASE SCOPED CREDENTIAL.
Sunucusuz SQL havuzunda, veritabanı kapsamlı kimlik bilgileri çalışma alanı yönetilen kimliği, hizmet asıl adı veya paylaşılan erişim imzası (SAS) belirteci belirtebilir. Microsoft Entra geçişi olarak da bilinen bir kullanıcı kimliği aracılığıyla erişim, genel kullanıma açık depolamaya anonim erişim olduğu gibi, veritabanı kapsamlı kimlik bilgisinde de mümkündür. Daha fazla bilgi için bkz . Desteklenen depolama yetkilendirme türleri.
Ayrılmış SQL havuzunda, veritabanı kapsamlı kimlik bilgileri paylaşılan erişim imzası (SAS) belirteci, depolama erişim anahtarı, hizmet sorumlusu, çalışma alanı yönetilen kimliği veya Microsoft Entra geçişi belirtebilir.
TÜR = HADOOP
İsteğe bağlı, önerilmez.
TYPE'i yalnızca ayrılmış SQL havuzlarıyla belirtebilirsiniz.
HADOOP belirtildiğinde izin verilen tek değerdir. ile TYPE=HADOOP dış veri kaynakları yalnızca ayrılmış SQL havuzlarında kullanılabilir.
Eski uygulamalar için HADOOP kullanın, aksi takdirde daha yeni yerel veri erişimini kullanmanız önerilir. Daha yeni yerel veri erişimini kullanmak için TÜR bağımsız değişkenini belirtmeyin.
Azure Depolama'dan veri yüklemek için kullanma TYPE = HADOOP örneği için bkz. Hizmet sorumlusu kullanarak Azure Data Lake Store 1. Veya 2. Nesil'e başvurmak için dış veri kaynağı oluşturma.
Azure Synapse Analytics'teki sunucusuz ve ayrılmış SQL havuzları, veri sanallaştırma için farklı kod temelleri kullanır. Sunucusuz SQL havuzları yerel bir veri sanallaştırma teknolojisini destekler. Ayrılmış SQL havuzları hem yerel hem de PolyBase veri sanallaştırmayı destekler. PolyBase veri sanallaştırması, EXTERNAL DATA SOURCE TYPE=HADOOPile oluşturulduğunda kullanılır.
İzinler
Veritabanı üzerinde CONTROL izni gereklidir.
Kilitleme
Nesne üzerinde EXTERNAL DATA SOURCE paylaşılan bir kilit alır.
Güvenlik
Dış veri kaynaklarının çoğu, ara sunucu hesabı oluşturmak için veritabanı kapsamlı bir kimlik bilgisi kullanarak ara sunucu tabanlı kimlik doğrulamasını destekler.
Paylaşılan Erişim İmzası (SAS) anahtarları, Azure Data Lake Store 2. Nesil Depolama Hesaplarında kimlik doğrulaması için desteklenir. Paylaşılan Erişim İmzası kullanarak kimlik doğrulaması yapmak isteyen müşterilerin, gizli dizi olarak sas belirtecinin girilip girildiği IDENTITY = "Shared Access Signature" veritabanı kapsamlı bir kimlik bilgisi oluşturması gerekir.
Burada veritabanı kapsamlı bir kimlik bilgisi IDENTITY = "Shared Access Signature" oluşturursanız ve gizli dizi olarak bir depolama anahtarı değeri kullanırsanız aşağıdaki hata iletisini alırsınız:
'HdfsBridge::isDirExist - Unexpected error encountered checking whether directory exists or not: AbfsRestOperationException: Operation failed: "Server failed to authenticate the request. Please refer to the information in the www-authenticate header.", 401, HEAD, [Storage path URL]'
Örnekler
A. wasb:// arabirimini kullanarak Azure Depolama'daki verilere erişmek için dış veri kaynağı oluşturma
Bu örnekte dış veri kaynağı adlı logsbir Azure Depolama hesabı V2'dir. Depolama konteyneri .daily Azure Depolama dış veri kaynağı yalnızca veri aktarımı içindir. Koşul aşağı göndermeyi desteklemez. Arabirim aracılığıyla wasb:// verilere erişirken hiyerarşik ad alanları desteklenmez. veya wasbaracılığıyla wasbs Azure Depolama'ya bağlanırken kimlik doğrulaması, paylaşılan erişim imzası (SAS) ile değil depolama hesabı anahtarıyla yapılmalıdır.
Bu örnekte eski HADOOP Java tabanlı erişim yöntemi kullanılır. Aşağıdaki örnekte, Azure Depolama'da kimlik doğrulaması için veritabanı kapsamlı kimlik bilgilerinin nasıl oluşturulacağı gösterilmektedir. Veritabanı kimlik bilgisi gizli dizisinde Azure Depolama hesabı anahtarını belirtin. Azure depolamada kimlik doğrulaması sırasında kullanılmadığından veritabanı kapsamlı kimlik bilgileri kimliğindeki herhangi bir dizeyi belirtebilirsiniz.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
WITH IDENTITY = '<my_account>',
SECRET = '<azure_storage_account_key>';
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
TYPE = HADOOP,
LOCATION = 'wasbs://daily@logs.blob.core.windows.net/',
CREDENTIAL = AzureStorageCredential
);
B. Hizmet sorumlusu kullanarak Azure Data Lake Store 1. veya 2. Nesil'e başvurmak için dış veri kaynağı oluşturma
Azure Data Lake Store bağlantısı ADLS URI'nizi ve Microsoft Entra uygulamanızın hizmet sorumlusunu temel alabilir. Bu uygulamayı oluşturmaya yönelik belgeler , Microsoft Entra Id kullanılarak Data lake store kimlik doğrulaması bölümünde bulunabilir.
-- If you do not have a Master Key on your DW you will need to create one.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- These values come from your Microsoft Entra application used to authenticate to ADLS
CREATE DATABASE SCOPED CREDENTIAL ADLS_credential
WITH
-- IDENTITY = '<clientID>@<OAuth2.0TokenEndPoint>' ,
IDENTITY = '536540b4-4239-45fe-b9a3-629f97591c0c@https://login.microsoftonline.com/42f988bf-85f1-41af-91ab-2d2cd011da47/oauth2/token',
-- SECRET = '<KEY>'
SECRET = 'BjdIlmtKp4Fpyh9hIvr8HJlUida/seM5kQ3EpLAmeDI=';
-- For Gen 1 - Create an external data source
-- TYPE: HADOOP - PolyBase uses Hadoop APIs to access data in Azure Data Lake Storage.
-- LOCATION: Provide Data Lake Storage Gen 1 account name and URI
-- CREDENTIAL: Provide the credential created in the previous step
CREATE EXTERNAL DATA SOURCE AzureDataLakeStore
WITH (
TYPE = HADOOP,
LOCATION = 'adl://newyorktaxidataset.azuredatalakestore.net',
CREDENTIAL = ADLS_credential
);
-- For Gen2 - Create an external data source
-- TYPE: HADOOP - PolyBase uses Hadoop APIs to access data in Azure Data Lake Storage.
-- LOCATION: Provide Data Lake Storage Gen2 account name and URI
-- CREDENTIAL: Provide the credential created in the previous step
CREATE EXTERNAL DATA SOURCE AzureDataLakeStore
WITH (
-- Note the abfss endpoint when your account has secure transfer enabled
TYPE = HADOOP,
LOCATION = 'abfss://data@newyorktaxidataset.dfs.core.windows.net',
CREDENTIAL = ADLS_credential
);
C. Depolama hesabı anahtarını kullanarak Azure Data Lake Store 2. Nesil'e başvurmak için dış veri kaynağı oluşturma
-- If you do not have a Master Key on your DW you will need to create one.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
CREATE DATABASE SCOPED CREDENTIAL ADLS_credential
WITH
-- IDENTITY = '<storage_account_name>' ,
IDENTITY = 'newyorktaxidata',
-- SECRET = '<storage_account_key>'
SECRET = 'yz5N4+bxSb89McdiysJAzo+9hgEHcJRJuXbF/uC3mhbezES/oe00vXnZEl14U0lN3vxrFKsphKov16C0w6aiTQ==';
-- Note this example uses a Gen2 secured endpoint (abfss)
CREATE EXTERNAL DATA SOURCE < data_source_name >
WITH (
LOCATION = 'abfss://2013@newyorktaxidataset.dfs.core.windows.net',
CREDENTIAL = ADLS_credential,
TYPE = HADOOP
);
D. abfs:// kullanarak Azure Data Lake Store 2. Nesil'e dış veri kaynağı oluşturma
Azure Data Lake Store Gen2 hesabına yönetilen kimliklerle bağlanırken belirtmeye SECRET gerek yok.
-- If you do not have a Master Key on your DW you will need to create one
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
--Create database scoped credential with **IDENTITY = 'Managed Service Identity'**
CREATE DATABASE SCOPED CREDENTIAL msi_cred
WITH IDENTITY = 'Managed Service Identity';
--Create external data source with abfss:// scheme for connecting to your Azure Data Lake Store Gen2 account
CREATE EXTERNAL DATA SOURCE ext_datasource_with_abfss
WITH (
TYPE = HADOOP,
LOCATION = 'abfss://myfile@mystorageaccount.dfs.core.windows.net',
CREDENTIAL = msi_cred
);
İlgili içerik
- VERİTABANI KAPSAMINDA KIMLIK BİLGİSİ OLUŞTUR (Transact-SQL)
- HARICI DOSYA FORMATI OLUŞTUR (Transact-SQL)
- DIŞ TABLO OLUŞTUR (Transact-SQL)
- CREATE EXTERNAL TABLE AS SELECT (Azure Synapse Analytics)
- CREATE TABLE AS SELECT (Azure Synapse Analytics)
- sys.external_data_sources (Transact-SQL)
- Paylaşılan Erişim İmzalarını (SAS) Kullanma
Azure Synapse'i
Analiz
* Analiz
Platform Sistemi (PDW) *
Genel Bakış: Analiz Platformu Sistemi
Şunlar için geçerlidir: Analiz Platformu Sistemi (PDW)
PolyBase sorguları için bir dış veri kaynağı oluşturur. Bağlantı kurmak ve aşağıdaki kullanım durumunu desteklemek için harici veri kaynakları kullanılır: SQL Server'da PolyBase kullanılarak veri sanallaştırma ve veri yüklemesi.
Transact-SQL söz dizimi kuralları
Sözdizimi
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ [ , ] CREDENTIAL = <credential_name> ]
[ [ , ] TYPE = HADOOP ]
[ [ , ] RESOURCE_MANAGER_LOCATION = '<resource_manager>[:<port>]' )
[ ; ]
Tartışmalar
data_source_name
Veri kaynağı için kullanıcı tanımlı adı belirtir. Ad, Analiz Platformu Sistemi'ndeki (PDW) sunucu içinde benzersiz olmalıdır.
LOCATION = '<prefix>://<path[:p ort]>'
Bağlantı protokolunu ve dış veri kaynağının yolunu sağlar.
| Dış Veri Kaynağı | Bağlayıcı konumu ön eki | Konum yolu |
|---|---|---|
| Cloudera CDH veya Hortonworks HDP | hdfs |
<Namenode>[:port] |
| Azure Depolama Hesabı | wasb[s] |
<container>@<storage_account>.blob.core.windows.net |
Konum yolu:
-
<Namenode>= Hadoop kümesindeki öğesinin makine adı, ad hizmeti URI'siNamenodeveya IP adresi. PolyBase, Hadoop kümesi tarafından kullanılan DNS adlarını çözümlemelidir. -
port= Dış veri kaynağının dinlediği bağlantı noktası. Hadoop'ta bağlantı noktası yapılandırma parametresi kullanılarakfs.defaultFSbulunabilir. Varsayılan değer 8020'dir. -
<container>= verileri tutan depolama hesabının kapsayıcısı. Kök kapsayıcılar salt okunur durumdadır, veriler kapsayıcıya geri yazılamaz. -
<storage_account>= Azure kaynağının depolama hesabı adı.
Konumu ayarlarken ek notlar ve yönergeler:
- PDW altyapısı, nesne oluşturulduğunda dış veri kaynağının varlığını doğrulamaz. Doğrulamak için dış veri kaynağını kullanarak bir dış tablo oluşturun.
- Tutarlı sorgu semantiği sağlamak için Hadoop sorgularken tüm tablolar için aynı dış veri kaynağını kullanın.
-
wasbsgüvenli bir TLS bağlantısı kullanılarak veri gönderileceği için önerilir. - Hiyerarşik Ad Alanları, wasb:// üzerinden Azure Depolama hesaplarıyla kullanıldığında desteklenmez.
- Hadoop yük devretmesi sırasında PolyBase sorgularının başarılı olmasını sağlamak için Hadoop
NamenodekümesininNamenodesanal IP adresini kullanmayı göz önünde bulundurun. Aksi takdirde ALTER EXTERNAL DATA SOURCE komutunu yürüterek yeni konumu işaret edin.
CREDENTIAL = credential_name
Dış veri kaynağında kimlik doğrulaması için veritabanı kapsamlı bir kimlik bilgisi belirtir.
Kimlik bilgisi oluştururken ek notlar ve yönergeler:
- Azure Depolama'dan Azure Synapse veya PDW'ye veri yüklemek için bir Azure Depolama Anahtarı kullanın.
-
CREDENTIALyalnızca verilerin güvenliği sağlanmışsa gereklidir.CREDENTIALanonim erişime izin veren veri kümeleri için gerekli değildir.
TYPE = * [ HADOOP ] *
Yapılandırılan dış veri kaynağının türünü belirtir. Bu parametre her zaman gerekli değildir.
- Dış veri kaynağı Cloudera CDH, Hortonworks HDP veya Azure Depolama olduğunda HADOOP kullanın.
Azure Depolama'dan veri yüklemek için kullanma TYPE = HADOOP örneği için bkz. Hadoop'a başvurmak için dış veri kaynağı oluşturma.
RESOURCE_MANAGER_LOCATION = 'ResourceManager_URI[:p ort]'
SQL Server 2019'da (15.x), Bir Azure Depolama hesabı olan Cloudera CDH, Hortonworks HDP'ye bağlanmadığınız sürece RESOURCE_MANAGER_LOCATION belirtmeyin.
Yalnızca Cloudera CDH, Hortonworks HDP veya bir Azure Depolama hesabına bağlanırken bu isteğe bağlı değeri yapılandırın. Desteklenen Hadoop sürümlerinin tam listesi için bkz. PolyBase bağlantı yapılandırması.
RESOURCE_MANAGER_LOCATION tanımlandığında, sorgu iyileştirici performansı geliştirmek için maliyet tabanlı bir karar verir. MapReduce işi, hesaplamayı Hadoop'a göndermek için kullanılabilir. değerinin RESOURCE_MANAGER_LOCATION belirtilmesi Hadoop ile SQL arasında aktarılan veri hacmini önemli ölçüde azaltabilir ve bu da sorgu performansının artmasına neden olabilir.
Resource Manager belirtilmezse, PolyBase sorguları için Hadoop'a işlem gönderme devre dışı bırakılır. Aşağı itme özelliğinin etkinleştirildiği Hadoop'a başvurmak için dış veri kaynağı oluşturma , somut bir örnek ve daha fazla rehberlik sağlar.
dış veri kaynağını oluşturduğunuzda RESOURCE_MANAGER_LOCATION değeri doğrulanmaz. Yanlış bir değer girilmesi, sağlanan değer çözümlenemediğinden, aşağı gönderme denendiği her durumda yürütme sırasında sorgu hatasına neden olabilir.
PolyBase'in hadoop dış veri kaynağıyla düzgün çalışması için aşağıdaki Hadoop kümesi bileşenlerinin bağlantı noktalarının açık olması gerekir:
- HDFS bağlantı noktaları
- Ad Düğümü
- Veri düğümü
- Kaynak Yöneticisi
- İş gönderimi
- İş geçmişi
Bağlantı noktası belirtilmezse, 'hadoop bağlantısı' yapılandırması için geçerli ayar kullanılarak varsayılan değer seçilir.
| Hadoop Bağlantısı | Varsayılan Resource Manager Bağlantı Noktası |
|---|---|
1 |
50300 |
2 |
50300 |
3 |
8021 |
4 |
8032 |
5 |
8050 |
6 |
8032 |
7 |
8050 |
Aşağıdaki tabloda bu bileşenler için varsayılan bağlantı noktaları gösterilmektedir. Hadoop sürüm bağımlılığının yanı sıra varsayılan bağlantı noktası atamasını kullanmayan özel yapılandırma olasılığı da vardır.
| Hadoop küme bileşeni | Varsayılan Bağlantı Noktası |
|---|---|
| NameNode | 8020 |
| DataNode (Veri aktarımı, ayrıcalıksız IPC bağlantı noktası) | 50010 |
| DataNode (Veri aktarımı, ayrıcalık IPC bağlantı noktası) | 1019 |
| Resource Manager İş Gönderimi (Hortonworks 1.3) | 50300 |
| Resource Manager İş Gönderimi (Cloudera 4.3) | 8021 |
| Resource Manager İş Gönderimi (Windows'ta Hortonworks 2.0, Linux'ta Cloudera 5.x) | 8032 |
| Resource Manager İş Gönderimi (Linux üzerinde Hortonworks 2.x, 3.0, Windows üzerinde Hortonworks 2.1-3) | 8050 |
| Resource Manager İş Geçmişi | 10020 |
İzinler
CONTROL Analiz Platformu Sistemi'ndeki (PDW) veritabanında izin gerektirir.
Uyarı
PDW'nin önceki sürümlerinde dış veri kaynağı için gerekli ALTER ANY EXTERNAL DATA SOURCE izinleri oluşturun.
Kilitleme
Nesne üzerinde EXTERNAL DATA SOURCE paylaşılan bir kilit alır.
Güvenlik
PolyBase, dış veri kaynaklarının çoğu için ara sunucu tabanlı kimlik doğrulamasını destekler. Proxy hesabını oluşturmak için veritabanı kapsamlı bir kimlik bilgisi oluşturun.
Türü HADOOP olan bir SAS belirteci desteklenmiyor. Bunun yerine yalnızca depolama hesabı erişim anahtarı kullanıldığında tür = BLOB_STORAGE ile desteklenir. Tür HADOOP ve SAS kimlik bilgilerine sahip bir dış veri kaynağı oluşturma girişimi aşağıdaki hatayla başarısız oluyor:
Msg 105019, Level 16, State 1 - EXTERNAL TABLE access failed due to internal error: 'Java exception raised on call to HdfsBridge_Connect. Java exception message: Parameters provided to connect to the Azure storage account aren't valid.: Error [Parameters provided to connect to the Azure storage account aren't valid.] occurred while accessing external file.'
Örnekler
A. Hadoop'a başvurmak için dış veri kaynağı oluşturma
Hortonworks HDP veya Cloudera CDH'nize başvurmak üzere bir dış veri kaynağı oluşturmak için Hadoop Namenode ve bağlantı noktasının makine adını veya IP adresini belirtin.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
TYPE = HADOOP,
LOCATION = 'hdfs://10.10.10.10:8050'
);
B. Aşağı gönderme etkin hadoop'a başvurmak için dış veri kaynağı oluşturma
RESOURCE_MANAGER_LOCATION PolyBase sorguları için Hadoop'a aşağı itme hesaplamasını etkinleştirme seçeneğini belirtin. Etkinleştirildikten sonra PolyBase, sorgu hesaplamasının Hadoop'a gönderilip gönderilmeyeceğini belirlemek için maliyet tabanlı bir karar verir.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
TYPE = HADOOP,
LOCATION = 'hdfs://10.10.10.10:8020',
RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);
C. Kerberos güvenli Hadoop'a başvurmak için dış veri kaynağı oluşturma
Hadoop kümesinin Kerberos ile güvenli olup olmadığını doğrulamak için Hadoop core-site.xmliçindeki özelliğinin hadoop.security.authentication değerini denetleyin. Kerberos güvenli Hadoop kümesine başvurmak için, Kerberos kullanıcı adınızı ve parolanızı içeren veritabanı kapsamlı bir kimlik bilgisi belirtmeniz gerekir. Veritabanı ana anahtarı, veritabanı kapsamlı kimlik bilgisi gizli dizisini şifrelemek için kullanılır.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Kerberos user name and password.
CREATE DATABASE SCOPED CREDENTIAL HadoopUser1
WITH IDENTITY = '<hadoop_user_name>',
SECRET = '<hadoop_password>';
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
TYPE = HADOOP,
LOCATION = 'hdfs://10.10.10.10:8050',
CREDENTIAL = HadoopUser1,
RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);
D. wasb:// arabirimini kullanarak Azure Depolama'daki verilere erişmek için dış veri kaynağı oluşturma
Bu örnekte dış veri kaynağı adlı logsbir Azure V2 Depolama hesabıdır. Depolama konteyneri .daily Azure Depolama dış veri kaynağı yalnızca veri aktarımı içindir. Koşul aşağı göndermeyi desteklemez. Arabirim aracılığıyla wasb:// verilere erişirken hiyerarşik ad alanları desteklenmez. veya wasbaracılığıyla wasbs Azure Depolama'ya bağlanırken kimlik doğrulaması, paylaşılan erişim imzası (SAS) ile değil depolama hesabı anahtarıyla yapılmalıdır.
Bu örnekte, Azure depolamada kimlik doğrulaması için veritabanı kapsamlı kimlik bilgilerinin nasıl oluşturulacağı gösterilmektedir. Veritabanı kimlik bilgisi gizli dizisinde Azure depolama hesabı anahtarını belirtin. Azure depolamada kimlik doğrulaması sırasında kullanılmadığından veritabanı kapsamlı kimlik bilgileri kimliğindeki herhangi bir dizeyi belirtebilirsiniz.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
WITH IDENTITY = '<my_account>',
SECRET = '<azure_storage_account_key>';
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
TYPE = HADOOP,
LOCATION = 'wasbs://daily@logs.blob.core.windows.net/',
CREDENTIAL = AzureStorageCredential
);
İlgili içerik
* SQL Yönetilen Örneği *
Azure Synapse'i
Analiz
Genel Bakış: Azure SQL Yönetilen Örneği
Şunlar için geçerlidir: Azure SQL Yönetilen Örneği
Azure SQL Yönetilen Örneği'nde bir dış veri kaynağı oluşturur. Tam bilgi için bkz. Azure SQL Yönetilen Örneği ile veri sanallaştırma.
Azure SQL Yönetilen Örneği'nde veri sanallaştırma, OPENROWSET veya CREATE EXTERNAL TABLE aracılığıyla çeşitli dosya biçimlerinde dış verilere erişim sağlar.
Transact-SQL söz dizimi kuralları
Sözdizimi
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ [ , ] CREDENTIAL = <credential_name> ]
)
[ ; ]
Tartışmalar
data_source_name
Veri kaynağı için kullanıcı tanımlı adı belirtir. Adın veritabanında benzersiz olması gerekir.
LOCATION = '<prefix>://<path[:p ort]>'
Bağlantı protokolunu ve dış veri kaynağının yolunu sağlar.
| Dış Veri Kaynağı | Konum ön eki | Konum yolu |
|---|---|---|
| Azure Blob Saklama Alanı | abs |
abs://<container>@<storage_account>.blob.core.windows.net/<path>/<file_name> |
| Azure Data Lake Service 2. Nesil | adls |
adls://<container>@<storage_account>.dfs.core.windows.net/<path>/<file_name> |
Veritabanı Altyapısı, nesne oluşturulduğunda dış veri kaynağının varlığını doğrulamaz. Doğrulamak için dış veri kaynağını kullanarak bir dış tablo oluşturun.
Bir dış veri kaynağını toplu işlemler için yapılandırırken URL'nin sonuna sondaki /, dosya adı veya paylaşılan erişim imzası parametrelerini eklemeyin LOCATION .
CREDENTIAL = credential_name
Dış veri kaynağında kimlik doğrulaması için veritabanı kapsamlı bir kimlik bilgisi belirtir.
Kimlik bilgisi oluştururken ek notlar ve yönergeler:
- Azure Depolama'dan Azure SQL Yönetilen Örneği'ne veri yüklemek için Paylaşılan Erişim İmzası (SAS belirteci) kullanın.
-
CREDENTIALyalnızca verilerin güvenliği sağlanmışsa gereklidir.CREDENTIALanonim erişime izin veren veri kümeleri için gerekli değildir. - Bir kimlik bilgisi gerekiyorsa, kimlik bilgisi veya kimlik olarak oluşturulmalıdır
Managed IdentitySHARED ACCESS SIGNATURE. Veritabanı kapsamlı kimlik bilgileri oluşturmak için bkz. CREATE DATABASE SCOPED CREDENTIAL.
Veritabanı kapsamlı kimlik bilgileri için yönetilen hizmet kimliğini kullanmak için:
Belirtmek
WITH IDENTITY = 'Managed Identity'Bu amaçla kullanılacaksa etkinleştirilmesi gereken Azure SQL Yönetilen Örneği'nin sistem tarafından atanan yönetilen hizmet kimliğini kullanın.
- Okuyucu Azure RBAC rolünü, gerekli Azure Blob Depolama kapsayıcılarına Azure SQL Yönetilen Örneğinin sistem tarafından atanan yönetilen hizmet kimliğine verin. Örneğin, Azure portalı aracılığıyla bkz. Azure portalını kullanarak Azure rolleri atama.
Veritabanı kapsamlı kimlik bilgileri için paylaşılan erişim imzası (SAS) oluşturmak için:
Belirtmek
WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = ...Paylaşılan erişim imzası oluşturmanın birden çok yolu vardır:
- Azure portalı -><Your_Storage_Account> - Paylaşılan erişim imzası -> İzinleri yapılandırma ->> SAS ve bağlantı dizesi oluşturma bölümüne giderek SAS belirteci alabilirsiniz. Daha fazla bilgi için bkz . Paylaşılan erişim imzası oluşturma.
- Azure Depolama Gezgini ile SAS oluşturabilir ve yapılandırabilirsiniz.
- Sas belirtecini PowerShell, Azure CLI, .NET ve REST API aracılığıyla program aracılığıyla oluşturabilirsiniz. Daha fazla bilgi için bkz . Paylaşılan erişim imzalarını (SAS) kullanarak Azure Depolama kaynaklarına sınırlı erişim verme.
SAS belirteci aşağıdaki gibi yapılandırılmalıdır:
- SAS belirteci oluşturulduğunda belirtecin başında bir soru işareti ('?') bulunur. GİzLİ olarak yapılandırıldığında baştakileri
?hariç tutun. - Geçerli bir süre sonu dönemi kullanın (tüm tarihler UTC saatindedir).
- SAS belirteci oluşturulduğunda belirtecin başında bir soru işareti ('?') bulunur. GİzLİ olarak yapılandırıldığında baştakileri
Yüklenmesi gereken dosya üzerinde en azından okuma izni verin (örneğin
srt=o&sp=r). Farklı kullanım örnekleri için birden çok paylaşılan erişim imzası oluşturulabilir. İzinler aşağıdaki gibi verilmelidir:Eylem İzin Dosyadan veri okuma Okumak Birden çok dosyadan ve alt klasörden veri okuma Okuma ve Listeleme Dış Tablo Oluştur'u Seç Olarak Kullanma (CETAS) Okuma, Oluşturma ve Yazma
İzinler
CONTROL Azure SQL Yönetilen Örneği'ndeki veritabanında izin gerektirir.
Kilitleme
Nesne üzerinde EXTERNAL DATA SOURCE paylaşılan bir kilit alır.
Örnekler
Daha fazla örnek için bkz. Azure SQL Yönetilen Örneği ile veri sanallaştırma.
A. OPENROWSET veya dış tablo ile Azure SQL Yönetilen Örneği'nden dış verileri sorgulama
Daha fazla örnek için bkz . CREATE EXTERNAL DATA SOURCE veya bkz. Azure SQL Yönetilen Örneği ile veri sanallaştırma.
Yoksa veritabanı ana anahtarını oluşturun.
-- Optional: Create MASTER KEY if it doesn't exist in the database: CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Strong Password>' GOSAS belirteci kullanarak veritabanı kapsamlı kimlik bilgilerini oluşturun. Yönetilen kimlik de kullanabilirsiniz.
CREATE DATABASE SCOPED CREDENTIAL MyCredential WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = '<KEY>' ; --Removing leading '?' GOKimlik bilgilerini kullanarak dış veri kaynağını oluşturun.
--Create external data source pointing to the file path, and referencing database-scoped credential: CREATE EXTERNAL DATA SOURCE MyPrivateExternalDataSource WITH ( LOCATION = 'abs://public@pandemicdatalake.blob.core.windows.net/curated/covid-19/bing_covid-19_data/latest', CREDENTIAL = [MyCredential] );OpenROWSET T-SQL söz dizimini kullanarak dış veri kaynağındaki sorgu parquet veri dosyası, şemayı bilmeden verileri hızla keşfetmek için şema çıkarımına dayanır.
--Query data with OPENROWSET, relying on schema inference. SELECT TOP 10 * FROM OPENROWSET ( BULK 'bing_covid-19_data.parquet', DATA_SOURCE = 'MyExternalDataSource', FORMAT = 'parquet' ) AS filerows;İsterseniz, yürütme maliyetini sorgulayan şema çıkarımına güvenmek yerine, OPENROWSET with yan tümcesini kullanarak verileri sorgulayabilirsiniz. CSV'de şema çıkarımı desteklenmez.
--Or, query data using the WITH clause on a CSV, where schema inference is not supported SELECT TOP 10 id, updated, confirmed, confirmed_change FROM OPENROWSET ( BULK 'bing_covid-19_data.csv', DATA_SOURCE = 'MyExternalDataSource', FORMAT = 'CSV', FIRSTROW = 2 ) WITH ( id INT, updated DATE, confirmed INT, confirmed_change INT ) AS filerows;Verileri yerel tablo olarak sorgulamak için bir EXTERNAL FILE FORMAT ve external table da oluşturabilirsiniz.
-- Or, create an EXTERNAL FILE FORMAT and an EXTERNAL TABLE --Create external file format CREATE EXTERNAL FILE FORMAT DemoFileFormat WITH (FORMAT_TYPE = PARQUET) GO --Create external table: CREATE EXTERNAL TABLE tbl_TaxiRides ( vendorID VARCHAR(100) COLLATE Latin1_General_BIN2, tpepPickupDateTime DATETIME2, tpepDropoffDateTime DATETIME2, passengerCount INT, tripDistance FLOAT, puLocationId VARCHAR(8000), doLocationId VARCHAR(8000), startLon FLOAT, startLat FLOAT, endLon FLOAT, endLat FLOAT, rateCodeId SMALLINT, storeAndFwdFlag VARCHAR(8000), paymentType VARCHAR(8000), fareAmount FLOAT, extra FLOAT, mtaTax FLOAT, improvementSurcharge VARCHAR(8000), tipAmount FLOAT, tollsAmount FLOAT, totalAmount FLOAT ) WITH ( LOCATION = 'yellow/puYear=*/puMonth=*/*.parquet', DATA_SOURCE = NYCTaxiExternalDataSource, FILE_FORMAT = MyFileFormat\.\./\.\./\.\./azure-sql/ ); GO --Then, query the data via an external table with T-SQL: SELECT TOP 10 * FROM tbl_TaxiRides; GO
İlgili içerik
Azure Synapse'i
Analiz
*Microsoft Fabric Veri Deposu *
Genel Bakış: Microsoft Fabric Data Warehouse
Şunlar için geçerlidir: Doku Veri Ambarı
Dış veri kaynağı oluşturur.
Transact-SQL söz dizimi kuralları
Sözdizimi
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( LOCATION = '<prefix>://<path>[:<port>]' )
[ ; ]
Tartışmalar
data_source_name
Veri kaynağı için kullanıcı tanımlı adı belirtir. Adın veritabanında benzersiz olması gerekir.
LOCATION = '<prefix>://<path[:p ort]>'
Bağlantı protokolunu ve dış veri kaynağının yolunu sağlar.
| Dış Veri Kaynağı | Konum ön eki | Konum yolu |
|---|---|---|
| Azure Blob Saklama Alanı | https |
https://<storage_account>.blob.core.windows.net/<container>/<path> |
| Azure Data Lake Service 2. Nesil | abfss |
abfss://<container>@<storage_account>.dfs.core.windows.net/<path> |
Veritabanı Altyapısı, nesne oluşturulduğunda dış veri kaynağının varlığını doğrulamaz.
Bir dış veri kaynağını toplu işlemler için yapılandırırken URL'nin sonuna sondaki /, dosya adı veya paylaşılan erişim imzası parametrelerini eklemeyin LOCATION .
İzinler
Hedef depolama hesabı özelse, sorumlunun başvuruda bulunan dosyaları okuma iznine de sahip olması gerekir.
- Azure Data Lake Storage ve Azure Blob Depolama için sorumlunun kapsayıcı veya depolama hesabı düzeyinde Depolama Blob Veri Okuyucusu rolü (veya üzeri) atanmış olması gerekir.
- Doku One Lake depolama için sorumlunun "ReadAll" izinlerine sahip olması gerekir.
Kilitleme
Nesne üzerinde EXTERNAL DATA SOURCE paylaşılan bir kilit alır.
Örnekler
A. OPENROWSET veya dış tablo ile dış verileri sorgulama
Dış veri kaynağını oluşturun.
--Create external data source pointing to the file path, and referencing database-scoped credential: CREATE EXTERNAL DATA SOURCE MyPrivateExternalDataSource WITH ( LOCATION = 'https://pandemicdatalake.blob.core.windows.net/public/curated/covid-19/bing_covid-19_data/latest' );OpenROWSET T-SQL söz dizimini kullanarak dış veri kaynağındaki sorgu parquet veri dosyası, şemayı bilmeden verileri hızla keşfetmek için şema çıkarımına dayanır.
--Query data with OPENROWSET, relying on schema inference. SELECT TOP 10 * FROM OPENROWSET ( BULK 'bing_covid-19_data.parquet', DATA_SOURCE = 'MyPrivateExternalDataSource' );İsterseniz, yürütme maliyetini sorgulayan şema çıkarımına güvenmek yerine, OPENROWSET with yan tümcesini kullanarak verileri sorgulayabilirsiniz.
--Or, query data using the WITH clause on a CSV, where schema inference is not supported SELECT TOP 10 id, updated, confirmed, confirmed_change FROM OPENROWSET ( BULK 'bing_covid-19_data.csv', DATA_SOURCE = 'MyPrivateExternalDataSource' FIRSTROW = 2 ) WITH ( id INT, updated DATE, confirmed INT, confirmed_change INT ) AS filerows;
İlgili içerik
Azure Synapse'i
Analiz
* Fabric SQL veritabanı *
Genel Bakış: Microsoft Fabric'te SQL veritabanı
Geçerlidir:Microsoft Fabric'te SQL veritabanı
SQL veritabanında Fabric'te veri sanallaştırması için harici bir veri kaynağı oluşturur.
Transact-SQL söz dizimi kuralları
Sözdizimi
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ ; ]
Tartışmalar
data_source_name
Veri kaynağı için kullanıcı tanımlı adı belirtir. Adın veritabanında benzersiz olması gerekir.
LOCATION = '<prefix>://<path[:p ort]>'
Bağlantı protokolunu ve dış veri kaynağının yolunu sağlar.
Fabric SQL veritabanı yalnızca OneLake (abfss) veri kaynağı olarak destekler.
| Dış Veri Kaynağı | Bağlayıcı konumu ön eki | Konum yolu | Kullanılabilirlik |
|---|---|---|---|
| OneLake | abfss |
abfss://<workspaceid>@<tenant>.dfs.fabric.microsoft.com/ |
Doku SQL veritabanı |
Konumu ayarlarken ek notlar ve yönergeler:
- Veritabanı Altyapısı, nesne oluşturulduğunda dış veri kaynağının varlığını doğrulamaz. Doğrulamak için dış veri kaynağını kullanarak bir dış tablo oluşturun.
İzinler
CONTROL Azure SQL Veritabanı'ndaki veritabanında izin gerektirir.
Kilitleme
Nesne üzerinde EXTERNAL DATA SOURCE paylaşılan bir kilit alır.
Örnekler
A. Lakehouse dosya klasörüne harici bir veri kaynağı oluşturun
Bu örnek, yüklenmiş Parquet ve CSV dosyalarına erişmek için bir Lakehouse'a adlandırılmış MyLakeHouse harici veri kaynağını bağlamayı içerir. Bu örnekteki bu dosyalar, klasörün Contoso altındaki Files dizin içinde yer almaktadır.
Bir Fabric Lakehouse veri kaynağı oluşturmak için workspace ID, kiracı ve lakehouse ID sağlamanız gerekir. Bir göl evinin ABFSS dosya konumunu bulmak için Fabric portalına gidin. Lakehouse'a gidin, istediğiniz klasör konumuna gidin, Özellikler'i seçin....
ABFS yolunu kopyalayın, bu şöyle görünüyor: abfss://<WorkSpaceID>@<Tenant>.dfs.fabric.microsoft.com/<LakehouseID>/Files/Contoso.
Fabric SQL veritabanı yalnızca Entra ID Geçiş doğrulamasını desteklediğinden, veritabanı kapsamlı kimlik bilgilerinin sağlanmasına gerek yoktur; bağlantı her zaman kullanıcının giriş kimlik bilgilerini kullanarak konuma ulaşır.
CREATE EXTERNAL DATA SOURCE MyLakeHouse
WITH (
LOCATION = 'abfss://<workspace id>@<tenant>.dfs.fabric.microsoft.com/<lakehouseid>/Files/Contoso'
);