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.
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 *
Genel Bakış: SQL Server 2016
Applies to: 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 ServerPolyBase kullanılarak veri sanallaştırma ve veri yükü>
- veya kullanarak
BULK INSERTtoplu yükleme işlemleriOPENROWSET
Uyarı
CREATE EXTERNAL DATA SOURCE söz dizimi, SQL Database Engine farklı sürümlerinde farklılık gösterir.
Uygun ürün sürümünü 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 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 (13.x) ile başlayarak Hiyerarşik Ad Alanı desteklenmiyor |
hesap anahtarını Azure Depolama |
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>= adlandırılmış SQL Server ö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 Database Engine, 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 SQL Server 2016'da (13.x) veriler güvenli bir TLS/SSL bağlantısı kullanılarak gönderileceği için Azure Depolama Hesapları erişmesi ö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 HADOOP olarak belirtilmelidir. Cloudera CDH, Hortonworks HDP veya Azure Depolama hesabı bağlantılarını destekler. Bu parametrenin davranışı, SQL Server'in sonraki sürümlerinde farklıdır.
Azure Depolama bir hesaptan veri yüklemek için TYPE = HADOOP kullanma örneği için bkz. wasb:// arabirimini kullanarak Azure Depolama verilere erişmek için dış veri kaynağı oluşturma
RESOURCE_MANAGER_LOCATION = *'ResourceManager_URI[:p ort]'
Yalnızca Cloudera CDH, Hortonworks HDP veya 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.
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ü
- Resource Manager
- İş 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 İşi Gönderme (Cloudera 4.3) | 8021 |
| Resource Manager İş Gönderimi (Windows'da Hortonworks 2.0, Linux'ta Cloudera 5.x) | 8032 |
| Resource Manager İş Gönderimi (Linux'ta Hortonworks 2.x, 3.0, Windows'da Hortonworks 2.1-3) | 8050 |
| Resource Manager İş Geçmişi | 10020 |
İzinler
SQL Server veritabanında CONTROL izni 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.
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ğı, logs adlı bir Azure V2 Depolama hesabıdır. Depolama konteyneri .daily Dış veri kaynağının Azure Depolama 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, bir 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 hesap anahtarını belirtin. Azure Depolama kimlik doğrulaması sırasında kullanılmadığından, veritabanı kapsamlı kimlik bilgisi kimliğindeki herhangi bir dizeyi belirtebilirsiniz.
wasb veya wasbs aracılığıyla Azure Depolama 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 erişirken bile HADOOP 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
Applies to: 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 ServerPolyBase kullanılarak veri sanallaştırma ve veri yükü>
- veya kullanarak
BULK INSERTtoplu yükleme işlemleriOPENROWSET
Uyarı
CREATE EXTERNAL DATA SOURCE söz dizimi farklı Linux üzerinde SQL Server 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ı
CREATE EXTERNAL DATA SOURCE söz dizimi, SQL Database Engine farklı sürümlerinde farklılık gösterir.
Uygun ürün sürümünü 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 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 2019 (15.x) için SQL Server 2016 (13.x) | Anonim veya temel kimlik doğrulaması |
| Azure Depolama hesabı(V2) | wasb[s] |
<container>@<storage_account>.blob.core.windows.net |
SQL Server 2016 (13.x) ile başlayarak Hiyerarşik Ad Alanı desteklenmiyor |
hesap anahtarını Azure Depolama |
| Toplu İşlemler | https |
<storage_account>.blob.core.windows.net/<container> |
SQL Server 2017 (14.x) ile 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>= adlandırılmış SQL Server ö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 Database Engine, 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ı 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. -
wasbveyawasbsaracılığıyla Azure Depolama 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:
sas belirteci oluşturmak için Azure portalı -><Your_Storage_Account> -> Paylaşılan erişim imzası -> İzinleri yapılandırma -> SAS ve bağlantı dizesi oluşturun. 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ı (SAS) kullanarak Azure Depolama kaynaklarına sınırlı erişim.
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
SHARED ACCESS SIGNATURE ve TYPE = BLOB_STORAGE ile CREDENTIAL kullanma örneği için bkz. Toplu işlemleri yürütmek ve Azure Depolama'den 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 bağlanırken belirtilmelidir.
- Dış veri kaynağı Cloudera CDH, Hortonworks HDP, Azure Depolama hesabı veya Azure Data Lake Storage 2. Nesil olduğunda
HADOOPkullanın. -
BULK INSERT veya OPENROWSET BULK kullanarak Azure Depolama hesabından toplu işlemleri yürütürken
BLOB_STORAGEkullanın. SQL Server 2017 (14.x) ile tanıtıldı. Azure Depolama karşıCREATE EXTERNAL TABLEkullanmayı planlarkenHADOOPkullanın.
Uyarı
TYPE, Azure Depolama erişirken bile HADOOP olarak ayarlanmalıdır.
Azure Depolama bir hesaptan veri yüklemek için TYPE = HADOOP kullanma örneği için bkz. wasb:// arabirimini kullanarak Azure Depolama verilere erişmek için dış veri kaynağı oluşturma
RESOURCE_MANAGER_LOCATION = 'ResourceManager_URI[:p ort]'
Yalnızca Cloudera CDH, Hortonworks HDP veya 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.
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ü
- Resource Manager
- İş 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 İşi Gönderme (Cloudera 4.3) | 8021 |
| Resource Manager İş Gönderimi (Windows'da Hortonworks 2.0, Linux'ta Cloudera 5.x) | 8032 |
| Resource Manager İş Gönderimi (Linux'ta Hortonworks 2.x, 3.0, Windows'da Hortonworks 2.1-3) | 8050 |
| Resource Manager İş Geçmişi | 10020 |
İzinler
SQL Server veritabanında CONTROL izni 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.
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ğı, logs adlı bir Azure V2 Depolama hesabıdır. Depolama konteyneri .daily Dış veri kaynağının Azure Depolama 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.
wasb veya wasbs aracılığıyla Azure Depolama 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, bir 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 hesap anahtarını belirtin. Azure Depolama kimlik doğrulaması sırasında kullanılmadığından, veritabanı kapsamlı kimlik bilgisi 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 almak için toplu işlemler için dış veri kaynağı oluşturma
Applies to: 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
- ALTER EXTERNAL DATA SOURCE (Transact-SQL)
- CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL)
- CREATE EXTERNAL FILE FORMAT (Transact-SQL)
- OLUŞTUR EXTERNAL TABLE (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
Applies to: 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 ServerPolyBase kullanılarak veri sanallaştırma ve veri yükü>
- veya kullanarak
BULK INSERTtoplu yükleme işlemleriOPENROWSET
Uyarı
CREATE EXTERNAL DATA SOURCE söz dizimi, SQL Database Engine farklı sürümlerinde farklılık gösterir.
Uygun ürün sürümünü 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ı
CREATE EXTERNAL DATA SOURCE söz dizimi, SQL Database Engine farklı sürümlerinde farklılık gösterir.
Uygun ürün sürümünü 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 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 (13.x) ile başlayarak Hiyerarşik Ad Alanı desteklenmiyor |
hesap anahtarını Azure Depolama |
| SQL Server | 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 (14.x) ile başlayarak | Paylaşılan erişim imzası (SAS) |
| Azure Data Lake Storage 2. Nesil | abfs[s] |
abfss://<container>@<storage_account>.dfs.core.windows.net |
SQL Server 2019 (15.x) CU11+ ile başlayarak. | Depolama Erişim Anahtarı |
| veri havuzunu SQL Server Büyük Veri Kümeleri | sqldatapool |
sqldatapool://controller-svc/default |
Yalnızca SQL Server 2019 Büyük Veri Kümeleri desteklenir | Yalnızca temel kimlik doğrulaması |
| depolama havuzunu SQL Server Büyük Veri Kümeleri | sqlhdfs |
sqlhdfs://controller-svc/default |
Yalnızca SQL Server 2019 Büyük Veri Kümeleri 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>= adlandırılmış SQL Server ö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 Database Engine, 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.
-
sqlserverbağlayıcısını kullanarak SQL Server 2019'u (15.x) başka bir SQL Server bağlayabilir veya Azure SQL Veritabanı. - aracılığıyla
Driver={<Name of Driver>}bağlanırken değeriniODBCbelirtin. -
wasbsveyaabfsskullanılması isteğe bağlıdır, ancak Azure Depolama Hesapları erişmek için SQL Server 2019'da (15.x) önerilir, ancak veriler güvenli bir TLS/SSL bağlantısı kullanılarak gönderilir. -
abfsveyaabfssAPI'leri, SQL Server 2019 (15.x) CU11'den başlayarak Azure Depolama Hesapları erişirken desteklenir. Daha fazla bilgi için bkz. Azure Blob Dosya Sistemi sürücüsü (ABFS). -
abfs[s]kullanan 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çinkullanma hakkında daha fazla bilgi için bkz. SQL Server 2019 Büyük Veri Kümesi Query HDFS. - 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ümlerde yer almamıştır. Daha fazla bilgi için bkz. Microsoft SQL Server platformunda Big veri seçenekleri.
CONNECTION_OPTIONS = key_value_pair
SQL Server 2019 (15.x) ve sonraki sürümler için belirtilir. 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ın yanı sıra mongoDB için SQL Server, Oracle, Teradata, MongoDB ve Azure Cosmos DB API'leri için yerleşik ODBC 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, dış veri kaynağı düzeyinde SQL Server, Oracle, Teradata, MongoDB, MongoDB için Azure Cosmos DB API'sine veya 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:
sas belirteci oluşturmak için Azure portalı -><Your_Storage_Account> -> Paylaşılan erişim imzası -> İzinleri yapılandırma -> SAS ve bağlantı dizesi oluşturun. 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ı (SAS) kullanarak Azure Depolama kaynaklarına sınırlı erişim.
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
SHARED ACCESS SIGNATURE ve TYPE = BLOB_STORAGE ile CREDENTIAL kullanma örneği için bkz. Toplu işlemleri yürütmek ve Azure Depolama'den 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 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
HADOOPkullanın. -
BULK INSERT veya OPENROWSET BULK kullanarak Azure Depolama hesabından toplu işlemleri yürütürken SQL Server 2017 (14.x) ile
BLOB_STORAGEkullanın. Azure Depolama karşı EXTERNAL TABLE oluşturmayı planlarkenHADOOPkullanın. - 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ümlerde yer almamıştır. Daha fazla bilgi için bkz. Microsoft SQL Server platformunda Big veri seçenekleri.
bir Azure Depolama hesabından veri yüklemek için TYPE = HADOOP kullanma örneği için bkz. Wasb:// arabirimini kullanarak Azure Depolama verilere erişmek için dış veri kaynağı oluşturma.
RESOURCE_MANAGER_LOCATION = 'ResourceManager_URI[:p ort]'
SQL Server 2019'da (15.x), Azure Depolama bir hesap olan Cloudera CDH, Hortonworks HDP'ye bağlanmadığınız sürece RESOURCE_MANAGER_LOCATION belirtmeyin.
Yalnızca Cloudera CDH, Hortonworks HDP veya 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.
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ü
- Resource Manager
- İş 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 İşi Gönderme (Cloudera 4.3) | 8021 |
| Resource Manager İş Gönderimi (Windows'da Hortonworks 2.0, Linux'ta Cloudera 5.x) | 8032 |
| Resource Manager İş Gönderimi (Linux'ta Hortonworks 2.x, 3.0, Windows'da Hortonworks 2.1-3) | 8050 |
| Resource Manager İş Geçmişi | 10020 |
İzinler
SQL Server veritabanında CONTROL izni 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.
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 itibaren 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 TNSNamesFile tarafından belirtilen tnsnames.ora dosya konumunu arar ve ServerName tarafından belirtilen 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ğı, logs adlı bir Azure V2 Depolama hesabıdır. Depolama konteyneri .daily Dış veri kaynağının Azure Depolama 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.
wasb veya wasbs aracılığıyla Azure Depolama 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, bir 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 hesap anahtarını belirtin. Azure Depolama kimlik doğrulaması sırasında kullanılmadığından, veritabanı kapsamlı kimlik bilgisi 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 adlandırılmış SQL Server örneğe başvurmak için dış veri kaynağı oluşturma
Applies to: SQL Server 2019 (15.x) ve üzeri
SQL Server adlandırılmış örneğine başvuran bir dış veri kaynağı oluşturmak için örnek adını belirtmek için CONNECTION_OPTIONS kullanın.
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
Applies to: SQL Server 2019 (15.x) ve üzeri
SQL Server okunabilir ikincil çoğaltmasına başvuran bir dış veri kaynağı oluşturmak için CONNECTION_OPTIONS kullanarak ApplicationIntent=ReadOnly belirtin. 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 almak için toplu işlemler için dış veri kaynağı oluşturma
Applies to: 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
Applies to: SQL Server 2019 (15.x) CU11 ve üzeri
Bu örnekte dış veri kaynağı, >Azure Blob Dosya Sistemi sürücüsü (ABFS) kullanarak logs Azure Data Lake Storage 2. Nesil bir hesaptır. Depolama konteyneri .daily Azure Data Lake Storage 2. Nesil dış veri kaynağı yalnızca veri aktarımı içindir çünkü koşul aşağı gönderme desteklenmez.
Bu örnekte, bir 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 hesap anahtarını belirtin. Azure Depolama kimlik doğrulaması sırasında kullanılmadığından, veritabanı kapsamlı kimlik bilgisi 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
- ALTER EXTERNAL DATA SOURCE (Transact-SQL)
- CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL)
- CREATE EXTERNAL FILE FORMAT (Transact-SQL)
- OLUŞTUR EXTERNAL TABLE (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
Applies to: SQL Server 2022 (16.x) ve sonraki sürümleri
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 ServerPolyBase kullanılarak veri sanallaştırma ve veri yükü>
- veya kullanarak
BULK INSERTtoplu yükleme işlemleriOPENROWSET
Uyarı
CREATE EXTERNAL DATA SOURCE söz dizimi, SQL Database Engine farklı sürümlerinde farklılık gösterir.
Uygun ürün sürümünü 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ümlerin 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 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 2. 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 Server | 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 (14.x) ile 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>= adlandırılmış SQL Server ö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 Database Engine, 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.
-
sqlserverbağlayıcısını kullanarak SQL Server 2019'u (15.x) başka bir SQL Server veya Azure SQL Veritabanı bağlayabilirsiniz. - aracılığıyla
Driver={<Name of Driver>}bağlanırken değeriniODBCbelirtin. -
adlsön ekini kullanan 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 (16.x) içinde yer almamıştır. 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. S3 uyumlu nesne depolamadaki dış verilere erişmek için PolyBase'i 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.
- önceki sürümlerden farklı olarak, SQL Server 2022'de (16.x) Azure Depolama Hesabı (v2) için kullanılan ön ek
wasb[s]'denabsolarak değiştirildi. - önceki sürümlerden farklı olarak, SQL Server 2022'de (16.x) Azure Data Lake Storage 2. Nesil için kullanılan ön ek
abfs[s]adlsolarak değ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 (
abs) hem de Azure Data Lake 2. Nesil (adls) 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(önerilir) 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 özellikleri destekler:
adls://<container>@<storage_account_name>.blob.core.windows.net(önerilir) 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 belirtilir. 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ın yanı sıra mongoDB için SQL Server, Oracle, Teradata, MongoDB ve Azure Cosmos DB API'leri için yerleşik ODBC 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ümler. Hesaplamanın dış veri kaynağına gönderilip gönderilemeyeceğini belirtir. Varsayılan olarak açıktır.
PUSHDOWN, dış veri kaynağı düzeyinde SQL Server, Oracle, Teradata, MongoDB, MongoDB için Azure Cosmos DB API'sine veya 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 Hesaba (V2) veya Azure Data Lake Storage 2. Nesil erişirken,
IDENTITYSHARED ACCESS SIGNATUREolmalıdır. - Örnek için bkz. Toplu işlemleri yürütmek ve Azure Depolama'dan SQL Veritabanı veri almak için dış veri kaynağı oluşturma.
Paylaşılan erişim imzası oluşturmanın birden çok yolu vardır:
sas belirteci oluşturmak için Azure portalı -><Your_Storage_Account> -> Paylaşılan erişim imzası -> İzinleri yapılandırma -> SAS ve bağlantı dizesi oluşturun. 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ı (SAS) kullanarak Azure Depolama kaynaklarına sınırlı erişim.
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
SQL Server veritabanında CONTROL izni 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(16.x) tarihinden itibaren Hadoop dış veri kaynakları artık desteklenmemektedir. 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 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 Depolama | wasb[s] |
abs |
| ADLS 2. Nesil | abfs[s] |
adls |
Örnekler
Önemli
PolyBase'i yükleme ve etkinleştirme hakkında bilgi için bkz.
A. Oracle'a başvurmak için SQL Server'de 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 TNSNamesFile tarafından belirtilen tnsnames.ora dosya konumunu arar ve ServerName tarafından belirtilen 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 adlandırılmış SQL Server örneğe başvurmak için dış veri kaynağı oluşturma
Applies to: SQL Server 2019 (15.x) ve üzeri
SQL Server adlandırılmış örneğine başvuran bir dış veri kaynağı oluşturmak için örnek adını belirtmek için CONNECTION_OPTIONS kullanın.
İ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
Applies to: SQL Server 2019 (15.x) ve üzeri
SQL Server okunabilir ikincil çoğaltmasına başvuran bir dış veri kaynağı oluşturmak için CONNECTION_OPTIONS kullanarak ApplicationIntent=ReadOnly belirtin. 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
Applies to: 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
Applies to: 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 depolanan CSV dosyalarına erişme hakkında daha ayrıntılı bir örnek için bkz. PolyBase ile CSV dosyasını etkinleştirme.
G. Azure Data Lake 2. Nesil'deki verilere erişmek için dış veri kaynağı oluşturma
Applies to: SQL Server 2022 (16.x) ve sonraki sürümleri
SQL Server 2022'den (16.x) başlayarak, önceki sürümlerde kullanılan abfs yerine Azure Data Lake 2. Nesil için yeni bir ön ek adls 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 etkinleştirme.
Ö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 almak için toplu işlemler için dış veri kaynağı oluşturma
Applies to: 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
- ALTER EXTERNAL DATA SOURCE (Transact-SQL)
- CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL)
- CREATE EXTERNAL FILE FORMAT (Transact-SQL)
- OLUŞTUR EXTERNAL TABLE (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
Applies to: 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 ServerPolyBase kullanılarak 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. Ayrıntılar için PolyBase yönetilen kimlikle Azure Depolama bağlanma bölümünü gözden geçirin.
Uyarı
CREATE EXTERNAL DATA SOURCE söz dizimi, SQL Database Engine farklı sürümlerinde farklılık gösterir.
Uygun ürün sürümünü 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ümlerin söz dizimi
Söz dizimi kuralları hakkında daha fazla bilgi için bkz. Transact-SQL söz dizimi kuralları.
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 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 |
| Azure Data Lake Storage 2. 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 |
| SQL Server | 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 (14.x) ile 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ştirilen SQL Server 2025 (17.x) örneği gerektirir. Ayrıntılar için PolyBase yönetilen kimliği olan Azure Depolama bağlanma bölümünü gözden geçirin.
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> |
adlandırılmış SQL Server ö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 Database Engine, 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.
sqlserverbağlayıcısını kullanarak SQL Server 2019'u (15.x) başka bir SQL Server veya Azure SQL Veritabanı bağlayabilirsiniz.aracılığıyla
Driver={<Name of Driver>}bağlanırken değeriniODBCbelirtin.adlsön ekini kullanan 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'te (17.x)
TYPEbağımsız değişkenini kullanmanız gerekmez.SQL Server 2022 (16.x) ve sonraki sürümlerde S3 uyumlu nesne depolama ve PolyBase hakkında daha fazla bilgi için bkz. S3 uyumlu nesne depolamadaki dış verilere erişmek için PolyBase'i 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
wasb[s]'denabsolarak değiştirildiAzure Data Lake Storage 2. Nesil için kullanılan ön ek
abfs[s]adlsolarak değiştirildiAzure 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 (
abs) hem de Azure Data Lake 2. Nesil (adls) 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(önerilir) veyaabs://<storage_account_name>.blob.core.windows.net/<container>.
- Azure Depolama Hesabı v2:
Azure Data Lake 2. Nesil şu özellikleri destekler:
adls://<container>@<storage_account_name>.blob.core.windows.net(önerilir) veyaadls://<storage_account_name>.dfs.core.windows.net/<container>.
CONNECTION_OPTIONS = key_value_pair
Applies to: SQL Server 2019 (15.x) ve sonraki sürümleri.
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ın yanı sıra mongoDB için SQL Server, Oracle, Teradata, MongoDB ve Azure Cosmos DB API'leri için yerleşik ODBC 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 (17.x) başlayarak, veri kaynağı olarak sqlserver kullanıldığında, SQL Server için Microsoft ODBC Sürücüsü 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.
Her zaman en son sürücüyü kullanmalısınız. Ancak SQL Server 2025 (17.x), geriye dönük uyumluluk için SQL Server için Microsoft ODBC Sürücüsü 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
Applies to: 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 etkindir.
PUSHDOWN, dış veri kaynağı düzeyinde SQL Server, Oracle, Teradata, MongoDB, MongoDB için Azure Cosmos DB API'sine veya 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 Hesaba (V2) veya Azure Data Lake Storage 2. Nesil erişirken,
IDENTITYSHARED ACCESS SIGNATUREolmalıdır.Örnek için bkz. Toplu işlemleri yürütmek ve Azure Depolama'dan SQL Veritabanı 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 a giderek SAS belirteci oluşturabilirsiniz> > Configure permissions GENErate SAS and bağlantı dizesi . 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ı (SAS) kullanarak Azure Depolama kaynaklarına sınırlı erişim.
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
SQL Server veritabanında CONTROL izni 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ümlerde 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 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 Depolama | 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 üzerinde PolyBase'i yükleme.
A. Oracle'a başvurmak için SQL Server'de 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 TNSNamesFile tarafından belirtilen tnsnames.ora dosya konumunu arar ve ServerName tarafından belirtilen 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 adlandırılmış SQL Server örneğe başvurmak için dış veri kaynağı oluşturma
Applies to: SQL Server 2019 (15.x) ve sonraki sürümleri.
SQL Server adlandırılmış örneğine başvuran bir dış veri kaynağı oluşturmak için örnek adını belirtmek için CONNECTION_OPTIONS kullanın.
İ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
Applies to: SQL Server 2019 (15.x) ve sonraki sürümleri.
SQL Server okunabilir ikincil çoğaltmasına başvuran bir dış veri kaynağı oluşturmak için CONNECTION_OPTIONS kullanarak ApplicationIntent=ReadOnly belirtin. 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
Applies to: 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
Applies to: 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 depolanan CSV dosyalarına erişme hakkında daha ayrıntılı bir örnek için bkz. PolyBase ile CSV dosyasını etkinleştirme.
G. Azure Data Lake 2. Nesil'deki verilere erişmek için dış veri kaynağı oluşturma
Applies to: SQL Server 2022 (16.x) ve sonraki sürümleri.
önceki sürümlerde kullanılan abfs yerine Azure Data Lake 2. Nesil için yeni bir ön ek adls 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 etkinleştirme.
Ö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 almak için toplu işlemler için dış veri kaynağı oluşturma
Applies to: 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 bağlanmak için TDS 8.0 kullanarak dış veri kaynağı oluşturma
Applies to: SQL Server 2025 (17.x) ve sonraki sürümleri.
SQL Server için en son Microsoft ODBC Sürücüsü 18'i kullanırken, CONNECTION_OPTIONS altında Encryption seçeneğini kullanmanız gerekir ve TrustServerCertificate de 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
- ALTER EXTERNAL DATA SOURCE (Transact-SQL)
- CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL)
- CREATE EXTERNAL FILE FORMAT (Transact-SQL)
- OLUŞTUR EXTERNAL TABLE (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ı *
Genel Bakış: Azure SQL Veritabanı
Applies to: 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 - elastic sorgusuyla SQL Veritabanı kullanarak uzak SQL Veritabanını 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:// |
Uç Cihazlar için Azure SQLonly içinde kullanılabilir. EdgeHub her zaman Uç Cihazlar için Azure SQL örneğinde yereldir. Bu nedenle bir yol veya bağlantı noktası değeri belirtmeniz gerekmez. |
| Kafka | kafka |
kafka://<kafka_bootstrap_server_name_ip>:<port_number> |
Uç Cihazlar için Azure SQLonly içinde 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 2. 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>= Parça eşleme yöneticisini barındıran Azure 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:
- Database Engine, 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:
- verileri Azure Depolama Azure SQL Veritabanı 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:
sas belirteci oluşturmak için Azure portalı -><Your_Storage_Account> -> Paylaşılan erişim imzası -> İzinleri yapılandırma -> SAS ve bağlantı dizesi oluşturun. 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ı (SAS) kullanarak Azure Depolama kaynaklarına sınırlı erişim.
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
SHARED ACCESS SIGNATURE ve TYPE = BLOB_STORAGE ile CREDENTIAL kullanma örneği için bkz. Toplu işlemleri yürütmek ve Azure Depolama'den 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.
Önemli
Parça eşleme yöneticisi modunda elastik sorgu (yatay bölümleme), türü EXTERNAL DATA SOURCEkullanılarak SHARD_MAP_MANAGER 31 Mart 2027'de destek sonuna ulaşılıyor. Bu tarihten sonra mevcut iş yükleri çalışmaya devam edecek ancak artık destek almayacak ve türünde SHARD_MAP_MANAGER yeni dış veri kaynaklarının oluşturulması artık mümkün olmayacaktır. Geçiş seçenekleri için bkz . Elastik sorgu parça eşleme yöneticisi modundan geçiş kılavuzu.
- 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
Azure SQL Veritabanı veritabanında CONTROL izni 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
Önemli
Parça eşleme yöneticisi modunda elastik sorgu (yatay bölümleme), türü EXTERNAL DATA SOURCEkullanılarak SHARD_MAP_MANAGER 31 Mart 2027'de destek sonuna ulaşılıyor. Bu tarihten sonra mevcut iş yükleri çalışmaya devam edecek ancak artık destek almayacak ve türünde SHARD_MAP_MANAGER yeni dış veri kaynaklarının oluşturulması artık mümkün olmayacaktır. Geçiş seçenekleri için bkz . Elastik sorgu parça eşleme yöneticisi modundan geçiş kılavuzu.
SHARD_MAP_MANAGER başvurmak ü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 sanal makinedeki bir 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 almak için toplu işlemler 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şturun:
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: Uç Cihazlar için Azure SQL
Önemli
Uç Cihazlar için Azure SQL için dış verileri yapılandırma hakkında bilgi için bkz. Uç Cihazlar için Azure SQL'da
A. Kafka'ya başvurmak için dış veri kaynağı oluşturma
Applies to:Uç Cihazlar için Azure SQLonly
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
Applies to:Uç Cihazlar için Azure SQLonly
Bu örnekte dış veri kaynağı, Uç Cihazlar için Azure SQL 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
Applies to: 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
elastic sorgusuyla Azure SQL Veritabanı kullanarak bir 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'daki 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 2. Nesil | abfs[s] |
<container>@<storage_account>.dfs.core.windows.net |
| Azure Blob Depolama | wasbs |
<container>@<storage_account>.blob.core.windows.net |
| Azure Blob Depolama | 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 2. Nesil | http[s] |
<storage_account>.dfs.core.windows.net/<container>/subfolders |
| Data Lake Storage 2. Nesil | wasb[s] |
<container>@<storage_account>.blob.core.windows.net |
* Microsoft 1. Nesil Azure Data Lake Storage 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 2. Nesil | abfs[s] |
Evet | Evet | Evet |
| Azure Blob Depolama | wasbs |
Evet | Evet*** | Evet |
| Azure Blob Depolama | https |
Hayı | Evet | Evet |
| Data Lake Storage 1. Nesil | http[s] |
Hayı | Hayı | Evet |
| Data Lake Storage 2. Nesil | http[s] |
Evet | Evet | Evet |
| Data Lake Storage 2. Nesil | wasb[s] |
Evet | Evet | Evet |
* Azure Synapse Analytics 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 1. Nesil Azure Data Lake Storage 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 sağlama sırasında
enable secure SSL connectionskullanmaktır. 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://arabirimini kullanarak verilere erişirken Azure V2 Depolama Hesapları ile desteklenmez, ancakwasbs://kullanmak 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ğı genel depolama hesabına erişebilir veya Azure depolamadaki dosyalara erişmek için ç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 verileri 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 passthrough olarak da bilinen bir kullanıcı kimliği üzerinden erişim, genel kullanıma açık depolamaya anonim erişim olduğu gibi, veritabanı kapsamlı kimlik bilgilerinde 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ş 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 TYPE = HADOOP kullanma örneği için bkz. Hizmet sorumlusu kullanarak 1. Azure Data Lake veya 2. Nesil'e başvurmak için dış veri kaynağı oluşturma.
Azure Synapse Analytics'daki 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ğı, logs adlı bir Azure Depolama hesabı V2'dir. Depolama konteyneri .daily Dış veri kaynağının Azure Depolama 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.
wasb veya wasbs aracılığıyla Azure Depolama 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 için kimlik doğrulaması için veritabanı kapsamlı kimlik bilgilerinin nasıl oluşturulacağı gösterilmektedir. Veritabanı kimlik bilgisi gizli dizisinde Azure Depolama hesap anahtarını belirtin. Depolama alanı Azure kimlik doğrulaması sırasında kullanılmadığından, veritabanı kapsamlı kimlik bilgisi 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 kullanarak
-- 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
managed identities ile Azure Data Lake Store 2. Nesil hesabına bağlanırken SECRET belirtmeniz gerekmez.
-- 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
- CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL)
- CREATE EXTERNAL FILE FORMAT (Transact-SQL)
- OLUŞTUR EXTERNAL TABLE (Transact-SQL)
İÇİ TABLOYU SELECT (Azure Synapse Analytics) - EKİ OLARAK TABLO OLUŞTUR (Azure Synapse Analytics)
- sys.external_data_sources (Transact-SQL)
- Paylaşılan Erişim İmzalarını (SAS) Kullanma
* 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. Dış veri kaynakları, bağlantı kurmak ve şu kullanım örneğini desteklemek için kullanılır: SQL Server'da
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 TYPE = HADOOP kullanma örneği için bkz. Hadoop başvurmak için dış veri kaynağı oluşturma.
RESOURCE_MANAGER_LOCATION = 'ResourceManager_URI[:p ort]'
SQL Server 2019'da (15.x), Azure Depolama bir hesap olan Cloudera CDH, Hortonworks HDP'ye bağlanmadığınız sürece RESOURCE_MANAGER_LOCATION belirtmeyin.
Yalnızca Cloudera CDH, Hortonworks HDP veya 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ü
- Resource Manager
- İş 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 İşi Gönderme (Cloudera 4.3) | 8021 |
| Resource Manager İş Gönderimi (Windows'da Hortonworks 2.0, Linux'ta Cloudera 5.x) | 8032 |
| Resource Manager İş Gönderimi (Linux'ta Hortonworks 2.x, 3.0, Windows'da 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ğı, logs adlı bir Azure V2 Depolama hesabıdır. Depolama konteyneri .daily Dış veri kaynağının Azure Depolama 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.
wasb veya wasbs aracılığıyla Azure Depolama 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, depolama Azure 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. Depolama alanı Azure kimlik doğrulaması sırasında kullanılmadığından, veritabanı kapsamlı kimlik bilgisi 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 *
Genel Bakış: Azure SQL Yönetilen Örneği
Applies to: Azure SQL Yönetilen Örneği
Azure SQL Yönetilen Örneği bir dış veri kaynağı oluşturur. Tam bilgi için bkz. Azure SQL Yönetilen Örneği ile
Azure SQL Yönetilen Örneği'de veri sanallaştırma, dış verilere OPENROWSET veya CREATE EXTERNAL TABLE aracılığıyla çeşitli dosya biçimlerinde 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 Depolama | abs |
abs://<container>@<storage_account>.blob.core.windows.net/<path>/<file_name> |
| Azure Data Lake Hizmeti 2. Nesil | adls |
adls://<container>@<storage_account>.dfs.core.windows.net/<path>/<file_name> |
Database Engine, 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:
- verileri Azure Depolama Azure SQL Yönetilen Örneği 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 sistem tarafından atanan yönetilen hizmet kimliğini kullanın.
- Reader Azure RBAC rolünü gerekli Azure Blob Depolama kapsayıcılarına Azure SQL Yönetilen Örneği sistem tarafından atanan yönetilen hizmet kimliğine verin. Örneğin, Azure portalı aracılığıyla bkz. Azure portalını kullanarak Assign Azure rolleri.
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:
- sas belirteci almak için Azure portalı -><Your_Storage_Account> -> Paylaşılan erişim imzası -> İzinleri yapılandırma -> SAS ve bağlantı dizesi oluşturun. 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ı (SAS) kullanarak Azure Depolama kaynaklarına sınırlı erişim.
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
Azure SQL Yönetilen Örneği veritabanında CONTROL izni 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
A. OPENROWSET veya dış tablo ile Azure SQL Yönetilen Örneği dış verileri sorgulama
Daha fazla örnek için bkz.
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 SQL Yönetilen ÖrneğiData sanallaştırma>
- CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL)
- OLUŞTUR EXTERNAL TABLE (Transact-SQL)
- sys.external_data_sources (Transact-SQL)
- Paylaşılan Erişim İmzalarını (SAS) Kullanma
*Microsoft Fabric Data Warehouse *
Genel Bakış: Microsoft Fabric Data Warehouse
Applies to: Fabric Data Warehouse
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 Depolama | https |
https://<storage_account>.blob.core.windows.net/<container>/<path> |
| Azure Data Lake Hizmeti 2. Nesil | abfss |
abfss://<container>@<storage_account>.dfs.core.windows.net/<path> |
Database Engine, 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.
- One Lake depolama Fabric 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
* Fabric SQL veritabanı *
Genel bakış: Microsoft Fabric'de SQL veritabanı
Applies to: SQL database in Microsoft Fabric
Fabric içindeki SQL veritabanında
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ı, veri kaynağı olarak yalnızca OneLake'i (abfss) destekler.
| Dış Veri Kaynağı | Bağlayıcı konumu ön eki | Konum yolu | Kullanılabilirlik |
|---|---|---|---|
| OneLake | abfss |
abfss://<workspaceid>@<tenant>.dfs.fabric.microsoft.com/ |
SQL veritabanını Fabric |
Konumu ayarlarken ek notlar ve yönergeler:
- Database Engine, 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
Azure SQL Veritabanı veritabanında CONTROL izni 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 Files altındaki Contoso dizin içinde yer almaktadır.
Fabric Lakehouse veri kaynağı oluşturmak için çalışma alanı kimliği, kiracı ve lakehouse kimliği sağlamanız gerekir. Bir göl binasının ABFSS dosya konumunu bulmak için Fabric portalına gidin. Lakehouse'a gidin, istediğiniz klasör konumuna gidin, ... 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 Microsoft Entra ID Geçiş kimlik doğrulamasını desteklediğinden, veritabanı kapsamlı kimlik bilgilerinin sağlanması gerekmez; bağlantı her zaman konuma erişmek için kullanıcının oturum açma kimlik bilgilerini kullanır.
CREATE EXTERNAL DATA SOURCE MyLakeHouse
WITH (
LOCATION = 'abfss://<workspace id>@<tenant>.dfs.fabric.microsoft.com/<lakehouseid>/Files/Contoso'
);