Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: SQL Server 2016 (13.x) ve üzeri
Azure SQL Veritabanı
Azure Synapse Analytics
Analytics Platform Sistemi (PDW)
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
Şunlar için geçerlidir: SQL Server 2016 (13.x)
PolyBase sorguları için bir dış veri kaynağı oluşturur. Dış veri kaynakları, bağlantı kurmak ve şu birincil kullanım örneklerini desteklemek için kullanılır:
- PolyBase kullanarak veri sanallaştırma ve veri yükü
- veya kullanarak
BULK INSERT
toplu yükleme işlemleriOPENROWSET
Uyarı
Bu söz dizimi SQL Server'ın farklı sürümlerinde farklılık gösterir. Uygun sürümü seçmek için sürüm seçici açılan listesini kullanın.
SQL Server 2019 (15.x) özelliklerini görüntülemek için CREATE EXTERNAL DATA SOURCE adresini ziyaret edin.
SQL Server 2022 (16.x) özelliklerini görüntülemek için CREATE EXTERNAL DATA SOURCE adresini ziyaret edin.
Transact-SQL söz dizimi kuralları
SQL Server 2016 söz dizimi
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ [ , ] CREDENTIAL = <credential_name> ]
[ [ , ] TYPE = { HADOOP } ]
[ [ , ] RESOURCE_MANAGER_LOCATION = '<resource_manager>[:<port>]' )
[ ; ]
Tartışmalar
data_source_name
Veri kaynağı için kullanıcı tanımlı adı belirtir. Ad, SQL Server'daki veritabanında benzersiz olmalıdır.
LOCATION = '<prefix>://<path[:p ort]>'
Bağlantı protokolunu ve dış veri kaynağının yolunu sağlar.
Dış Veri Kaynağı | Bağlayıcı konumu ön eki | Konum yolu | Ürüne/hizmete göre desteklenen konumlar | Kimlik doğrulama |
---|---|---|---|---|
Cloudera CDH veya Hortonworks HDP | hdfs |
<Namenode>[:port] |
SQL Server 2016 (13.x) -SQL Server 2019 (15.x) | Anonim veya temel kimlik doğrulaması |
Azure Depolama hesabı (V2) | wasb[s] |
<container>@<storage_account>.blob.core.windows.net |
SQL Server 2016'dan (13.x) başlayarak Hiyerarşik Ad Alanı desteklenmiyor |
Azure Depolama hesabı anahtarı |
Konum yolu:
-
<Namenode>
= Hadoop kümesindeki öğesinin makine adı, ad hizmeti URI'siNamenode
veya 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.defaultFS
bulunabilir. Varsayılan değer 8020'dir. -
<container>
= verileri tutan depolama hesabının kapsayıcısı. Kök kapsayıcılar salt okunur durumdadır, veriler kapsayıcıya geri yazılamaz. -
<storage_account>
= Azure kaynağının depolama hesabı adı. -
<server_name>
= konak adı. -
<instance_name>
= SQL Server adlı örneğin adı. Hedef örnekte çalışan SQL Server Tarayıcı Hizmetiniz varsa kullanılır.
Konumu ayarlarken ek notlar ve yönergeler:
- SQL Server Veritabanı Altyapısı, nesne oluşturulduğunda dış veri kaynağının varlığını doğrulamaz. Doğrulamak için dış veri kaynağını kullanarak bir dış tablo oluşturun.
- Tutarlı sorgu semantiği sağlamak için Hadoop sorgularken tüm tablolar için aynı dış veri kaynağını kullanın.
-
wasbs
isteğe bağlıdır, ancak veriler güvenli bir TLS/SSL bağlantısı kullanılarak gönderileceği için Azure Depolama Hesaplarına erişmek için SQL Server 2016'da (13.x) önerilir. - Hadoop yük devretmesi sırasında PolyBase sorgularının başarılı olmasını sağlamak için Hadoop
Namenode
kümesininNamenode
sanal 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 (Transact-SQL).
TYPE = * [ HADOOP ] *
Yapılandırılan dış veri kaynağının türünü belirtir. SQL Server 2016'da bu parametre her zaman gereklidir ve yalnızca olarak HADOOP
belirtilmelidir. Cloudera CDH, Hortonworks HDP veya Azure Depolama hesabı bağlantılarını destekler. Bu parametrenin davranışı SQL Server'ın sonraki sürümlerinde farklıdır.
Azure Depolama hesabından veri yüklemek için kullanma TYPE
= HADOOP
örneği için bkz. wasb:// arabirimini kullanarak Azure Depolama'daki verilere erişmek için dış veri kaynağı oluşturma
RESOURCE_MANAGER_LOCATION = 'ResourceManager_URI[:p ort]'
Yalnızca Cloudera CDH, Hortonworks HDP veya bir Azure Depolama hesabına bağlanırken bu isteğe bağlı değeri yapılandırın. Desteklenen Hadoop sürümlerinin tam listesi için bkz. PolyBase bağlantı yapılandırması.
RESOURCE_MANAGER_LOCATION
tanımlandığında, sorgu iyileştirici performansı geliştirmek için maliyet tabanlı bir karar verir. MapReduce işi, hesaplamayı Hadoop'a göndermek için kullanılabilir. değerinin RESOURCE_MANAGER_LOCATION
belirtilmesi Hadoop ile SQL Server arasında aktarılan veri hacmini önemli ölçüde azaltabilir ve bu da sorgu performansının artmasına neden olabilir.
Resource Manager belirtilmezse, PolyBase sorguları için Hadoop'a işlem gönderme devre dışı bırakılır. Aşağı itme özelliğinin etkinleştirildiği Hadoop'a başvurmak için dış veri kaynağı oluşturma , somut bir örnek ve daha fazla rehberlik sağlar.
Dış veri kaynağını oluşturduğunuzda RESOURCE_MANAGER_LOCATION değeri doğrulanmaz. Yanlış bir değer girilmesi, sağlanan değer çözümlenemediğinden, aşağı gönderme denendiği her durumda yürütme sırasında sorgu hatasına neden olabilir.
PolyBase'in hadoop dış veri kaynağıyla düzgün çalışması için aşağıdaki Hadoop kümesi bileşenlerinin bağlantı noktalarının açık olması gerekir:
- HDFS bağlantı noktaları
- Ad Düğümü
- Veri düğümü
- 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 İş Gönderimi (Cloudera 4.3) | 8021 |
Resource Manager İş Gönderimi (Windows'ta Hortonworks 2.0, Linux'ta Cloudera 5.x) | 8032 |
Resource Manager İş Gönderimi (Linux üzerinde Hortonworks 2.x, 3.0, Windows üzerinde Hortonworks 2.1-3) | 8050 |
Resource Manager İş Geçmişi | 10020 |
İzinler
CONTROL
SQL Server'daki veritabanında izin gerektirir.
Kilitleme
Nesne üzerinde EXTERNAL DATA SOURCE
paylaşılan bir kilit alır.
Güvenlik
PolyBase, dış veri kaynaklarının çoğu için ara sunucu tabanlı kimlik doğrulamasını destekler. Proxy hesabını oluşturmak için veritabanı kapsamlı bir kimlik bilgisi oluşturun.
Örnekler
Önemli
PolyBase'i yükleme ve etkinleştirme hakkında bilgi için bkz. Windows'a PolyBase yükleme
A. Hadoop'a başvurmak için dış veri kaynağı oluşturma
Hortonworks HDP veya Cloudera CDH Hadoop kümenize başvurmak üzere bir dış veri kaynağı oluşturmak için, Hadoop Namenode
ve bağlantı noktasının makine adını veya IP adresini belirtin.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
LOCATION = 'hdfs://10.10.10.10:8050',
TYPE = HADOOP
);
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 (
LOCATION = 'hdfs://10.10.10.10:8020',
TYPE = HADOOP,
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 (
LOCATION = 'hdfs://10.10.10.10:8050',
CREDENTIAL = HadoopUser1,
TYPE = HADOOP,
RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);
D. wasb:// arabirimini kullanarak Azure Depolama'daki verilere erişmek için dış veri kaynağı oluşturma
Bu örnekte dış veri kaynağı adlı logs
bir Azure V2 Depolama hesabıdır. Depolama kapsayıcısı olarak adlandırılır daily
. Azure Depolama dış veri kaynağı yalnızca veri aktarımı içindir. Koşul aşağı göndermeyi desteklemez. Arabirim aracılığıyla wasb://
verilere erişirken hiyerarşik ad alanları desteklenmez.
Bu örnekte, Azure V2 Depolama hesabında kimlik doğrulaması için veritabanı kapsamlı kimlik bilgilerinin nasıl oluşturulacağı gösterilmektedir. Veritabanı kimlik bilgisi gizli dizisinde Azure Depolama hesabı anahtarını belirtin. Azure Depolama'da kimlik doğrulaması sırasında kullanılmadığından, veritabanı kapsamlı kimlik bilgileri kimliğindeki herhangi bir dizeyi belirtebilirsiniz. veya wasb
aracılığıyla wasbs
Azure Depolama'ya bağlanırken kimlik doğrulaması, paylaşılan erişim imzası (SAS) ile değil depolama hesabı anahtarıyla yapılmalıdır.
SQL Server 2016'da (13.x), TYPE
Azure Depolama'ya HADOOP
erişirken bile olarak ayarlanmalıdır.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
WITH IDENTITY = '<my_account>',
SECRET = '<azure_storage_account_key>';
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
LOCATION = 'wasbs://daily@logs.blob.core.windows.net/',
CREDENTIAL = AzureStorageCredential,
TYPE = HADOOP
);
İlgili içerik
Genel Bakış: SQL Server 2017
Şunlar için geçerlidir: SQL Server 2017 (14.x)
PolyBase sorguları için bir dış veri kaynağı oluşturur. Dış veri kaynakları, bağlantı kurmak ve şu birincil kullanım örneklerini desteklemek için kullanılır:
- SQL Server'da PolyBase kullanarak veri sanallaştırma ve veri yükü
- veya kullanarak
BULK INSERT
toplu yükleme işlemleriOPENROWSET
Uyarı
Bu söz dizimi, Linux üzerinde SQL Server'ın farklı sürümlerinde farklılık gösterir. Uygun sürümü seçmek için sürüm seçici açılan listesini kullanın.
SQL Server 2019 (15.x) özelliklerini görüntülemek için CREATE EXTERNAL DATA SOURCE adresini ziyaret edin.
SQL Server 2022 (16.x) özelliklerini görüntülemek için CREATE EXTERNAL DATA SOURCE adresini ziyaret edin.
Uyarı
Bu söz dizimi SQL Server'ın farklı sürümlerinde farklılık gösterir. Uygun sürümü seçmek için sürüm seçici açılan listesini kullanın.
SQL Server 2019 (15.x) özelliklerini görüntülemek için CREATE EXTERNAL DATA SOURCE adresini ziyaret edin.
SQL Server 2022 (16.x) özelliklerini görüntülemek için CREATE EXTERNAL DATA SOURCE adresini ziyaret edin.
Transact-SQL söz dizimi kuralları
SQL Server 2017 söz dizimi
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ [ , ] CREDENTIAL = <credential_name> ]
[ [ , ] TYPE = { HADOOP | BLOB_STORAGE } ]
[ [ , ] RESOURCE_MANAGER_LOCATION = '<resource_manager>[:<port>]' )
[ ; ]
Tartışmalar
data_source_name
Veri kaynağı için kullanıcı tanımlı adı belirtir. Ad, SQL Server'daki veritabanında benzersiz olmalıdır.
LOCATION = '<prefix>://<path[:p ort]>'
Bağlantı protokolunu ve dış veri kaynağının yolunu sağlar.
Dış Veri Kaynağı | Bağlayıcı konumu ön eki | Konum yolu | Ürüne/hizmete göre desteklenen konumlar | Kimlik doğrulama |
---|---|---|---|---|
Cloudera CDH veya Hortonworks HDP | hdfs |
<Namenode>[:port] |
Yalnızca SQL Server 2016 (13.x) ile SQL Server 2019 (15.x) | Anonim veya temel kimlik doğrulaması |
Azure Depolama hesabı (V2) | wasb[s] |
<container>@<storage_account>.blob.core.windows.net |
SQL Server 2016'dan (13.x) başlayarak Hiyerarşik Ad Alanı desteklenmiyor |
Azure Depolama hesabı anahtarı |
Toplu İşlemler | https |
<storage_account>.blob.core.windows.net/<container> |
SQL Server 2017 'den (14.x) başlayarak | Paylaşılan erişim imzası (SAS) |
Konum yolu:
-
<
Namenode>
= Hadoop kümesindeki öğesinin makine adı, ad hizmeti URI'siNamenode
veya 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.defaultFS
bulunabilir. Varsayılan değer 8020'dir. -
<container>
= verileri tutan depolama hesabının kapsayıcısı. Kök kapsayıcılar salt okunur durumdadır, veriler kapsayıcıya geri yazılamaz. -
<storage_account>
= Azure kaynağının depolama hesabı adı. -
<server_name>
= konak adı. -
<instance_name>
= SQL Server adlı örneğin adı. Hedef örnekte çalışan SQL Server Tarayıcı Hizmetiniz varsa kullanılır.
Konumu ayarlarken ek notlar ve yönergeler:
- SQL Server Veritabanı Altyapısı, nesne oluşturulduğunda dış veri kaynağının varlığını doğrulamaz. Doğrulamak için dış veri kaynağını kullanarak bir dış tablo oluşturun.
- Tutarlı sorgu semantiği sağlamak için Hadoop sorgularken tüm tablolar için aynı dış veri kaynağını kullanın.
- aracılığıyla
Driver={<Name of Driver>}
bağlanırken değeriniODBC
belirtin. -
wasbs
isteğe bağlıdır, ancak veriler güvenli bir TLS/SSL bağlantısı kullanılarak gönderileceği için Azure Depolama Hesaplarına erişmek için SQL Server 2017'de (14.x) önerilir. - Hadoop yük devretmesi sırasında PolyBase sorgularının başarılı olmasını sağlamak için Hadoop
Namenode
kümesininNamenode
sanal 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:
-
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. -
TYPE
=BLOB_STORAGE
olduğunda kimlik bilgisi kimlik olarak kullanılarakSHARED ACCESS SIGNATURE
oluşturulmalıdır. -
TYPE
=BLOB_STORAGE
yalnızca toplu işlemler için izin verilir; ileTYPE
=BLOB_STORAGE
bir dış veri kaynağı için dış tablolar oluşturamazsınız. - veya
wasb
aracılığıylawasbs
Azure Depolama'ya bağlanırken kimlik doğrulaması, paylaşılan erişim imzası (SAS) ile değil depolama hesabı anahtarıyla yapılmalıdır. -
TYPE
=HADOOP
Kimlik bilgilerinin depolama hesabı anahtarı olarakSECRET
kullanılarak oluşturulması gerektiğinde.
Paylaşılan erişim imzası oluşturmanın birden çok yolu vardır:
Azure portalı -><Your_Storage_Account> - Paylaşılan erişim imzası -> İzinleri yapılandırma ->> SAS ve bağlantı dizesi oluşturma bölümüne giderek SAS belirteci oluşturabilirsiniz. Daha fazla bilgi için bkz . Paylaşılan erişim imzası oluşturma.
Azure Depolama Gezgini ile SAS oluşturabilir ve yapılandırabilirsiniz.
Sas belirtecini PowerShell, Azure CLI, .NET ve REST API aracılığıyla program aracılığıyla oluşturabilirsiniz. Daha fazla bilgi için bkz . Paylaşılan erişim imzalarını (SAS) kullanarak Azure Depolama kaynaklarına sınırlı erişim verme.
SAS belirteci aşağıdaki gibi yapılandırılmalıdır:
- SAS belirteci oluşturulduğunda belirtecin başında bir soru işareti ('?') bulunur. GİzLİ olarak yapılandırıldığında baştakileri
?
hariç tutun. - Geçerli bir süre sonu dönemi kullanın (tüm tarihler UTC saatindedir).
- SAS belirteci oluşturulduğunda belirtecin başında bir soru işareti ('?') bulunur. GİzLİ olarak yapılandırıldığında baştakileri
Yüklenmesi gereken dosya üzerinde en azından okuma izni verin (örneğin
srt=o&sp=r
). Farklı kullanım örnekleri için birden çok paylaşılan erişim imzası oluşturulabilir. İzinler aşağıdaki gibi verilmelidir:Eylem İzin Dosyadan veri okuma Okumak Birden çok dosyadan ve alt klasörden veri okuma Okuma ve Listeleme
ve CREDENTIAL
SHARED ACCESS SIGNATURE
TYPE
ile = kullanma BLOB_STORAGE
örneği için bkz. Toplu işlemleri yürütmek ve Azure Depolama'dan SQL Veritabanı'na veri almak için dış veri kaynağı oluşturma
Veritabanı kapsamlı kimlik bilgileri oluşturmak için bkz. CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL).
TYPE = * [ HADOOP | BLOB_STORAGE ] *
Yapılandırılan dış veri kaynağının türünü belirtir. Bu parametre her zaman gerekli değildir ve yalnızca Cloudera CDH, Hortonworks HDP, azure depolama hesabı veya Azure Data Lake Storage 2. Nesil'e bağlanırken belirtilmelidir.
- Dış veri kaynağı Cloudera CDH, Hortonworks HDP, Azure Depolama hesabı veya Azure Data Lake Storage 2. Nesil olduğunda kullanın
HADOOP
. -
BLOB_STORAGE
veya OPENROWSET kullanarak Azure Depolama hesabından toplu işlemleri yürütürken kullanın. SQL Server 2017 (14.x) ile kullanıma sunulmuştur. Azure Depolama'ya karşı kullanmayıHADOOP
planlarken kullanınCREATE EXTERNAL TABLE
.
Uyarı
TYPE
Azure Depolama'ya HADOOP
erişirken bile olarak ayarlanmalıdır.
Azure Depolama hesabından veri yüklemek için kullanma TYPE
= HADOOP
örneği için bkz. wasb:// arabirimini kullanarak Azure Depolama'daki verilere erişmek için dış veri kaynağı oluşturma
RESOURCE_MANAGER_LOCATION = 'ResourceManager_URI[:p ort]'
Yalnızca Cloudera CDH, Hortonworks HDP veya bir Azure Depolama hesabına bağlanırken bu isteğe bağlı değeri yapılandırın. Desteklenen Hadoop sürümlerinin tam listesi için bkz. PolyBase bağlantı yapılandırması (Transact-SQL).
RESOURCE_MANAGER_LOCATION
tanımlandığında, sorgu iyileştirici performansı geliştirmek için maliyet tabanlı bir karar alır. MapReduce işi, hesaplamayı Hadoop'a göndermek için kullanılabilir. değerinin RESOURCE_MANAGER_LOCATION
belirtilmesi Hadoop ile SQL Server arasında aktarılan veri hacmini önemli ölçüde azaltabilir ve bu da sorgu performansının artmasına neden olabilir.
Resource Manager belirtilmezse, PolyBase sorguları için Hadoop'a işlem gönderme devre dışı bırakılır. Aşağı itme özelliğinin etkinleştirildiği Hadoop'a başvurmak için dış veri kaynağı oluşturma , somut bir örnek ve daha fazla rehberlik sağlar.
Dış RESOURCE_MANAGER_LOCATION
veri kaynağını oluşturduğunuzda değer doğrulanmaz. Yanlış bir değer girilmesi, sağlanan değer çözümlenemediğinden, aşağı gönderme denendiği her durumda yürütme sırasında sorgu hatasına neden olabilir.
PolyBase'in hadoop dış veri kaynağıyla düzgün çalışması için aşağıdaki Hadoop kümesi bileşenlerinin bağlantı noktalarının açık olması gerekir:
- HDFS bağlantı noktaları
- Ad Düğümü
- Veri düğümü
- 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 İş Gönderimi (Cloudera 4.3) | 8021 |
Resource Manager İş Gönderimi (Windows'ta Hortonworks 2.0, Linux'ta Cloudera 5.x) | 8032 |
Resource Manager İş Gönderimi (Linux üzerinde Hortonworks 2.x, 3.0, Windows üzerinde Hortonworks 2.1-3) | 8050 |
Resource Manager İş Geçmişi | 10020 |
İzinler
CONTROL
SQL Server'daki veritabanında izin gerektirir.
Kilitleme
Nesne üzerinde EXTERNAL DATA SOURCE
paylaşılan bir kilit alır.
Güvenlik
PolyBase, dış veri kaynaklarının çoğu için ara sunucu tabanlı kimlik doğrulamasını destekler. Proxy hesabını oluşturmak için veritabanı kapsamlı bir kimlik bilgisi oluşturun.
Türü HADOOP
olan bir SAS belirteci desteklenmiyor. Bunun yerine yalnızca depolama hesabı erişim anahtarı kullanıldığında tür = BLOB_STORAGE
ile desteklenir. Tür HADOOP
ve SAS kimlik bilgilerine sahip bir dış veri kaynağı oluşturma girişimi aşağıdaki hatayla başarısız oluyor:
Msg 105019, Level 16, State 1 - EXTERNAL TABLE access failed due to internal error: 'Java exception raised on call to HdfsBridge_Connect. Java exception message: Parameters provided to connect to the Azure storage account are not valid.: Error [Parameters provided to connect to the Azure storage account are not valid.] occurred while accessing external file.'
Örnekler
Önemli
PolyBase'i yükleme ve etkinleştirme hakkında bilgi için bkz. Windows'a PolyBase yükleme
A. Hadoop'a başvurmak için dış veri kaynağı oluşturma
Hortonworks HDP veya Cloudera CDH Hadoop kümenize başvurmak üzere bir dış veri kaynağı oluşturmak için, Hadoop Namenode
ve bağlantı noktasının makine adını veya IP adresini belirtin.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
LOCATION = 'hdfs://10.10.10.10:8050',
TYPE = HADOOP
);
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 (
LOCATION = 'hdfs://10.10.10.10:8020',
TYPE = HADOOP,
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 (
LOCATION = 'hdfs://10.10.10.10:8050',
CREDENTIAL = HadoopUser1,
TYPE = HADOOP,
RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);
D. wasb:// arabirimini kullanarak Azure Depolama'daki verilere erişmek için dış veri kaynağı oluşturma
Bu örnekte dış veri kaynağı adlı logs
bir Azure V2 Depolama hesabıdır. Depolama kapsayıcısı olarak adlandırılır daily
. Azure Depolama dış veri kaynağı yalnızca veri aktarımı içindir. Koşul aşağı göndermeyi desteklemez. Arabirim aracılığıyla wasb://
verilere erişirken hiyerarşik ad alanları desteklenmez. veya wasb
aracılığıyla wasbs
Azure Depolama'ya bağlanırken kimlik doğrulaması, paylaşılan erişim imzası (SAS) ile değil depolama hesabı anahtarıyla yapılmalıdır.
Bu örnekte, Azure V2 Depolama hesabında kimlik doğrulaması için veritabanı kapsamlı kimlik bilgilerinin nasıl oluşturulacağı gösterilmektedir. Veritabanı kimlik bilgisi gizli dizisinde Azure Depolama hesabı anahtarını belirtin. Azure Depolama'da kimlik doğrulaması sırasında kullanılmadığından, veritabanı kapsamlı kimlik bilgileri kimliğindeki herhangi bir dizeyi belirtebilirsiniz.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
WITH IDENTITY = '<my_account>',
SECRET = '<azure_storage_account_key>';
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
LOCATION = 'wasbs://daily@logs.blob.core.windows.net/',
CREDENTIAL = AzureStorageCredential,
TYPE = HADOOP
);
Örnekler: Toplu işlemler
Önemli
Bir dış veri kaynağını toplu işlemler için yapılandırırken URL'nin / sonuna sondaki LOCATION
, dosya adı veya paylaşılan erişim imzası parametrelerini eklemeyin.
E. Azure Depolama'dan veri alma toplu işlemleri için dış veri kaynağı oluşturma
Şunlar için geçerlidir: SQL Server 2017 (14.x) ve sonraki sürümleri.
BULK INSERT veya OPENROWSET 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_storage_account_key>';
CREATE EXTERNAL DATA SOURCE MyAzureInvoices
WITH (
LOCATION = 'https://newinvoices.blob.core.windows.net/week3',
CREDENTIAL = AccessAzureInvoices,
TYPE = BLOB_STORAGE
);
Bu örneği kullanımda görmek için bkz . BULK INSERT.
İlgili içerik
Genel Bakış: SQL Server 2019
için geçerlidir: SQL Server 2019 (15.x)
PolyBase sorguları için bir dış veri kaynağı oluşturur. Dış veri kaynakları, bağlantı kurmak ve şu birincil kullanım örneklerini desteklemek için kullanılır:
- SQL Server'da PolyBase kullanarak veri sanallaştırma ve veri yükü
- veya kullanarak
BULK INSERT
toplu yükleme işlemleriOPENROWSET
Uyarı
Bu söz dizimi SQL Server'ın farklı sürümlerinde farklılık gösterir. Uygun sürümü seçmek için sürüm seçici açılan listesini kullanın.
SQL Server 2022 (16.x) özelliklerini görüntülemek için CREATE EXTERNAL DATA SOURCE adresini ziyaret edin.
Uyarı
Bu söz dizimi SQL Server'ın farklı sürümlerinde farklılık gösterir. Uygun sürümü seçmek için sürüm seçici açılan listesini kullanın.
SQL Server 2022 (16.x) özelliklerini görüntülemek için CREATE EXTERNAL DATA SOURCE adresini ziyaret edin.
Transact-SQL söz dizimi kuralları
SQL Server 2019 söz dizimi
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ [ , ] CONNECTION_OPTIONS = '<key_value_pairs>'[,...]]
[ [ , ] CREDENTIAL = <credential_name> ]
[ [ , ] PUSHDOWN = { ON | OFF } ]
[ [ , ] TYPE = { HADOOP | BLOB_STORAGE } ]
[ [ , ] RESOURCE_MANAGER_LOCATION = '<resource_manager>[:<port>]' ]
)
[ ; ]
Tartışmalar
data_source_name
Veri kaynağı için kullanıcı tanımlı adı belirtir. Ad, SQL Server'daki veritabanında benzersiz olmalıdır.
LOCATION = '<prefix>://<path[:p ort]>'
Bağlantı protokolunu ve dış veri kaynağının yolunu sağlar.
Dış Veri Kaynağı | Bağlayıcı konumu ön eki | Konum yolu | Ürüne/hizmete göre desteklenen konumlar | Kimlik doğrulama |
---|---|---|---|---|
Cloudera CDH veya Hortonworks HDP | hdfs |
<Namenode>[:port] |
SQL Server 2016 (13.x) -SQL Server 2019 (15.x) | Anonim veya temel kimlik doğrulaması |
Azure Depolama hesabı (V2) | wasb[s] |
<container>@<storage_account>.blob.core.windows.net |
SQL Server 2016'dan (13.x) başlayarak Hiyerarşik Ad Alanı desteklenmiyor |
Azure Depolama hesabı anahtarı |
SQL 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 'den (14.x) başlayarak | Paylaşılan erişim imzası (SAS) |
Azure Data Lake Storage (İkinci Nesil) | abfs[s] |
abfss://<container>@<storage _account>.dfs.core.windows.net |
SQL Server 2019 (15.x) CU11+ ile başlayarak. | Depolama Erişim Anahtarı |
SQL Server Büyük Veri Kümeleri veri havuzu | sqldatapool |
sqldatapool://controller-svc/default |
Yalnızca SQL Server 2019 Büyük Veri Kümelerinde desteklenir | Yalnızca temel kimlik doğrulaması |
SQL Server Büyük Veri Kümeleri depolama havuzu | sqlhdfs |
sqlhdfs://controller-svc/default |
Yalnızca SQL Server 2019 Büyük Veri Kümelerinde desteklenir | Yalnızca temel kimlik doğrulaması |
Konum yolu:
-
<Namenode>
= Hadoop kümesindeki öğesinin makine adı, ad hizmeti URI'siNamenode
veya 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.defaultFS
bulunabilir. Varsayılan değer 8020'dir. -
<container>
= verileri tutan depolama hesabının kapsayıcısı. Kök kapsayıcılar salt okunur durumdadır, veriler kapsayıcıya geri yazılamaz. -
<storage_account>
= Azure kaynağının depolama hesabı adı. -
<server_name>
= konak adı. -
<instance_name>
= SQL Server adlı örneğin adı. Hedef örnekte çalışan SQL Server Tarayıcı Hizmetiniz varsa kullanılır.
Konumu ayarlarken ek notlar ve yönergeler:
- SQL Server Veritabanı Altyapısı, nesne oluşturulduğunda dış veri kaynağının varlığını doğrulamaz. Doğrulamak için dış veri kaynağını kullanarak bir dış tablo oluşturun.
- Tutarlı sorgu semantiği sağlamak için Hadoop sorgularken tüm tablolar için aynı dış veri kaynağını kullanın.
- Bağlayıcıyı
sqlserver
kullanarak SQL Server 2019'u (15.x) başka bir SQL Server'a veya Azure SQL Veritabanı'na bağlayabilirsiniz. - aracılığıyla
Driver={<Name of Driver>}
bağlanırken değeriniODBC
belirtin. - veya
wasbs
kullanmakabfss
isteğe bağlıdır, ancak veriler güvenli bir TLS/SSL bağlantısı kullanılarak gönderileceği için Azure Depolama Hesaplarına erişmek için SQL Server 2019'da (15.x) önerilir. - VEYA
abfs
API'leriabfss
, SQL Server 2019 (15.x) CU11'den başlayarak Azure Depolama Hesaplarına erişirken desteklenir. Daha fazla bilgi için bkz. Azure Blob Dosya Sistemi sürücüsü (ABFS). - Kullanan
abfs[s]
Azure Depolama Hesapları (V2) için Hiyerarşik Ad Alanı seçeneği, SQL Server 2019 (15.x) CU11+ ile başlayarak Azure Data Lake Storage 2. Nesil aracılığıyla desteklenir. Hiyerarşik Ad Alanı seçeneği aksi takdirde desteklenmez ve bu seçenek devre dışı bırakılmalıdır. - Hadoop yük devretmesi sırasında PolyBase sorgularının başarılı olmasını sağlamak için Hadoop
Namenode
kümesininNamenode
sanal IP adresini kullanmayı göz önünde bulundurun. Aksi takdirde ALTER EXTERNAL DATA SOURCE komutunu yürüterek yeni konumu işaret edin. -
sqlhdfs
vesqldatapool
türleri, büyük bir veri kümesinin ana örneğiyle depolama havuzu arasında bağlantı kurmak için desteklenir. Cloudera CDH veya Hortonworks HDP için kullanınhdfs
. SQL Server Büyük Veri Kümeleri depolama havuzlarını sorgulamak için kullanmasqlhdfs
hakkında daha fazla bilgi için bkz. SQL Server 2019 Büyük Veri Kümesinde HDFS Sorgulama. - HDFS Cloudera (CDP) ve Hortonworks (HDP) dış veri kaynakları için SQL Server desteği kullanımdan kaldırılmıştır ve SQL Server 2022 (16.x) ve sonraki sürümlerde yer almamıştır. Daha fazla bilgi için bkz. Microsoft SQL Server platformunda Büyük veri seçenekleri.
CONNECTION_OPTIONS = key_value_pair
SQL Server 2019 (15.x) ve sonraki sürümler için belirtildi. Dış veri kaynağına bağlanırken ODBC
ek seçenekleri belirtir. Birden çok bağlantı seçeneği kullanmak için bunları noktalı virgülle ayırın.
Genel ODBC
bağlantıların yanı sıra SQL Server, Oracle, Teradata, MongoDB ve MongoDB için Azure Cosmos DB API'sine ODBC
yönelik yerleşik bağlayıcılar için geçerlidir.
key_value_pair
, belirli bir bağlantı seçeneğinin anahtar sözcüğü ve değeridir. Kullanılabilir anahtar sözcükler ve değerler dış veri kaynağı türüne bağlıdır. Sürücünün adı en düşük değer olarak gereklidir, ancak veya gibi APP='<your_application_name>'
ApplicationIntent= ReadOnly|ReadWrite
ayarlamak için de yararlı olan ve sorun gidermeye yardımcı olabilecek başka seçenekler de vardır.
Olası anahtar değer çiftleri, dış veri kaynağı satıcısı için sağlayıcıya özgüdür. Her sağlayıcı hakkında daha fazla bilgi için bkz. CREATE EXTERNAL DATA SOURCE (Transact-SQL) CONNECTION_OPTIONS.
SQL Server 2019 (15.x) Toplu Güncelleştirme 19'dan 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.ora
belirtir. - anahtar sözcüğü
ServerName
, içinde konaktnsnames.ora
adını ve bağlantı noktasını değiştirmek için kullanılacak diğer adı belirtir.
Pushdown = ON | KAPALI
Yalnızca SQL Server 2019 (15.x) için belirtilir. Hesaplamanın dış veri kaynağına gönderilip gönderilemeyeceğini belirtir. Varsayılan olarak ON'dır .
PUSHDOWN
SQL Server, Oracle, Teradata, MongoDB, MongoDB için Azure Cosmos DB API'sine veya dış veri kaynağı düzeyinde ODBC'ye bağlanırken desteklenir.
Sorgu düzeyinde aşağı göndermeyi etkinleştirme veya devre dışı bırakma işlemi , EXTERNALPUSHDOWN ipucu aracılığıyla sağlanır.
CREDENTIAL = credential_name
Dış veri kaynağında kimlik doğrulaması için veritabanı kapsamlı bir kimlik bilgisi belirtir.
Kimlik bilgisi oluştururken ek notlar ve yönergeler:
-
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. -
TYPE
=BLOB_STORAGE
olduğunda kimlik bilgisi kimlik olarak kullanılarakSHARED ACCESS SIGNATURE
oluşturulmalıdır. -
TYPE
=BLOB_STORAGE
yalnızca toplu işlemler için izin verilir; ileTYPE
=BLOB_STORAGE
bir dış veri kaynağı için dış tablolar oluşturamazsınız.
Paylaşılan erişim imzası oluşturmanın birden çok yolu vardır:
Azure portalı -><Your_Storage_Account> - Paylaşılan erişim imzası -> İzinleri yapılandırma ->> SAS ve bağlantı dizesi oluşturma bölümüne giderek SAS belirteci oluşturabilirsiniz. Daha fazla bilgi için bkz . Paylaşılan erişim imzası oluşturma.
Azure Depolama Gezgini ile SAS oluşturabilir ve yapılandırabilirsiniz.
Sas belirtecini PowerShell, Azure CLI, .NET ve REST API aracılığıyla program aracılığıyla oluşturabilirsiniz. Daha fazla bilgi için bkz . Paylaşılan erişim imzalarını (SAS) kullanarak Azure Depolama kaynaklarına sınırlı erişim verme.
SAS belirteci aşağıdaki gibi yapılandırılmalıdır:
- SAS belirteci oluşturulduğunda belirtecin başında bir soru işareti ('?') bulunur. GİzLİ olarak yapılandırıldığında baştakileri
?
hariç tutun. - Geçerli bir süre sonu dönemi kullanın (tüm tarihler UTC saatindedir).
- SAS belirteci oluşturulduğunda belirtecin başında bir soru işareti ('?') bulunur. GİzLİ olarak yapılandırıldığında baştakileri
Yüklenmesi gereken dosya üzerinde en azından okuma izni verin (örneğin
srt=o&sp=r
). Farklı kullanım örnekleri için birden çok paylaşılan erişim imzası oluşturulabilir. İzinler aşağıdaki gibi verilmelidir:Eylem İzin Dosyadan veri okuma Okumak Birden çok dosyadan ve alt klasörden veri okuma Okuma ve Listeleme
ve CREDENTIAL
SHARED ACCESS SIGNATURE
TYPE
ile = kullanma BLOB_STORAGE
örneği için bkz. Toplu işlemleri yürütmek ve Azure Depolama'dan SQL Veritabanı'na veri almak için dış veri kaynağı oluşturma
Veritabanı kapsamlı kimlik bilgileri oluşturmak için bkz. CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL).
TYPE = * [ HADOOP | BLOB_STORAGE ] *
Yapılandırılan dış veri kaynağının türünü belirtir. Bu parametre her zaman gerekli değildir ve yalnızca Cloudera CDH, Hortonworks HDP, azure depolama hesabı veya Azure Data Lake Storage 2. Nesil'e bağlanırken belirtilmelidir.
- SQL Server 2019'da (15.x), Bir Azure Depolama hesabı olan Cloudera CDH, Hortonworks HDP'ye bağlanmadığınız sürece TYPE belirtmeyin.
- Dış veri kaynağı Cloudera CDH, Hortonworks HDP, Azure Depolama hesabı veya Azure Data Lake Storage 2. Nesil olduğunda kullanın
HADOOP
. -
BLOB_STORAGE
veya SQL Server 2017 (14.x) ile OPENROWSET kullanarak Azure Depolama hesabından toplu işlemleri yürütürken kullanın. Azure Depolama'da EXTERNAL TABLE oluşturmak istediğinizde kullanınHADOOP
. - HDFS Cloudera (CDP) ve Hortonworks (HDP) dış veri kaynakları için SQL Server desteği kullanımdan kaldırılmıştır ve SQL Server 2022 (16.x) ve sonraki sürümlerde yer almamıştır. Daha fazla bilgi için bkz. Microsoft SQL Server platformunda Büyük veri seçenekleri.
Azure Depolama hesabından veri yüklemek için kullanma TYPE
= HADOOP
örneği için bkz. wasb:// arabirimini kullanarak Azure Depolama'daki verilere erişmek için dış veri kaynağı oluşturma.
RESOURCE_MANAGER_LOCATION = 'ResourceManager_URI[:p ort]'
SQL Server 2019'da (15.x), Bir Azure Depolama hesabı olan Cloudera CDH, Hortonworks HDP'ye bağlanmadığınız sürece RESOURCE_MANAGER_LOCATION belirtmeyin.
Yalnızca Cloudera CDH, Hortonworks HDP veya bir Azure Depolama hesabına bağlanırken bu isteğe bağlı değeri yapılandırın. Desteklenen Hadoop sürümlerinin tam listesi için bkz. PolyBase bağlantı yapılandırması.
RESOURCE_MANAGER_LOCATION
tanımlandığında, sorgu iyileştirici performansı geliştirmek için maliyet tabanlı bir karar verir. MapReduce işi, hesaplamayı Hadoop'a göndermek için kullanılabilir. değerinin RESOURCE_MANAGER_LOCATION
belirtilmesi Hadoop ile SQL Server arasında aktarılan veri hacmini önemli ölçüde azaltabilir ve bu da sorgu performansının artmasına neden olabilir.
Resource Manager belirtilmezse, PolyBase sorguları için Hadoop'a işlem gönderme devre dışı bırakılır. Aşağı itme özelliğinin etkinleştirildiği Hadoop'a başvurmak için dış veri kaynağı oluşturma , somut bir örnek ve daha fazla rehberlik sağlar.
Dış veri kaynağını oluşturduğunuzda RESOURCE_MANAGER_LOCATION değeri doğrulanmaz. Yanlış bir değer girilmesi, sağlanan değer çözümlenemediğinden, aşağı gönderme denendiği her durumda yürütme sırasında sorgu hatasına neden olabilir.
PolyBase'in hadoop dış veri kaynağıyla düzgün çalışması için aşağıdaki Hadoop kümesi bileşenlerinin bağlantı noktalarının açık olması gerekir:
- HDFS bağlantı noktaları
- Ad Düğümü
- Veri düğümü
- 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 İş Gönderimi (Cloudera 4.3) | 8021 |
Resource Manager İş Gönderimi (Windows'ta Hortonworks 2.0, Linux'ta Cloudera 5.x) | 8032 |
Resource Manager İş Gönderimi (Linux üzerinde Hortonworks 2.x, 3.0, Windows üzerinde Hortonworks 2.1-3) | 8050 |
Resource Manager İş Geçmişi | 10020 |
İzinler
CONTROL
SQL Server'daki veritabanında izin gerektirir.
Kilitleme
Nesne üzerinde EXTERNAL DATA SOURCE
paylaşılan bir kilit alır.
Güvenlik
PolyBase, dış veri kaynaklarının çoğu için ara sunucu tabanlı kimlik doğrulamasını destekler. Proxy hesabını oluşturmak için veritabanı kapsamlı bir kimlik bilgisi oluşturun.
SQL Server 2019 Büyük Veri Kümesi'ndeki depolama veya veri havuzuna bağlandığınızda, kullanıcının kimlik bilgileri arka uç sistemine geçirilir. Geçiş kimlik doğrulamasını etkinleştirmek için veri havuzunun kendisinde oturum açma bilgileri oluşturun.
Türü HADOOP
olan bir SAS belirteci desteklenmiyor. Bunun yerine yalnızca depolama hesabı erişim anahtarı kullanıldığında tür = BLOB_STORAGE
ile desteklenir. Tür HADOOP
ve SAS kimlik bilgilerine sahip bir dış veri kaynağı oluşturma girişimi aşağıdaki hatayla başarısız oluyor:
Msg 105019, Level 16, State 1 - EXTERNAL TABLE access failed due to internal error: 'Java exception raised on call to HdfsBridge_Connect. Java exception message: Parameters provided to connect to the Azure storage account are not valid.: Error [Parameters provided to connect to the Azure storage account are not valid.] occurred while accessing external file.'
Örnekler
Önemli
PolyBase'i yükleme ve etkinleştirme hakkında bilgi için bkz. Windows'a PolyBase yükleme
A. Oracle'a başvurmak için SQL Server 2019'da dış veri kaynağı oluşturma
Oracle'a başvuran bir dış veri kaynağı oluşturmak için veritabanı kapsamlı bir kimlik bilgileriniz olduğundan emin olun. Ayrıca, isteğe bağlı olarak bu veri kaynağında hesaplamanın aşağı itilmesi özelliğini etkinleştirebilir veya devre dışı bırakabilirsiniz.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL OracleProxyAccount
WITH IDENTITY = 'oracle_username',
SECRET = 'oracle_password';
CREATE EXTERNAL DATA SOURCE MyOracleServer
WITH (
LOCATION = 'oracle://145.145.145.145:1521',
CREDENTIAL = OracleProxyAccount,
PUSHDOWN = ON
);
İsteğe bağlı olarak, Oracle'a yönelik dış veri kaynağı, ayrıntılı erişim denetimi sağlamak için ara sunucu kimlik doğrulamasını kullanabilir. Ara sunucu kullanıcısı, kimliğine bürünülen kullanıcıyla karşılaştırıldığında sınırlı erişime sahip olacak şekilde yapılandırılabilir.
CREATE DATABASE SCOPED CREDENTIAL [OracleProxyCredential]
WITH IDENTITY = 'oracle_username',
SECRET = 'oracle_password';
CREATE EXTERNAL DATA SOURCE [OracleSalesSrvr]
WITH (
LOCATION = 'oracle://145.145.145.145:1521',
CONNECTION_OPTIONS = 'ImpersonateUser=%CURRENT_USER',
CREDENTIAL = [OracleProxyCredential]
);
Alternatif olarak, TNS kimlik doğrulamayı kullanabilirsiniz.
SQL Server 2019 (15.x) Toplu Güncelleştirme 19'dan başlayarak, CREATE EXTERNAL DATA SOURCE
artık Oracle'a bağlanırken TNS dosyalarının kullanımını destekliyor.
CONNECTION_OPTIONS
parametresi genişletildi ve şimdi dosyaya TNSNamesFile
göz atmak ServerName
ve sunucuyla bağlantı kurmak için ve değişken olarak ve kullanıyortnsnames.ora
.
Aşağıdaki örnekte, çalışma zamanı sırasında SQL Server tnsnames.ora
tarafından TNSNamesFile
belirtilen dosya konumunu ve tarafından ServerName
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 (
LOCATION = 'hdfs://10.10.10.10:8050',
TYPE = HADOOP
);
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 (
LOCATION = 'hdfs://10.10.10.10:8020',
TYPE = HADOOP,
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 (
LOCATION = 'hdfs://10.10.10.10:8050',
CREDENTIAL = HadoopUser1,
TYPE = HADOOP,
RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);
E. wasb:// arabirimini kullanarak Azure Depolama'daki verilere erişmek için dış veri kaynağı oluşturma
Bu örnekte dış veri kaynağı adlı logs
bir Azure V2 Depolama hesabıdır. Depolama kapsayıcısı olarak adlandırılır daily
. Azure Depolama dış veri kaynağı yalnızca veri aktarımı içindir. Koşul aşağı göndermeyi desteklemez. Arabirim aracılığıyla wasb://
verilere erişirken hiyerarşik ad alanları desteklenmez. veya wasb
aracılığıyla wasbs
Azure Depolama'ya bağlanırken kimlik doğrulaması, paylaşılan erişim imzası (SAS) ile değil depolama hesabı anahtarıyla yapılmalıdır.
Bu örnekte, Azure V2 Depolama hesabında kimlik doğrulaması için veritabanı kapsamlı kimlik bilgilerinin nasıl oluşturulacağı gösterilmektedir. Veritabanı kimlik bilgisi gizli dizisinde Azure Depolama hesabı anahtarını belirtin. Azure Depolama'da kimlik doğrulaması sırasında kullanılmadığından, veritabanı kapsamlı kimlik bilgileri kimliğindeki herhangi bir dizeyi belirtebilirsiniz.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
WITH IDENTITY = '<my_account>',
SECRET = '<azure_storage_account_key>';
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
LOCATION = 'wasbs://daily@logs.blob.core.windows.net/',
CREDENTIAL = AzureStorageCredential,
TYPE = HADOOP
);
F. PolyBase bağlantısı aracılığıyla örnek adlı bir SQL Server'a başvurmak için dış veri kaynağı oluşturma
Şunlar için geçerlidir: SQL Server 2019 (15.x) ve üzeri
SQL Server'ın adlandırılmış bir örneğine başvuran bir dış veri kaynağı oluşturmak için örnek adını belirtmek için kullanın CONNECTION_OPTIONS
.
Aşağıdaki örnekte konak WINSQL2019
adı ve SQL2019
örnek adıdır.
'Server=%s\SQL2019'
anahtar değer çiftidir.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2019',
CONNECTION_OPTIONS = 'Server=%s\SQL2019',
CREDENTIAL = SQLServerCredentials
);
Alternatif olarak, sql server varsayılan örneğine bağlanmak için bir bağlantı noktası kullanabilirsiniz.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2019:58137',
CREDENTIAL = SQLServerCredentials
);
G. Always On kullanılabilirlik grubunun okunabilir ikincil çoğaltmasına başvurmak için dış veri kaynağı oluşturma
Şunlar için geçerlidir: SQL Server 2019 (15.x) ve üzeri
SQL Server'ın okunabilir ikincil çoğaltmasına başvuran bir dış veri kaynağı oluşturmak için öğesini CONNECTION_OPTIONS
kullanarak belirtin ApplicationIntent=ReadOnly
. 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 ApplicationIntent
bir 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 LOCATION
, dosya adı veya paylaşılan erişim imzası parametrelerini eklemeyin.
H. Azure Depolama'dan veri alma toplu işlemleri için dış veri kaynağı oluşturma
Şunlar için geçerlidir: SQL Server 2017 (14.x) ve SQL Server 2019 (15.x)
BULK INSERT veya OPENROWSET 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 = 'https://newinvoices.blob.core.windows.net/week3',
CREDENTIAL = AccessAzureInvoices,
TYPE = BLOB_STORAGE
);
Bu örneği kullanımda görmek için bkz . BULK INSERT.
Ben. abfs:// arabirimini kullanarak Azure Depolama'daki verilere erişmek için dış veri kaynağı oluşturma
Şunlar için geçerlidir: SQL Server 2019 (15.x) CU11 ve üzeri
Bu örnekte dış veri kaynağı, Azure logs
Lake Storage 2. Nesil hesabıdır. Depolama kapsayıcısı olarak adlandırılır daily
. Koşul gönderimi desteklenmediğinden Azure Data Lake Storage 2. Nesil dış veri kaynağı yalnızca veri aktarımı içindir.
Bu örnekte, Azure Data Lake Storage 2. Nesil hesabında kimlik doğrulaması için veritabanı kapsamlı kimlik bilgilerinin nasıl oluşturulacağı gösterilmektedir. Veritabanı kimlik bilgisi gizli dizisinde Azure Depolama hesabı anahtarını belirtin. Azure Depolama'da kimlik doğrulaması sırasında kullanılmadığından, veritabanı kapsamlı kimlik bilgileri kimliğindeki herhangi bir dizeyi belirtebilirsiniz.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
WITH IDENTITY = '<my_account>',
SECRET = '<azure_storage_account_key>';
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
LOCATION = 'abfss://daily@logs.dfs.core.windows.net/',
CREDENTIAL = AzureStorageCredential,
TYPE = HADOOP
);
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 POSTGRES1
aynı 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
Genel Bakış: SQL Server 2022
için geçerlidir: SQL Server 2022 (16.x) ve sonraki sürümler
PolyBase sorguları için bir dış veri kaynağı oluşturur. Dış veri kaynakları, bağlantı kurmak ve şu birincil kullanım örneklerini desteklemek için kullanılır:
- SQL Server'da PolyBase kullanarak veri sanallaştırma ve veri yükü
- veya kullanarak
BULK INSERT
toplu yükleme işlemleriOPENROWSET
Uyarı
Bu söz dizimi SQL Server'ın farklı sürümlerinde farklılık gösterir. Uygun sürümü seçmek için sürüm seçici açılan listesini kullanın. Bu içerik SQL Server 2022 (16.x) ve sonraki sürümler için geçerlidir.
SQL Server 2022 söz dizimi
SQL Server 2022 ve sonraki sürümleri için söz dizimi
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ [ , ] CONNECTION_OPTIONS = '<key_value_pairs>'[,...]]
[ [ , ] CREDENTIAL = <credential_name> ]
[ [ , ] PUSHDOWN = { ON | OFF } ]
)
[ ; ]
Tartışmalar
data_source_name
Veri kaynağı için kullanıcı tanımlı adı belirtir. Ad, SQL Server'daki veritabanında benzersiz olmalıdır.
LOCATION = '<prefix>://<path[:p ort]>'
Bağlantı protokolunu ve dış veri kaynağının yolunu sağlar.
Dış Veri Kaynağı | Bağlayıcı konumu ön eki | Konum yolu | Ürüne/hizmete göre desteklenen konumlar | Kimlik doğrulama |
---|---|---|---|---|
Azure Depolama Hesabı (V2) | abs |
abs://<container_name>@<storage_account_name>.blob.core.windows.net/ veya abs://<storage_account_name>.blob.core.windows.net/<container_name> |
SQL Server 2022 (16.x) ile başlayarak Hiyerarşik Ad Alanı desteklenir. |
Paylaşılan erişim imzası (SAS) |
Azure Data Lake Storage (İkinci Nesil) | adls |
adls://<container_name>@<storage_account_name>.dfs.core.windows.net/ veya adls://<storage_account_name>.dfs.core.windows.net/<container_name> |
SQL Server 2022 (16.x) ile başlayarak | Paylaşılan erişim imzası (SAS) |
SQL 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 'den (14.x) başlayarak | Paylaşılan erişim imzası (SAS) |
S3 uyumlu nesne depolama | s3 |
- S3 uyumlu: s3://<server_name>:<port>/ - AWS S3: s3://<bucket_name>.S3.amazonaws.com[:port]/<folder> veya s3://s3.amazonaws.com[:port]/<bucket_name>/<folder> |
SQL Server 2022 (16.x) ile başlayarak | Temel veya geçişli (STS) * |
* Kimliğin sabit kodlandığı ve SECRET bağımsız değişkeninin biçiminde IDENTITY = 'S3 Access Key'
olduğu veya geçiş (STS) yetkilendirmesini kullandığı = '<AccessKeyID>:<SecretKeyID>'
olmalıdır. Daha fazla bilgi için bkz. PolyBase'i S3 uyumlu nesne depolama alanında dış verilere erişecek şekilde yapılandırma.
Konum yolu:
-
port
= Dış veri kaynağının dinlediği bağlantı noktası. Çoğu durumda, ağ yapılandırmasına bağlı olarak isteğe bağlıdır. -
<container_name>
= verileri tutan depolama hesabının kapsayıcısı. Kök kapsayıcılar salt okunur durumdadır, veriler kapsayıcıya geri yazılamaz. -
<storage_account>
= Azure kaynağının depolama hesabı adı. -
<server_name>
= konak adı. -
<instance_name>
= SQL Server adlı örneğin adı. Hedef örnekte çalışan SQL Server Tarayıcı Hizmetiniz varsa kullanılır. -
<ip_address>:<port>
= Yalnızca S3 uyumlu nesne depolama için (SQL Server 2022 (16.x) ile başlayarak), S3 uyumlu depolamaya bağlanmak için kullanılan uç nokta ve bağlantı noktası. -
<bucket_name>
= Yalnızca S3 uyumlu nesne depolama için (SQL Server 2022 (16.x) ile başlayarak), depolama platformuna özgü. -
<region>
= Yalnızca S3 uyumlu nesne depolama için (SQL Server 2022 (16.x) ile başlayarak), depolama platformuna özgü. -
<folder>
= Depolama URL'sinin içindeki depolama yolunun bir parçası.
Konumu ayarlarken ek notlar ve yönergeler:
- SQL Server Veritabanı Altyapısı, nesne oluşturulduğunda dış veri kaynağının varlığını doğrulamaz. Doğrulamak için dış veri kaynağını kullanarak bir dış tablo oluşturun.
- BAĞLAYıCıyı
sqlserver
kullanarak SQL Server 2019'u (15.x) başka bir SQL Server'a veya Azure SQL Veritabanı'na bağlayabilirsiniz. - aracılığıyla
Driver={<Name of Driver>}
bağlanırken değeriniODBC
belirtin. - Ön ekini
adls
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'ye (16.x) dahil değildir. SQL Server 2022'de (16.x) TYPE bağımsız değişkenini kullanmanız gerekmez.
- SQL Server 2022 (16.x) ile başlayan S3 uyumlu nesne depolama ve PolyBase hakkında daha fazla bilgi için bkz. PolyBase'i S3 uyumlu nesne depolama alanında dış verilere erişecek şekilde yapılandırma. S3 uyumlu nesne depolama alanında bir parquet dosyasını sorgulama örneği için bkz. PolyBase ile S3 uyumlu nesne depolama alanında parquet dosyasını sanallaştırma.
- SQL Server 2022'de (16.x) önceki sürümlerden farklı olarak, Azure Depolama Hesabı (v2) için kullanılan ön ek olarak
wasb[s]
abs
olarak değiştirildi. - SQL Server 2022'de (16.x) önceki sürümlerden farklı olarak, Azure Data Lake Storage 2. Nesil için kullanılan ön ek olarak
abfs[s]
adls
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 () hem de Azure Data Lake 2. Nesil (
abs
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
(önerilen) veyaabs://<storage_account_name>.blob.core.windows.net/<container>
.
- Azure Depolama Hesabı v2:
- LOCATION yolu şu biçimleri kullanabilir:
- Azure Data Lake 2. Nesil şu desteği destekler:
adls://<container>@<storage_account_name>.blob.core.windows.net
(önerilen) veyaadls://<storage_account_name>.dfs.core.windows.net/<container>
.
CONNECTION_OPTIONS = key_value_pair
SQL Server 2019 (15.x) ve sonraki sürümler için belirtildi. Dış veri kaynağına bağlanırken ODBC
ek seçenekleri belirtir. Birden çok bağlantı seçeneği kullanmak için bunları noktalı virgülle ayırın.
Genel ODBC
bağlantıların yanı sıra SQL Server, Oracle, Teradata, MongoDB ve MongoDB için Azure Cosmos DB API'sine ODBC
yönelik yerleşik bağlayıcılar için geçerlidir.
key_value_pair
, belirli bir bağlantı seçeneğinin anahtar sözcüğü ve değeridir. Kullanılabilir anahtar sözcükler ve değerler dış veri kaynağı türüne bağlıdır. Sürücünün adı en düşük değer olarak gereklidir, ancak veya gibi APP='<your_application_name>'
ApplicationIntent= ReadOnly|ReadWrite
ayarlamak için de yararlı olan ve sorun gidermeye yardımcı olabilecek başka seçenekler de vardır.
Olası anahtar değer çiftleri sürücüye özgüdür. Her sağlayıcı hakkında daha fazla bilgi için bkz. CREATE EXTERNAL DATA SOURCE (Transact-SQL) CONNECTION_OPTIONS.
SQL Server 2022 (16.x) Toplu Güncelleştirme 2'den başlayarak, Oracle TNS dosyalarını desteklemek için ek anahtar sözcükler kullanıma sunulmuştur:
- anahtar sözcüğü
TNSNamesFile
, Oracle sunucusunda bulunan dosyanın dosya yolutnsnames.ora
belirtir. - anahtar sözcüğü
ServerName
, içinde konaktnsnames.ora
adını ve bağlantı noktasını değiştirmek için kullanılacak diğer adı belirtir.
PUSHDOWN = ON | KAPALI
Şunlar için geçerlidir: SQL Server 2019 (15.x) ve sonraki sürümleri. Hesaplamanın dış veri kaynağına gönderilip gönderilemeyeceğini belirtir. Varsayılan olarak açıktır.
PUSHDOWN
SQL Server, Oracle, Teradata, MongoDB, MongoDB için Azure Cosmos DB API'sine veya dış veri kaynağı düzeyinde ODBC'ye bağlanırken desteklenir.
Sorgu düzeyinde aşağı göndermeyi etkinleştirme veya devre dışı bırakma işlemi , EXTERNALPUSHDOWN ipucu aracılığıyla sağlanır.
CREDENTIAL = credential_name
Dış veri kaynağında kimlik doğrulaması için veritabanı kapsamlı bir kimlik bilgisi belirtir.
Kimlik bilgisi oluştururken ek notlar ve yönergeler:
-
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. - Azure Depolama Hesabına (V2) veya Azure Data Lake Storage 2. Nesil'e erişirken, olması
IDENTITY
SHARED ACCESS SIGNATURE
gerekir. - Örnek için bkz. Toplu işlemleri yürütmek ve Azure Depolama'dan SQL Veritabanı'na veri almak için dış veri kaynağı oluşturma.
Paylaşılan erişim imzası oluşturmanın birden çok yolu vardır:
Azure portalı -><Your_Storage_Account> - Paylaşılan erişim imzası -> İzinleri yapılandırma ->> SAS ve bağlantı dizesi oluşturma bölümüne giderek SAS belirteci oluşturabilirsiniz. Daha fazla bilgi için bkz . Paylaşılan erişim imzası oluşturma.
Azure Depolama Gezgini ile SAS oluşturabilir ve yapılandırabilirsiniz.
Sas belirtecini PowerShell, Azure CLI, .NET ve REST API aracılığıyla program aracılığıyla oluşturabilirsiniz. Daha fazla bilgi için bkz . Paylaşılan erişim imzalarını (SAS) kullanarak Azure Depolama kaynaklarına sınırlı erişim verme.
SAS belirteci aşağıdaki gibi yapılandırılmalıdır:
- SAS belirteci oluşturulduğunda belirtecin başında bir soru işareti ('?') bulunur. GİzLİ olarak yapılandırıldığında baştakileri
?
hariç tutun. - Geçerli bir süre sonu dönemi kullanın (tüm tarihler UTC saatindedir).
- SAS belirteci oluşturulduğunda belirtecin başında bir soru işareti ('?') bulunur. GİzLİ olarak yapılandırıldığında baştakileri
Yüklenmesi gereken dosya üzerinde en azından okuma izni verin (örneğin
srt=o&sp=r
). Farklı kullanım örnekleri için birden çok paylaşılan erişim imzası oluşturulabilir. İzinler aşağıdaki gibi verilmelidir:Eylem İzin Dosyadan veri okuma Okumak Birden çok dosyadan ve alt klasörden veri okuma Okuma ve Listeleme Dış Tablo Oluştur'u Seç Olarak Kullanma (CETAS) Okuma, Oluşturma, Listeleme ve Yazma Azure Blob Depolama ve Azure Data Lake 2. Nesil için:
- İzin verilen hizmetler:
Blob
SAS belirtecini oluşturmak için seçilmelidir
- İzin verilen hizmetler:
İzin verilen kaynak türleri:
Container
veObject
SAS 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 (Transact-SQL).
İzinler
CONTROL
SQL Server'daki veritabanında izin gerektirir.
Kilitleme
Nesne üzerinde EXTERNAL DATA SOURCE
paylaşılan bir kilit alır.
Güvenlik
PolyBase, dış veri kaynaklarının çoğu için ara sunucu tabanlı kimlik doğrulamasını destekler. Proxy hesabını oluşturmak için veritabanı kapsamlı bir kimlik bilgisi oluşturun.
SQL Server 2022'ye yükseltme
SQL Server 2022'den (16.x) başlayarak Hadoop dış veri kaynakları artık desteklenmiyor. Daha önce ile TYPE = HADOOP
oluşturulan dış veri kaynaklarını ve bu dış veri kaynağını kullanan dış tabloları el ile yeniden oluşturmak gerekir.
Kullanıcıların Azure Depolama'ya bağlanırken yeni bağlayıcıları kullanacak şekilde dış veri kaynaklarını da yapılandırmaları gerekir.
Dış Veri Kaynağı | Kaynak | İçin |
---|---|---|
Azure Blob Saklama Alanı | wasb[s] |
abs |
ADLS 2. Nesil | abfs[s] |
adls |
Örnekler
Önemli
PolyBase'i yükleme ve etkinleştirme hakkında bilgi için bkz. Windows'a PolyBase yükleme
A. Oracle'a başvurmak için SQL Server'da dış veri kaynağı oluşturma
Oracle'a başvuran bir dış veri kaynağı oluşturmak için veritabanı kapsamlı bir kimlik bilgileriniz olduğundan emin olun. Ayrıca, isteğe bağlı olarak bu veri kaynağında hesaplamanın aşağı itilmesi özelliğini etkinleştirebilir veya devre dışı bırakabilirsiniz.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL OracleProxyAccount
WITH IDENTITY = 'oracle_username',
SECRET = 'oracle_password';
CREATE EXTERNAL DATA SOURCE MyOracleServer
WITH (
LOCATION = 'oracle://145.145.145.145:1521',
CREDENTIAL = OracleProxyAccount,
PUSHDOWN = ON
);
İsteğe bağlı olarak, Oracle'a dış veri kaynağı ayrıntılı erişim denetimi sağlamak için ara sunucu kimlik doğrulamasını kullanabilir. Ara sunucu kullanıcısı, kimliğine bürünülen kullanıcıyla karşılaştırıldığında sınırlı erişime sahip olacak şekilde yapılandırılabilir.
CREATE DATABASE SCOPED CREDENTIAL [OracleProxyCredential]
WITH IDENTITY = 'oracle_username',
SECRET = 'oracle_password';
CREATE EXTERNAL DATA SOURCE [OracleSalesSrvr]
WITH (
LOCATION = 'oracle://145.145.145.145:1521',
CONNECTION_OPTIONS = 'ImpersonateUser=%CURRENT_USER',
CREDENTIAL = [OracleProxyCredential]
);
Alternatif olarak, TNS kullanarak kimlik doğrulaması yapabilirsiniz.
SQL Server 2022 (16.x) Toplu Güncelleştirme 2'den başlayarak, CREATE EXTERNAL DATA SOURCE
artık Oracle'a bağlanırken TNS dosyalarının kullanımını destekliyor.
CONNECTION_OPTIONS
parametresi genişletildi ve şimdi dosyaya TNSNamesFile
göz atmak ServerName
ve sunucuyla bağlantı kurmak için ve değişken olarak ve kullanıyortnsnames.ora
.
Aşağıdaki örnekte, çalışma zamanı sırasında SQL Server tnsnames.ora
tarafından TNSNamesFile
belirtilen dosya konumunu ve tarafından ServerName
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 örnek adlı bir SQL Server'a başvurmak için dış veri kaynağı oluşturma
Şunlar için geçerlidir: SQL Server 2019 (15.x) ve üzeri
SQL Server'ın adlandırılmış bir örneğine başvuran bir dış veri kaynağı oluşturmak için örnek adını belirtmek için kullanın CONNECTION_OPTIONS
.
İlk olarak, SQL kimliği doğrulanmış oturum açma bilgileri için kimlik bilgilerini depolayarak veritabanı kapsamlı kimlik bilgilerini oluşturun. PolyBase için SQL ODBC Bağlayıcısı yalnızca temel kimlik doğrulamasını destekler. Veritabanı kapsamlı bir kimlik bilgisi oluşturmadan önce, veritabanının kimlik bilgilerini korumak için bir ana anahtarı olmalıdır. Daha fazla bilgi için bkz. CREATE MASTER KEY (Transact-SQL). Aşağıdaki örnek, veritabanı kapsamlı bir kimlik bilgisi oluşturur, kendi oturum açma bilgilerinizi ve parolanızı sağlar.
CREATE DATABASE SCOPED CREDENTIAL SQLServerCredentials
WITH IDENTITY = 'username',
SECRET = 'password';
Aşağıdaki örnekte konak WINSQL2019
adı ve SQL2019
örnek adıdır.
'Server=%s\SQL2019'
anahtar değer çiftidir.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2019',
CONNECTION_OPTIONS = 'Server=%s\SQL2019',
CREDENTIAL = SQLServerCredentials
);
Alternatif olarak, sql server varsayılan örneğine bağlanmak için bir bağlantı noktası kullanabilirsiniz.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2019:58137',
CREDENTIAL = SQLServerCredentials
);
C. Always On kullanılabilirlik grubunun okunabilir ikincil çoğaltmasına başvurmak için dış veri kaynağı oluşturma
Şunlar için geçerlidir: SQL Server 2019 (15.x) ve üzeri
SQL Server'ın okunabilir ikincil çoğaltmasına başvuran bir dış veri kaynağı oluşturmak için öğesini CONNECTION_OPTIONS
kullanarak belirtin ApplicationIntent=ReadOnly
. 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 (Transact-SQL). 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 ApplicationIntent
bir dış tablo belirtip sys.servers
oluşturarak kullanılabilirlik grubunun yeniden yönlendirme davranışını gösterebilirsiniz. Aşağıdaki örnek betikte iki dış veri kaynağı oluşturulur ve her biri için bir dış tablo oluşturulur. Hangi sunucunun bağlantıya yanıt verdiğini test etmek için görünümleri kullanın. Benzer sonuçlar salt okunur yönlendirme özelliği aracılığıyla da elde edilebilir. Daha fazla bilgi için bkz. Always On kullanılabilirlik grubu için salt okunur yönlendirmeyi yapılandırma.
CREATE EXTERNAL DATA SOURCE [DataSource_SQLInstanceListener_ReadOnlyIntent]
WITH (
LOCATION = 'sqlserver://WINSQL2019AGL',
CONNECTION_OPTIONS = 'ApplicationIntent=ReadOnly; Database=dbname',
CREDENTIAL = [SQLServerCredentials]
);
GO
CREATE EXTERNAL DATA SOURCE [DataSource_SQLInstanceListener_ReadWriteIntent]
WITH (
LOCATION = 'sqlserver://WINSQL2019AGL',
CONNECTION_OPTIONS = 'ApplicationIntent=ReadWrite',
CREDENTIAL = [SQLServerCredentials]
);
GO
Kullanılabilirlik grubundaki veritabanının içinde, döndürülecek sys.servers
bir görünüm ve sorguya hangi çoğaltmanın yanıt verdiğini belirlemenize yardımcı olan yerel örneğin adını oluşturun. Daha fazla bilgi için bkz. sys.servers.
CREATE VIEW vw_sys_servers
AS
SELECT [name]
FROM sys.servers
WHERE server_id = 0;
GO
Ardından kaynak örnekte bir dış tablo oluşturun:
CREATE EXTERNAL TABLE vw_sys_servers_ro (name SYSNAME NOT NULL)
WITH (
DATA_SOURCE = [DataSource_SQLInstanceListener_ReadOnlyIntent],
LOCATION = N'dbname.dbo.vw_sys_servers'
);
GO
CREATE EXTERNAL TABLE vw_sys_servers_rw (name SYSNAME NOT NULL)
WITH (
DATA_SOURCE = [DataSource_SQLInstanceListener_ReadWriteIntent],
LOCATION = N'dbname.dbo.vw_sys_servers'
);
GO
SELECT [name]
FROM dbo.vw_sys_servers_ro;--should return secondary replica instance
SELECT [name]
FROM dbo.vw_sys_servers_rw;--should return primary replica instance
GO
D. PolyBase aracılığıyla S3 uyumlu nesne depolama alanında bir parquet dosyasını sorgulamak için dış veri kaynağı oluşturma
Şunlar için geçerlidir: SQL Server 2022 (16.x) ve üzeri
Aşağıdaki örnek betik, SQL Server'daki kaynak kullanıcı veritabanında bir dış veri kaynağı s3_ds
oluşturur. Dış veri kaynağı, s3_dc
veritabanı kapsamlı kimlik bilgilerine başvurur.
CREATE DATABASE SCOPED CREDENTIAL s3_dc
WITH IDENTITY = 'S3 Access Key', -- for S3-compatible object storage the identity must always be S3 Access Key
SECRET = '<access_key_id>:<secret_key_id>' -- provided by the S3-compatible object storage
GO
CREATE EXTERNAL DATA SOURCE s3_ds
WITH (
LOCATION = 's3://<ip_address>:<port>/',
CREDENTIAL = s3_dc
);
GO
yeni dış veri kaynağını sys.external_data_sourcesile doğrulayın.
SELECT * FROM sys.external_data_sources;
Ardından aşağıdaki örnek, OPENROWSET sorgusu aracılığıyla S3 uyumlu nesne depolama alanında depolanan bir parquet dosyasını sorgulamak için T-SQL'in kullanılmasını gösterir. Daha fazla bilgi için bkz. PolyBase ile S3 uyumlu bir nesne depolama alanında parquet dosyasını sanallaştırma.
SELECT *
FROM OPENROWSET (
BULK '/<bucket>/<parquet_folder>',
FORMAT = 'PARQUET',
DATA_SOURCE = 's3_ds'
) AS [cc];
E. PostgreSQL'e genel ODBC kullanarak dış veri kaynağı oluşturma
Önceki örneklerde olduğu gibi, önce bir veritabanı ana anahtarı ve veritabanı kapsamlı kimlik bilgileri oluşturun. Dış veri kaynağı için veritabanı kapsamlı kimlik bilgileri kullanılır. Bu örnekte, sunucuda PostgreSQL için genel bir ODBC veri sağlayıcısının yüklü olduğu da varsayılır.
Bu örnekte genel ODBC veri sağlayıcısı, varsayılan TCP 5432 bağlantı noktası kullanılarak PostgreSQL sunucusunun tam etki alanı adının olduğu POSTGRES1
aynı ağdaki bir PostgreSQL veritabanı sunucusuna bağlanmak için kullanılır.
CREATE EXTERNAL DATA SOURCE POSTGRES1
WITH (
LOCATION = 'odbc://POSTGRES1.domain:5432',
CONNECTION_OPTIONS = 'Driver={PostgreSQL Unicode(x64)};',
CREDENTIAL = postgres_credential
);
Azure Depolama
Paylaşılan erişim imzası oluşturma
Hem Azure Blob Depolama hem de Azure Data Lake Storage (ADLS) 2. Nesil için desteklenen kimlik doğrulama yöntemi paylaşılan erişim imzası (SAS) yöntemidir. Paylaşılan erişim imzası belirteci oluşturmanın basit bir yolu aşağıdaki adımları izleyin. Daha fazla bilgi için bkz. CREDENTIAL.
Azure portalına ve istediğiniz Depolama Hesabına gidin.
Veri Depolama menüsü altında istediğiniz Kapsayıcıya gidin.
Paylaşılan erişim belirteçleri'ni seçin.
İstenen eyleme göre uygun izni seçin:
Eylem İzin Dosyadan veri okuma Okumak Birden çok dosyadan ve alt klasörden veri okuma Okuma ve Listeleme Dış Tablo Oluştur'u Seç Olarak Kullanma (CETAS) Okuma, Oluşturma ve Yazma Belirteç son kullanma tarihini seçin.
SAS belirteci ve URL'si oluşturun.
SAS belirtecini kopyalayın.
F. abs:// arabirimini kullanarak Azure Blob Depolama'daki verilere erişmek için dış veri kaynağı oluşturma
Şunlar için geçerlidir: SQL Server 2022 (16.x) ve üzeri
SQL Server 2022'den (16.x) başlayarak Azure Depolama Hesabı v2 için yeni bir ön ek abs
kullanın. Ön abs
ek, kullanarak SHARED ACCESS SIGNATURE
kimlik doğrulamasını destekler. Ön ek, abs
önceki sürümlerde wasb
kullanılan öğesinin yerini alır. HADOOP artık desteklenmiyor, artık kullanılmasına TYPE = BLOB_STORAGE
gerek yok.
Azure depolama hesabı anahtarı artık gerekli değildir; bunun yerine aşağıdaki örnekte görebileceğiniz gibi SAS Belirteci kullanılır:
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
GO
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredentialv2
WITH IDENTITY = 'SHARED ACCESS SIGNATURE', -- to use SAS the identity must be fixed as-is
SECRET = '<Blob_SAS_Token>';
GO
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
LOCATION = 'abs://<container>@<storage_account_name>.blob.core.windows.net/',
CREDENTIAL = AzureStorageCredentialv2
);
Azure Blob Depolama'da depolanan CSV dosyalarına erişme hakkında daha ayrıntılı bir örnek için bkz. PolyBase ile CSV dosyasını sanallaştırma.
G. Azure Data Lake 2. Nesil'deki verilere erişmek için dış veri kaynağı oluşturma
Şunlar için geçerlidir: SQL Server 2022 (16.x) ve sonraki sürümleri
SQL Server 2022'den (16.x) başlayarak Azure Data Lake 2adls
. Nesil için önceki sürümlerde kullanılan yerine yeni bir ön ek abfs
kullanın. Ön ek, adls
bu örnekte gösterildiği gibi kimlik doğrulama yöntemi olarak SAS belirtecini de destekler:
--Create a database scoped credential using SAS Token
CREATE DATABASE SCOPED CREDENTIAL datalakegen2
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = '<DataLakeGen2_SAS_Token>';
GO
CREATE EXTERNAL DATA SOURCE data_lake_gen2_dfs
WITH (
LOCATION = 'adls://<container>@<storage_account>.dfs.core.windows.net',
CREDENTIAL = datalakegen2
);
Azure Data Lake 2. Nesil'de depolanan delta dosyalarına erişme hakkında daha ayrıntılı bir örnek için bkz. PolyBase ile delta tablosunu sanallaştırma.
Örnekler: Toplu İşlemler
Önemli
Bir dış veri kaynağını toplu işlemler için yapılandırırken URL'nin / sonuna sondaki LOCATION
, dosya adı veya paylaşılan erişim imzası parametrelerini eklemeyin.
H. Azure Depolama'dan veri alma toplu işlemleri için dış veri kaynağı oluşturma
Şunlar için geçerlidir: SQL Server 2022 (16.x) ve sonraki sürümleri.
BULK INSERT (Transact-SQL) veya OPENROWSET (Transact-SQL) 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
Genel Bakış: SQL Server 2025
Şunlar için geçerlidir: SQL Server 2025 (17.x) Önizleme ve sonraki sürümler.
PolyBase sorguları için bir dış veri kaynağı oluşturur. Dış veri kaynakları, bağlantı kurmak ve şu birincil kullanım örneklerini desteklemek için kullanılır:
- SQL Server'da PolyBase ile Veri sanallaştırma kullanarak veri sanallaştırma ve veri yükü
- veya kullanarak
BULK INSERT
toplu yükleme işlemleriOPENROWSET
Uyarı
Bu söz dizimi SQL Server'ın farklı sürümlerinde farklılık gösterir. Uygun sürümü seçmek için sürüm seçici açılan listesini kullanın. Bu içerik SQL Server 2025 (17.x) Önizleme ve sonraki sürümler için geçerlidir.
SQL Server 2025 ve sonraki sürümleri için söz dizimi
Söz dizimi kuralları hakkında daha fazla bilgi için bkz.
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ [ , ] CONNECTION_OPTIONS = '<key_value_pairs>'[,...]]
[ [ , ] CREDENTIAL = <credential_name> ]
[ [ , ] PUSHDOWN = { ON | OFF } ]
)
[ ; ]
Tartışmalar
data_source_name
Veri kaynağı için kullanıcı tanımlı adı belirtir. Ad, SQL Server'daki veritabanında benzersiz olmalıdır.
LOCATION = '<prefix>://<path[:p ort]>'
Bağlantı protokolunu ve dış veri kaynağının yolunu sağlar.
Dış veri kaynağı | Bağlayıcı konumu ön eki | Konum yolu | Ürüne/hizmete göre desteklenen konumlar | Kimlik doğrulama |
---|---|---|---|---|
Azure Depolama Hesabı (V2) | abs |
abs://<container_name>@<storage_account_name>.blob.core.windows.net/ veya abs://<storage_account_name>.blob.core.windows.net/<container_name> |
SQL Server 2022 (16.x) ile başlayarak Hiyerarşik Ad Alanı desteklenir. |
Paylaşılan erişim imzası (SAS) |
Azure Data Lake Storage (İkinci Nesil) | adls |
adls://<container_name>@<storage_account_name>.dfs.core.windows.net/ veya adls://<storage_account_name>.dfs.core.windows.net/<container_name> |
SQL Server 2022 (16.x) ile başlayarak | Paylaşılan erişim imzası (SAS) |
SQL 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 'den (14.x) başlayarak | Paylaşılan erişim imzası (SAS) |
S3 uyumlu nesne depolama | s3 |
- S3 uyumlu: s3://<server_name>:<port>/ - AWS S3: s3://<bucket_name>.S3.amazonaws.com[:port]/<folder> veya s3://s3.amazonaws.com[:port]/<bucket_name>/<folder> |
SQL Server 2022 (16.x) ile başlayarak | Temel veya geçişli (STS) 1 |
1 Veritabanı kapsamlı bir kimlik bilgisi olmalıdır; burada IDENTITY
sabit kodlanır IDENTITY = 'S3 Access Key'
ve SECRET
bağımsız değişken biçimindedir = '<AccessKeyID>:<SecretKeyID>'
veya geçiş (STS) yetkilendirmesini kullanır. Daha fazla bilgi için bkz. PolyBase'i S3 uyumlu nesne depolama alanında dış verilere erişecek şekilde yapılandırma.
Konum yolu:
Konum yolu | Açıklama |
---|---|
port |
Dış veri kaynağının dinlediği bağlantı noktası. Çoğu durumda, ağ yapılandırmasına bağlı olarak isteğe bağlıdır. |
<container_name> |
Verileri tutan depolama hesabının kapsayıcısı. Kök kapsayıcılar salt okunur durumdadır, veriler kapsayıcıya geri yazılamaz. |
<storage_account> |
Azure kaynağının depolama hesabı adı. |
<server_name> |
Ana bilgisayar adı. |
<instance_name> |
SQL Server adlı örneğin adı. Hedef örnekte çalışan SQL Server Tarayıcı Hizmetiniz varsa kullanılır. |
<ip_address>:<port>
1 |
Yalnızca S3 uyumlu nesne depolaması için, S3 uyumlu depolamaya bağlanmak için kullanılan uç nokta ve bağlantı noktası. |
<bucket_name>
1 |
Yalnızca S3 uyumlu nesne depolaması için, depolama platformuna özgü. |
<region>
1 |
Yalnızca S3 uyumlu nesne depolaması için, depolama platformuna özgü. |
<folder> |
Depolama URL'si içindeki depolama yolunun bir parçası. |
1 SQL Server 2022 (16.x) ve sonraki sürümleri.
Konumu ayarlarken ek notlar ve yönergeler:
SQL Server Veritabanı Altyapısı, nesne oluşturulduğunda dış veri kaynağının varlığını doğrulamaz. Doğrulamak için dış veri kaynağını kullanarak bir dış tablo oluşturun.
BAĞLAYıCıyı
sqlserver
kullanarak SQL Server 2019'u (15.x) başka bir SQL Server'a veya Azure SQL Veritabanı'na bağlayabilirsiniz.aracılığıyla
Driver={<Name of Driver>}
bağlanırken değeriniODBC
belirtin.Ön ekini
adls
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 (17.x) Preview'da bağımsız değişkenini
TYPE
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. PolyBase'i S3 uyumlu nesne depolamadaki dış verilere erişecek şekilde yapılandırma. S3 uyumlu nesne depolama alanında bir parquet dosyasını sorgulama örneği için bkz. PolyBase ile S3 uyumlu nesne depolama alanında parquet dosyasını sanallaştırma.
SQL Server 2022 (16.x) ve sonraki sürümlerde:
Azure Depolama Hesabı (v2) için kullanılan ön ek olarak
wasb[s]
değiştirildiabs
Azure Data Lake Storage 2. Nesil için kullanılan ön ek olarak
abfs[s]
değiştirildiadls
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) ve sonraki sürümleri hem Azure Depolama Hesabı v2 () hem de Azure Data Lake 2. Nesil (
abs
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
(önerilen) veyaabs://<storage_account_name>.blob.core.windows.net/<container>
.
- Azure Depolama Hesabı v2:
Azure Data Lake 2. Nesil şu desteği destekler:
adls://<container>@<storage_account_name>.blob.core.windows.net
(önerilen) veyaadls://<storage_account_name>.dfs.core.windows.net/<container>
.
CONNECTION_OPTIONS = key_value_pair
için geçerlidir: SQL Server 2019 (15.x) ve sonraki sürümler.
Dış veri kaynağına bağlanırken ODBC
ek seçenekleri belirtir. Birden çok bağlantı seçeneği kullanmak için bunları noktalı virgülle ayırın.
Genel ODBC
bağlantıların yanı sıra SQL Server, Oracle, Teradata, MongoDB ve MongoDB için Azure Cosmos DB API'sine ODBC
yönelik yerleşik bağlayıcılar için geçerlidir.
key_value_pair
, belirli bir bağlantı seçeneğinin anahtar sözcüğü ve değeridir. Kullanılabilir anahtar sözcükler ve değerler dış veri kaynağı türüne bağlıdır. Sürücünün adı en düşük değer olarak gereklidir, ancak veya gibi APP='<your_application_name>'
ApplicationIntent= ReadOnly|ReadWrite
ayarlamak için de yararlı olan ve sorun gidermeye yardımcı olabilecek başka seçenekler de vardır.
Olası anahtar değer çiftleri sürücüye özgüdür. Her sağlayıcı hakkında daha fazla bilgi için bkz. CREATE EXTERNAL DATA SOURCE (Transact-SQL) CONNECTION_OPTIONS.
SQL Server 2022 (16.x) Toplu Güncelleştirme 2'den başlayarak, Oracle TNS dosyalarını desteklemek için ek anahtar sözcükler kullanıma sunulmuştur:
- anahtar sözcüğü
TNSNamesFile
, Oracle sunucusunda bulunan dosyanın dosya yolutnsnames.ora
belirtir. - anahtar sözcüğü
ServerName
, içinde konaktnsnames.ora
adını ve bağlantı noktasını değiştirmek için kullanılacak diğer adı belirtir.
SQL Server 2025 (17.x) Preview'da şifreleme seçenekleri
SQL Server 2025 (17.x) Önizleme sürümünden başlayarak, veri kaynağı olarak kullanıldığında sqlserver
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 , HostnameInCertificate
belirtilen sunucudan farklıysa sertifikada bulunan beklenen konak adını belirtmek için kullanılabilir.
HostnameInCertificate
tüm şifreleme modlarında kullanılabilir ve sunucu tarafı Şifrelemeyi Zorla seçeneği etkinse de geçerlidir. Bu seçenek, kullanılarak devre dışı bırakılmadığı sürece sürücünün İsteğe bağlı veya TrustServerCertificate
modlarda sertifikayı doğrulamasına neden olur.
Seçenekler, sunucu sertifikaları ve Encryption
hakkında TrustServerCertificate
daha fazla bilgi için bkz. Windows üzerinde SQL Server için Microsoft ODBC Sürücüsünün Özellikleri.
Her zaman en son sürücüyü kullanmalısınız. Ancak, SQL Server 2025 (17.x) Önizlemesi 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
için geçerlidir: SQL Server 2019 (15.x) ve sonraki sürümler.
Hesaplamanın dış veri kaynağına gönderilip gönderilemeyeceğini belirtir. Varsayılan olarak etkindir.
PUSHDOWN
SQL Server, Oracle, Teradata, MongoDB, MongoDB için Azure Cosmos DB API'sine veya dış veri kaynağı düzeyinde ODBC'ye bağlanırken desteklenir.
Sorgu düzeyinde aşağı göndermeyi etkinleştirme veya devre dışı bırakma işlemi bir ipucu aracılığıyla oluşturulduğunda elde edilir.
CREDENTIAL = credential_name
Dış veri kaynağında kimlik doğrulaması için veritabanı kapsamlı bir kimlik bilgisi belirtir.
Kimlik bilgisi oluştururken ek notlar ve yönergeler:
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.Azure Depolama Hesabına (V2) veya Azure Data Lake Storage 2. Nesil'e erişirken, olması
IDENTITY
SHARED ACCESS SIGNATURE
gerekir.Örnek için bkz. Toplu işlemleri yürütmek ve Azure Depolama'dan SQL Veritabanı'na veri almak için dış veri kaynağı oluşturma.
Paylaşılan erişim imzası oluşturmanın birden çok yolu vardır:
Paylaşılanerişim imzası><>SAS ve bağlantı dizesi oluşturma>> giderek SAS belirteci oluşturabilirsiniz. Daha fazla bilgi için bkz . Paylaşılan erişim imzası oluşturma.
Azure Depolama Gezgini ile SAS oluşturabilir ve yapılandırabilirsiniz.
Sas belirtecini PowerShell, Azure CLI, .NET ve REST API aracılığıyla program aracılığıyla oluşturabilirsiniz. Daha fazla bilgi için bkz . Paylaşılan erişim imzalarını (SAS) kullanarak Azure Depolama kaynaklarına sınırlı erişim verme.
SAS belirteci aşağıdaki gibi yapılandırılmalıdır:
SAS belirteci oluşturulduğunda belirtecin başında bir soru işareti ('?') bulunur. olarak yapılandırıldığında baştakileri
?
SECRET
hariç 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:
Blob
SAS belirtecini oluşturmak için seçilmelidir
- İzin verilen hizmetler:
İzin verilen kaynak türleri:
Container
veObject
SAS belirtecini oluşturmak için seçilmelidir
S3 uyumlu nesne depolama ve PolyBase ile kullanma CREDENTIAL
örneği için bkz. PolyBase'i S3 uyumlu nesne depolama alanında dış verilere erişecek şekilde yapılandırma.
Veritabanı kapsamlı kimlik bilgileri oluşturmak için bkz. CREATE DATABASE SCOPED CREDENTIAL.
İzinler
CONTROL
SQL Server'daki veritabanında izin gerektirir.
Kilitleme
Nesne üzerinde EXTERNAL DATA SOURCE
paylaşılan bir kilit alır.
Güvenlik
PolyBase, dış veri kaynaklarının çoğu için ara sunucu tabanlı kimlik doğrulamasını destekler. Proxy hesabını oluşturmak için veritabanı kapsamlı bir kimlik bilgisi oluşturun.
SQL Server 2025'e yükseltme
SQL Server 2022 (16.x) ve sonraki sürümlerinde Hadoop dış veri kaynakları desteklenmez. Daha önce ile TYPE = HADOOP
oluşturulan dış veri kaynaklarını ve bu dış veri kaynağını kullanan tüm dış tabloları el ile yeniden oluşturmak gerekir.
Kullanıcıların Azure Depolama'ya bağlanırken yeni bağlayıcıları kullanacak şekilde dış veri kaynaklarını da yapılandırmaları gerekir.
Dış veri kaynağı | Kaynak | İçin |
---|---|---|
Azure Blob Saklama Alanı | wasb[s] | Karın kasları |
ADLS 2. Nesil | abfs[s] | adls |
Örnekler
Önemli
PolyBase'i yükleme ve etkinleştirme hakkında bilgi için bkz. Windows'a PolyBase yükleme.
A. Oracle'a başvurmak için SQL Server'da dış veri kaynağı oluşturma
Oracle'a başvuran bir dış veri kaynağı oluşturmak için veritabanı kapsamlı bir kimlik bilgileriniz olduğundan emin olun. Ayrıca, isteğe bağlı olarak bu veri kaynağında hesaplamanın aşağı itilmesi özelliğini etkinleştirebilir veya devre dışı bırakabilirsiniz.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD= '<password>';
-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL OracleProxyAccount
WITH IDENTITY = 'oracle_username', SECRET = 'oracle_password';
CREATE EXTERNAL DATA SOURCE MyOracleServer
WITH (
LOCATION = 'oracle://145.145.145.145:1521',
PUSHDOWN = ON,
CREDENTIAL = OracleProxyAccount
);
İsteğe bağlı olarak, Oracle'a dış veri kaynağı ayrıntılı erişim denetimi sağlamak için ara sunucu kimlik doğrulamasını kullanabilir. Ara sunucu kullanıcısı, kimliğine bürünülen kullanıcıyla karşılaştırıldığında sınırlı erişime sahip olacak şekilde yapılandırılabilir.
CREATE DATABASE SCOPED CREDENTIAL [OracleProxyCredential]
WITH IDENTITY = 'oracle_username', SECRET = 'oracle_password';
CREATE EXTERNAL DATA SOURCE [OracleSalesSrvr]
WITH (
LOCATION = 'oracle://145.145.145.145:1521',
CONNECTION_OPTIONS = 'ImpersonateUser=%CURRENT_USER',
CREDENTIAL = [OracleProxyCredential]
);
Alternatif olarak, TNS kullanarak kimlik doğrulaması yapabilirsiniz.
SQL Server 2022 (16.x) Toplu Güncelleştirme 2'den başlayarak, CREATE EXTERNAL DATA SOURCE
artık Oracle'a bağlanırken TNS dosyalarının kullanımını destekliyor.
CONNECTION_OPTIONS
parametresi genişletildi ve şimdi dosyaya TNSNamesFile
göz atmak ServerName
ve sunucuyla bağlantı kurmak için ve değişken olarak ve kullanıyortnsnames.ora
.
Aşağıdaki örnekte, çalışma zamanı sırasında SQL Server tnsnames.ora
tarafından TNSNamesFile
belirtilen dosya konumunu ve tarafından ServerName
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 örnek adlı bir SQL Server'a başvurmak için dış veri kaynağı oluşturma
Şunlar için geçerlidir: SQL Server 2019 (15.x) ve sonraki sürümleri.
SQL Server'ın adlandırılmış bir örneğine başvuran bir dış veri kaynağı oluşturmak için örnek adını belirtmek için kullanın CONNECTION_OPTIONS
.
İlk olarak, SQL kimliği doğrulanmış oturum açma bilgileri için kimlik bilgilerini depolayarak veritabanı kapsamlı kimlik bilgilerini oluşturun. PolyBase için SQL ODBC Bağlayıcısı yalnızca temel kimlik doğrulamasını destekler. Veritabanı kapsamlı bir kimlik bilgisi oluşturmadan önce, veritabanının kimlik bilgilerini korumak için bir ana anahtarı olmalıdır. Daha fazla bilgi için bkz. CREATE MASTER KEY . Aşağıdaki örnek, veritabanı kapsamlı bir kimlik bilgisi oluşturur, kendi oturum açma bilgilerinizi ve parolanızı sağlar.
CREATE DATABASE SCOPED CREDENTIAL SQLServerCredentials
WITH IDENTITY = 'username', SECRET = 'password';
Aşağıdaki örnekte konak WINSQL2019
adı ve SQL2019
örnek adıdır.
'Server=%s\SQL2019'
anahtar değer çiftidir.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2019',
CONNECTION_OPTIONS = 'Server=%s\SQL2019',
CREDENTIAL = SQLServerCredentials
);
Alternatif olarak, sql server varsayılan örneğine bağlanmak için bir bağlantı noktası kullanabilirsiniz.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2019:58137',
CREDENTIAL = SQLServerCredentials
);
C. Always On kullanılabilirlik grubunun okunabilir ikincil çoğaltmasına başvurmak için dış veri kaynağı oluşturma
Şunlar için geçerlidir: SQL Server 2019 (15.x) ve sonraki sürümleri.
SQL Server'ın okunabilir ikincil çoğaltmasına başvuran bir dış veri kaynağı oluşturmak için öğesini CONNECTION_OPTIONS
kullanarak belirtin ApplicationIntent=ReadOnly
. Buna ek olarak, kullanılabilirlik veritabanını içinde Database={dbname}
olarak CONNECTION_OPTIONS
ayarlamanız veya kullanılabilirlik veritabanını, veritabanı kapsamlı kimlik bilgileri için kullanılan oturum açma bilgilerinin varsayılan veritabanı olarak ayarlamanız gerekir. Bunu kullanılabilirlik grubunun tüm kullanılabilirlik çoğaltmalarında yapmanız gerekir.
İlk olarak, SQL kimliği doğrulanmış oturum açma bilgileri için kimlik bilgilerini depolayarak veritabanı kapsamlı kimlik bilgilerini oluşturun. PolyBase için SQL ODBC Bağlayıcısı yalnızca temel kimlik doğrulamasını destekler. Veritabanı kapsamlı bir kimlik bilgisi oluşturmadan önce, veritabanının kimlik bilgilerini korumak için bir ana anahtarı olmalıdır. Daha fazla bilgi için bkz. CREATE MASTER KEY . Aşağıdaki örnek, veritabanı kapsamlı bir kimlik bilgisi oluşturur, kendi oturum açma bilgilerinizi ve parolanızı sağlar.
CREATE DATABASE SCOPED CREDENTIAL SQLServerCredentials
WITH IDENTITY = 'username', SECRET = 'password';
Ardından yeni dış veri kaynağını oluşturun.
veritabanı kapsamlı kimlik bilgilerindeki Database=dbname
oturum açma bilgileri için kullanılabilirlik veritabanını varsayılan veritabanı olarak dahil CONNECTION_OPTIONS
etmeniz veya ayarlamanız fark etmeksizin, LOCATION parametresinde CREATE EXTERNAL TABLE deyiminde veritabanı adını üç parçalı bir adla sağlamanız gerekir. Örnek için bkz . EXTERNAL TABLE OLUŞTURMA.
Aşağıdaki örnekte kullanılabilirlik WINSQL2019AGL
grubu dinleyici adı ve dbname
CREATE EXTERNAL TABLE deyiminin hedefi olacak veritabanının adıdır.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2019AGL',
CONNECTION_OPTIONS = 'ApplicationIntent=ReadOnly; Database=dbname',
CREDENTIAL = SQLServerCredentials
);
Sistem görünümünde ApplicationIntent
bir dış tablo belirtip sys.servers
oluşturarak kullanılabilirlik grubunun yeniden yönlendirme davranışını gösterebilirsiniz. Aşağıdaki örnek betikte iki dış veri kaynağı oluşturulur ve her biri için bir dış tablo oluşturulur. Hangi sunucunun bağlantıya yanıt verdiğini test etmek için görünümleri kullanın. Benzer sonuçlar salt okunur yönlendirme özelliği aracılığıyla da elde edilebilir. Daha fazla bilgi için bkz. Always On kullanılabilirlik grubu için salt okunur yönlendirmeyi yapılandırma.
CREATE EXTERNAL DATA SOURCE [DataSource_SQLInstanceListener_ReadOnlyIntent]
WITH (
LOCATION = 'sqlserver://WINSQL2019AGL',
CONNECTION_OPTIONS = 'ApplicationIntent=ReadOnly; Database=dbname',
CREDENTIAL = [SQLServerCredentials]
);
GO
CREATE EXTERNAL DATA SOURCE [DataSource_SQLInstanceListener_ReadWriteIntent]
WITH (
LOCATION = 'sqlserver://WINSQL2019AGL',
CONNECTION_OPTIONS = 'ApplicationIntent=ReadWrite',
CREDENTIAL = [SQLServerCredentials]
);
GO
Kullanılabilirlik grubundaki veritabanının içinde, döndürülecek sys.servers
bir görünüm ve sorguya hangi çoğaltmanın yanıt verdiğini belirlemenize yardımcı olan yerel örneğin adını oluşturun. Daha fazla bilgi için bkz. sys.servers.
CREATE VIEW vw_sys_servers AS
SELECT [name]
FROM sys.servers
WHERE server_id = 0;
GO
Ardından kaynak örnekte bir dış tablo oluşturun:
CREATE EXTERNAL TABLE vw_sys_servers_ro
(
name SYSNAME NOT NULL
)
WITH (
DATA_SOURCE = [DataSource_SQLInstanceListener_ReadOnlyIntent],
LOCATION = N'dbname.dbo.vw_sys_servers'
);
GO
CREATE EXTERNAL TABLE vw_sys_servers_rw
(
name SYSNAME NOT NULL
)
WITH (
DATA_SOURCE = [DataSource_SQLInstanceListener_ReadWriteIntent],
LOCATION = N'dbname.dbo.vw_sys_servers'
);
GO
SELECT [name]
FROM dbo.vw_sys_servers_ro;
--should return secondary replica instance
SELECT [name]
FROM dbo.vw_sys_servers_rw;
--should return primary replica instance
GO
D. PolyBase aracılığıyla S3 uyumlu nesne depolama alanında bir parquet dosyasını sorgulamak için dış veri kaynağı oluşturma
Şunlar için geçerlidir: SQL Server 2022 (16.x) ve sonraki sürümleri.
Aşağıdaki örnek betik, SQL Server'daki kaynak kullanıcı veritabanında bir dış veri kaynağı s3_ds
oluşturur. Dış veri kaynağı, s3_dc
veritabanı kapsamlı kimlik bilgilerine başvurur.
CREATE DATABASE SCOPED CREDENTIAL s3_dc
WITH IDENTITY = 'S3 Access Key', -- for S3-compatible object storage the identity must always be S3 Access Key
SECRET = '<access_key_id>:<secret_key_id>'; -- provided by the S3-compatible object storage
GO
CREATE EXTERNAL DATA SOURCE s3_ds
WITH (
LOCATION = 's3://<ip_address>:<port>/',
CREDENTIAL = s3_dc
);
GO
yeni dış veri kaynağını sys.external_data_sourcesile doğrulayın.
SELECT *
FROM sys.external_data_sources;
Ardından aşağıdaki örnek, OPENROWSET sorgusu aracılığıyla S3 uyumlu nesne depolama alanında depolanan bir parquet dosyasını sorgulamak için T-SQL'in kullanılmasını gösterir. Daha fazla bilgi için bkz. PolyBase ile S3 uyumlu bir nesne depolama alanında parquet dosyasını sanallaştırma.
SELECT * FROM OPENROWSET (
BULK '/<bucket>/<parquet_folder>',
FORMAT = 'PARQUET',
DATA_SOURCE = 's3_ds'
) AS [cc];
E. PostgreSQL'e genel ODBC kullanarak dış veri kaynağı oluşturma
Önceki örneklerde olduğu gibi, önce bir veritabanı ana anahtarı ve veritabanı kapsamlı kimlik bilgileri oluşturun. Dış veri kaynağı için veritabanı kapsamlı kimlik bilgileri kullanılır. Bu örnekte, sunucuda PostgreSQL için genel bir ODBC veri sağlayıcısının yüklü olduğu da varsayılır.
Bu örnekte genel ODBC veri sağlayıcısı, varsayılan TCP 5432 bağlantı noktası kullanılarak PostgreSQL sunucusunun tam etki alanı adının olduğu POSTGRES1
aynı 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 tablo körü kullanın:
Eylem | İzin |
---|---|
Dosyadan veri okuma | Okumak |
Birden çok dosyadan ve alt klasörden veri okuma | Okuma ve Listeleme |
Dış Tablo Oluştur'u Seç Olarak Kullanma (CETAS) | Okuma, Oluşturma ve Yazma |
- Belirteç son kullanma tarihini seçin.
- SAS belirteci ve URL'si oluşturun.
- SAS belirtecini kopyalayın.
F. abs:// arabirimini kullanarak Azure Blob Depolama'daki verilere erişmek için dış veri kaynağı oluşturma
Şunlar için geçerlidir: SQL Server 2022 (16.x) ve sonraki sürümleri.
Azure Depolama Hesabı v2 için yeni bir ön ek abs
kullanın. Ön abs
ek, kullanarak SHARED ACCESS SIGNATURE
kimlik doğrulamasını destekler. Ön ek, abs
önceki sürümlerde wasb
kullanılan öğesinin yerini alır. HADOOP artık desteklenmiyor, artık kullanılmasına TYPE = BLOB_STORAGE
gerek yok.
Azure depolama hesabı anahtarı artık gerekli değildir; bunun yerine aşağıdaki örnekte görebileceğiniz gibi SAS Belirteci kullanılır:
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD= '<password>';
GO
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredentialv2
WITH
IDENTITY = 'SHARED ACCESS SIGNATURE', -- to use SAS the identity must be fixed as-is
SECRET = '<Blob_SAS_Token>';
GO
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
LOCATION = 'abs://<container>@<storage_account_name>.blob.core.windows.net/',
CREDENTIAL = AzureStorageCredentialv2
);
Azure Blob Depolama'da depolanan CSV dosyalarına erişme hakkında daha ayrıntılı bir örnek için bkz. PolyBase ile CSV dosyasını sanallaştırma.
G. Azure Data Lake 2. Nesil'deki verilere erişmek için dış veri kaynağı oluşturma
Şunlar için geçerlidir: SQL Server 2022 (16.x) ve sonraki sürümleri.
Önceki sürümlerde kullanılan yerine Azure Data Lake 2adls
. Nesil için yeni bir ön ek abfs
kullanın. Ön ek, adls
bu örnekte gösterildiği gibi kimlik doğrulama yöntemi olarak SAS belirtecini de destekler:
--Create a database scoped credential using SAS Token
CREATE DATABASE SCOPED CREDENTIAL datalakegen2
WITH
IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = '<DataLakeGen2_SAS_Token>';
GO
CREATE EXTERNAL DATA SOURCE data_lake_gen2_dfs
WITH (
LOCATION = 'adls://<container>@<storage_account>.dfs.core.windows.net',
CREDENTIAL = datalakegen2
);
Azure Data Lake 2. Nesil'de depolanan delta dosyalarına erişme hakkında daha ayrıntılı bir örnek için bkz. PolyBase ile delta tablosunu sanallaştırma.
Örnekler: Toplu İşlemler
Önemli
Bir dış veri kaynağını toplu işlemler için yapılandırırken URL'nin sonuna sondaki /
, dosya adı veya paylaşılan erişim imzası parametrelerini eklemeyin LOCATION
.
H. Azure Depolama'dan veri alma toplu işlemleri için dış veri kaynağı oluşturma
Şunlar için geçerlidir: SQL Server 2022 (16.x) ve sonraki sürümleri.
BULK INSERT veya OPENROWSET kullanarak toplu işlemler için aşağıdaki veri kaynağını kullanın. Kimlik bilgisi kimlik olarak ayarlanmalıdır SHARED ACCESS SIGNATURE
, SAS belirtecinde başta ?
yer almamalıdır, yüklenmesi gereken dosyada (örneğin srt=o&sp=r
) en az okuma iznine sahip olmalıdır ve süre sonu süresi geçerli olmalıdır (tüm tarihler UTC saatindedir). Paylaşılan erişim imzaları hakkında daha fazla bilgi için bkz. Paylaşılan Erişim İmzalarını (SAS) Kullanma.
CREATE DATABASE SCOPED CREDENTIAL AccessAzureInvoices
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
-- Remove ? from the beginning of the SAS token
SECRET = '<azure_shared_access_signature>';
CREATE EXTERNAL DATA SOURCE MyAzureInvoices
WITH (
LOCATION = 'abs://<container>@<storage_account_name>.blob.core.windows.net/',
CREDENTIAL = AccessAzureInvoices,
);
Ben. Başka bir SQL Server'a bağlanmak için TDS 8.0 kullanarak dış veri kaynağı oluşturma
Şunlar için geçerlidir: SQL Server 2025 (17.x) Önizleme ve sonraki sürümler.
SQL Server için en son Microsoft ODBC Sürücüsü 18'i kullanırken altında Encryption
seçeneğini kullanmanız CONNECTION_OPTIONS
gerekir ve TrustServerCertificate
ayrıca desteklenir. Belirtilmezse Encryption
, varsayılan davranış şeklindedir Encrypt=Yes;TrustServerCertificate=No;
ve bir sunucu sertifikasına ihtiyacınız vardır.
Bu örnekte SQL Kimlik Doğrulaması kullanılmıştır. Kimlik bilgilerini korumak için bir veritabanı ana anahtarına (DMK) ihtiyacınız vardır. Daha fazla bilgi için bkz. CREATE MASTER KEY . Aşağıdaki örnek, özel oturum açma bilgileri ve parola ile veritabanı kapsamlı bir kimlik bilgisi oluşturur.
CREATE DATABASE SCOPED CREDENTIAL SQLServerCredentials
WITH
IDENTITY = '<username>',
SECRET = '<password>';
Hedef sunucu adı WINSQL2022
, bağlantı noktası 58137
ve varsayılan bir örnektir. belirterek Encryption=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 = 'Encryption=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 Encryption
TrustServerCertificate
ayarlanmıştır.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2022:58137',
CONNECTION_OPTIONS = 'Encryption=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 = 'Encryption=no;'
CREDENTIAL = SQLServerCredentials
);
İlgili içerik
* SQL Veritabanı *
Genel Bakış: Azure SQL Veritabanı
için geçerlidir: Azure SQL Veritabanı
Elastik sorgular için bir dış veri kaynağı oluşturur. Dış veri kaynakları, bağlantı kurmak ve şu birincil kullanım örneklerini desteklemek için kullanılır:
- Veri sanallaştırma (önizleme)
- veya kullanarak
BULK INSERT
toplu yükleme işlemleriOPENROWSET
- Elastik sorguyla SQL Veritabanı kullanarak uzak SQL Veritabanı veya Azure Synapse örneklerini sorgulama
- Elastik sorgu kullanarak parçalı SQL Veritabanı sorgulama
Transact-SQL söz dizimi kuralları
Sözdizimi
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ [ , ] CREDENTIAL = <credential_name> ]
[ [ , ] TYPE = { BLOB_STORAGE | RDBMS | SHARD_MAP_MANAGER } ]
[ [ , ] DATABASE_NAME = '<database_name>' ]
[ [ , ] SHARD_MAP_NAME = '<shard_map_manager>' ] )
[ ; ]
Tartışmalar
data_source_name
Veri kaynağı için kullanıcı tanımlı adı belirtir. Ad, SQL Veritabanı'ndaki veritabanında benzersiz olmalıdır.
LOCATION = '<prefix>://<path[:p ort]>'
Bağlantı protokolunu ve dış veri kaynağının yolunu sağlar.
Dış Veri Kaynağı | Bağlayıcı konumu ön eki | Konum yolu | Kullanılabilirlik |
---|---|---|---|
Toplu İşlemler | https |
<storage_account>.blob.core.windows.net/<container> |
|
Elastik Sorgu (parça) | Gerekli değil | <shard_map_server_name>.database.windows.net |
|
Elastik Sorgu (uzak) | Gerekli değil | <remote_server_name>.database.windows.net |
|
EdgeHub | edgehub |
edgehub:// |
YalnızcaAzure SQL Edge'de kullanılabilir. EdgeHub, Azure SQL Edge örneğinde her zaman yereldir. Bu nedenle bir yol veya bağlantı noktası değeri belirtmeniz gerekmez. |
Kafka | kafka |
kafka://<kafka_bootstrap_server_name_ip>:<port_number> |
YalnızcaAzure SQL Edge'de kullanılabilir. |
Azure Depolama Hesabı (v2) | abs |
abs://<container_name>@<storage_account_name>.blob.core.windows.net/ veya abs://<storage_account_name>.blob.core.windows.net/
<container_name> |
|
Azure Data Lake Storage (İkinci Nesil) | adls |
adls://<container_name>@<storage_account_name>.dfs.core.windows.net/ veya adls://<storage_account_name>.dfs.core.windows.net/<container_name> |
Konum yolu:
-
<shard_map_server_name>
= Azure'da parça eşleme yöneticisini barındıran mantıksal sunucu adı.DATABASE_NAME
bağımsız değişkeni, parça eşlemesini barındırmak için kullanılan veritabanını sağlar veSHARD_MAP_NAME
parç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_NAME
belirtilir.
Konumu ayarlarken ek notlar ve yönergeler:
- Veritabanı Altyapısı, nesne oluşturulduğunda dış veri kaynağının varlığını doğrulamaz. Doğrulamak için dış veri kaynağını kullanarak bir dış tablo oluşturun.
CREDENTIAL = credential_name
Dış veri kaynağında kimlik doğrulaması için veritabanı kapsamlı bir kimlik bilgisi belirtir.
Kimlik bilgisi oluştururken ek notlar ve yönergeler:
- Azure Depolama'dan Azure SQL Veritabanı'na veri yüklemek için Paylaşılan Erişim İmzası (SAS belirteci) kullanın.
-
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. -
TYPE
=BLOB_STORAGE
olduğunda kimlik bilgisi kimlik olarak kullanılarakSHARED ACCESS SIGNATURE
oluşturulmalıdır. - WASB[s] bağlayıcısı aracılığıyla Azure Depolama'ya bağlanırken, kimlik doğrulaması paylaşılan erişim imzası (SAS) ile değil depolama hesabı anahtarıyla yapılmalıdır.
-
TYPE
=HADOOP
Kimlik bilgilerinin depolama hesabı anahtarı olarakSECRET
kullanılarak oluşturulması gerektiğinde. -
TYPE
=BLOB_STORAGE
yalnızca toplu işlemler için izin verilir; ileTYPE
=BLOB_STORAGE
bir dış veri kaynağı için dış tablolar oluşturamazsınız.
Paylaşılan erişim imzası oluşturmanın birden çok yolu vardır:
Azure portalı -><Your_Storage_Account> - Paylaşılan erişim imzası -> İzinleri yapılandırma ->> SAS ve bağlantı dizesi oluşturma bölümüne giderek SAS belirteci oluşturabilirsiniz. Daha fazla bilgi için bkz . Paylaşılan erişim imzası oluşturma.
Azure Depolama Gezgini ile SAS oluşturabilir ve yapılandırabilirsiniz.
Sas belirtecini PowerShell, Azure CLI, .NET ve REST API aracılığıyla program aracılığıyla oluşturabilirsiniz. Daha fazla bilgi için bkz . Paylaşılan erişim imzalarını (SAS) kullanarak Azure Depolama kaynaklarına sınırlı erişim verme.
SAS belirteci aşağıdaki gibi yapılandırılmalıdır:
- SAS belirteci oluşturulduğunda belirtecin başında bir soru işareti ('?') bulunur. GİzLİ olarak yapılandırıldığında baştakileri
?
hariç tutun. - Geçerli bir süre sonu dönemi kullanın (tüm tarihler UTC saatindedir).
- SAS belirteci oluşturulduğunda belirtecin başında bir soru işareti ('?') bulunur. GİzLİ olarak yapılandırıldığında baştakileri
Yüklenmesi gereken dosya üzerinde en azından okuma izni verin (örneğin
srt=o&sp=r
). Farklı kullanım örnekleri için birden çok paylaşılan erişim imzası oluşturulabilir. İzinler aşağıdaki gibi verilmelidir:Eylem İzin Dosyadan veri okuma Okumak Birden çok dosyadan ve alt klasörden veri okuma Okuma ve Listeleme Dış Tablo Oluştur'u Seç Olarak Kullanma (CETAS) Okuma, Oluşturma ve Yazma
ve CREDENTIAL
SHARED ACCESS SIGNATURE
TYPE
ile = kullanma BLOB_STORAGE
örneği için bkz. Toplu işlemleri yürütmek ve Azure Depolama'dan SQL Veritabanı'na veri almak için dış veri kaynağı oluşturma
Veritabanı kapsamlı kimlik bilgileri oluşturmak için bkz. CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL).
TÜR = * [ BLOB_STORAGE | RDBMS | SHARD_MAP_MANAGER ] *
Yapılandırılan dış veri kaynağının türünü belirtir. Bu parametre her zaman gerekli değildir ve yalnızca belirli dış veri kaynakları için sağlanmalıdır.
- SQL Veritabanı'ndan elastik sorgu kullanarak veritabanları arası sorgular için kullanın
RDBMS
. - Parçalı SQL Veritabanına bağlanırken dış veri kaynağı oluştururken kullanın
SHARD_MAP_MANAGER
. - Yalnızca
BLOB_STORAGE
ön ek ilehttps
kullanmak için kullanılır. veabd
ön ekleri içinadls
sağlamazTYPE
.
Önemli
Başka bir dış veri kaynağı kullanıyorsanız ayarlamayın TYPE
.
DATABASE_NAME = database_name
veya TYPE
olarak 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 = RDBMS
dış veri kaynağının nasıl oluşturulacağını gösteren bir örnek için bkz. RDBMS dış veri kaynağı oluşturma.
SHARD_MAP_NAME = shard_map_name
TYPE
Bağımsız değişken yalnızca parça eşlemesinin adını ayarlamak için ayarlandığında SHARD_MAP_MANAGER
kullanılır.
Parça eşleme yöneticisi dış veri kaynağı oluşturma bölümüne başvuran TYPE
nasıl oluşturulacağını = SHARD_MAP_MANAGER
gösteren bir örnek için
İzinler
CONTROL
Azure SQL Veritabanı'ndaki veritabanında izin gerektirir.
Kilitleme
Nesne üzerinde EXTERNAL DATA SOURCE
paylaşılan bir kilit alır.
Örnekler
A. Parça eşleme yöneticisi dış veri kaynağı oluşturma
bir öğesine başvurmak SHARD_MAP_MANAGER
üzere bir dış veri kaynağı oluşturmak için, SQL Veritabanı'nda parça eşleme yöneticisini barındıran SQL Veritabanı sunucu adını veya bir sanal makinedeki SQL Server veritabanını belirtin.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
CREATE DATABASE SCOPED CREDENTIAL ElasticDBQueryCred
WITH IDENTITY = '<username>',
SECRET = '<password>';
CREATE EXTERNAL DATA SOURCE MyElasticDBQueryDataSrc
WITH (
TYPE = SHARD_MAP_MANAGER,
LOCATION = '<server_name>.database.windows.net',
DATABASE_NAME = 'ElasticScaleStarterKit_ShardMapManagerDb',
CREDENTIAL = ElasticDBQueryCred,
SHARD_MAP_NAME = 'CustomerIDShardMap'
);
Adım adım öğretici için bkz. Parçalama (yatay bölümleme) için elastik sorgularla çalışmaya başlama.
B. RDBMS dış veri kaynağı oluşturma
RDBMS'ye başvurmak üzere bir dış veri kaynağı oluşturmak için, SQL Veritabanı'ndaki uzak veritabanının SQL Veritabanı sunucu adını belirtir.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
CREATE DATABASE SCOPED CREDENTIAL SQL_Credential
WITH IDENTITY = '<username>',
SECRET = '<password>';
CREATE EXTERNAL DATA SOURCE MyElasticDBQueryDataSrc
WITH (
TYPE = RDBMS,
LOCATION = '<server_name>.database.windows.net',
DATABASE_NAME = 'Customers',
CREDENTIAL = SQL_Credential
);
RDBMS ile ilgili adım adım öğretici için bkz. Veritabanları arası sorguları (dikey bölümleme) kullanmaya başlama.
Örnekler: Toplu işlemler
Önemli
Bir dış veri kaynağını toplu işlemler için yapılandırırken URL'nin /
sonuna sondaki LOCATION
, dosya adı veya paylaşılan erişim imzası parametrelerini eklemeyin.
C. Azure Depolama'dan veri alma toplu işlemleri için dış veri kaynağı oluşturma
BULK INSERT (Transact-SQL) veya OPENROWSET (Transact-SQL) kullanarak toplu işlemler için aşağıdaki veri kaynağını kullanın. Kimlik bilgisi kimlik olarak ayarlanmalıdır SHARED ACCESS SIGNATURE
, SAS belirtecinde başta ?
yer almamalıdır, yüklenmesi gereken dosyada (örneğin srt=o&sp=r
) en az okuma iznine sahip olmalıdır ve süre sonu süresi geçerli olmalıdır (tüm tarihler UTC saatindedir). Paylaşılan erişim imzaları hakkında daha fazla bilgi için bkz. Paylaşılan Erişim İmzalarını (SAS) Kullanma.
Yönetilen Kimlik kullanarak Azure Blob Depolama (ABS) için dış veri kaynağı oluşturma:
CREATE DATABASE SCOPED CREDENTIAL DSC_MI
WITH IDENTITY = 'Managed Identity'
--Create external data source pointing to the file path, and referencing database-scoped credential:
CREATE EXTERNAL DATA SOURCE PrivateABS
WITH (
LOCATION = 'abs://<container>@<storage_account_name>.blob.core.windows.net/'
,CREDENTIAL = [DSC_MI]);
Kullanıcı Kimliği kullanarak Azure Data Lake 2. Nesil (ADLS) için dış veri kaynağı oluşturma:
CREATE DATABASE SCOPED CREDENTIAL DSC_ADLS
WITH IDENTITY = 'User Identity'
--Create external data source pointing to the file path, and referencing database-scoped credential:
CREATE EXTERNAL DATA SOURCE PrivateADLS
WITH (
LOCATION = 'adls://<container>@<storage_account_name>.dfs.core.windows.net/'
,CREDENTIAL = [DSC_ADLS]);
Bu örneği kullanımda görmek için bkz . BULK INSERT.
Örnekler: Azure SQL Edge
Önemli
Azure SQL Edge için dış verileri yapılandırma hakkında bilgi için bkz. Azure SQL Edge'de veri akışı.
A. Kafka'ya başvurmak için dış veri kaynağı oluşturma
Şunlar için geçerlidir:YalnızcaAzure SQL Edge
Bu örnekte dış veri kaynağı, IP adresi xxx.xxx.xxx.xxx ve bağlantı noktası 1900'de dinleyen bir Kafka sunucusudur. Kafka dış veri kaynağı yalnızca veri akışı içindir ve koşul aşağı göndermeyi desteklemez.
-- Create an External Data Source for Kafka
CREATE EXTERNAL DATA SOURCE MyKafkaServer
WITH (LOCATION = 'kafka://xxx.xxx.xxx.xxx:1900');
B. EdgeHub'a başvurmak için dış veri kaynağı oluşturma
Şunlar için geçerlidir:YalnızcaAzure SQL Edge
Bu örnekte dış veri kaynağı, Azure SQL Edge ile aynı uç cihazda çalışan bir EdgeHub'dır. edgeHub dış veri kaynağı yalnızca veri akışı içindir ve koşul aşağı göndermeyi desteklemez.
-- Create an External Data Source for Kafka
CREATE EXTERNAL DATA SOURCE MyEdgeHub
WITH (LOCATION = 'edgehub://');
İlgili içerik
* Azure Synapse
Analiz *
Genel Bakış: Azure Synapse Analytics
için geçerlidir: Azure Synapse Analytics
Veri sanallaştırma için bir dış veri kaynağı oluşturur. Dış veri kaynakları, bağlantı kurmak ve dış veri kaynaklarından veri sanallaştırma ve veri yüklemenin birincil kullanım örneğini desteklemek için kullanılır. Daha fazla bilgi için bkz. Synapse SQL ile dış tabloları kullanma.
Önemli
Elastik sorguyla Azure SQL Veritabanı kullanarak Azure Synapse Analytics kaynağını sorgulamak üzere bir dış veri kaynağı oluşturmak için bkz. Azure SQL Veritabanı için EXTERNAL DATA SOURCE OLUŞTURMA.
Transact-SQL söz dizimi kuralları
Sözdizimi
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ [ , ] CREDENTIAL = <credential_name> ]
[ [ , ] TYPE = HADOOP ]
)
[ ; ]
Tartışmalar
data_source_name
Veri kaynağı için kullanıcı tanımlı adı belirtir. Ad, Azure Synapse Analytics'teki Azure SQL Veritabanı içinde benzersiz olmalıdır.
LOCATION = '<prefix>://<path>'
Bağlantı protokolunu ve dış veri kaynağının yolunu sağlar.
Dış Veri Kaynağı | Bağlayıcı konumu ön eki | Konum yolu |
---|---|---|
Data Lake Storage* 1. Nesil | adl |
<storage_account>.azuredatalake.net |
Data Lake Storage Gen 2 | abfs[s] |
<container>@<storage_account>.dfs.core.windows.net |
Azure Blob Saklama Alanı | wasbs |
<container>@<storage_account>.blob.core.windows.net |
Azure Blob Saklama Alanı | https |
<storage_account>.blob.core.windows.net/<container>/subfolders |
Data Lake Storage 1. Nesil | http[s] |
<storage_account>.azuredatalakestore.net/webhdfs/v1 |
Data Lake Storage Gen 2 | http[s] |
<storage_account>.dfs.core.windows.net/<container>/subfolders |
Data Lake Storage Gen 2 | wasb[s] |
<container>@<storage_account>.blob.core.windows.net |
* Microsoft Azure Data Lake Storage 1. Nesil sınırlı desteğe sahiptir, tüm yeni geliştirmeler için 2. Nesil önerilir.
Dış Veri Kaynağı | Bağlayıcı konumu ön eki | Ayrılmış SQL havuzları: PolyBase | Ayrılmış SQL havuzları: yerel* | Sunucusuz SQL havuzları |
---|---|---|---|---|
Data Lake Storage** 1. Nesil | adl |
Hayı | Hayı | Evet |
Data Lake Storage Gen 2 | abfs[s] |
Evet | Evet | Evet |
Azure Blob Saklama Alanı | wasbs |
Evet | Evet*** | Evet |
Azure Blob Saklama Alanı | https |
Hayı | Evet | Evet |
Data Lake Storage 1. Nesil | http[s] |
Hayı | Hayı | Evet |
Data Lake Storage Gen 2 | http[s] |
Evet | Evet | Evet |
Data Lake Storage Gen 2 | wasb[s] |
Evet | Evet | Evet |
* Azure Synapse Analytics'teki sunucusuz ve ayrılmış SQL havuzları, veri sanallaştırma için farklı kod temelleri kullanır. Sunucusuz SQL havuzları yerel bir veri sanallaştırma teknolojisini destekler. Ayrılmış SQL havuzları hem yerel hem de PolyBase veri sanallaştırmayı destekler. PolyBase veri sanallaştırması, EXTERNAL DATA SOURCE TYPE=HADOOP
ile oluşturulduğunda kullanılır.
** Microsoft Azure Data Lake Storage 1. Nesil sınırlı desteğe sahiptir. Tüm yeni geliştirmeler için 2. Nesil önerilir.
üzerinden wasbs
daha güvenli wasb
bağlayıcı önerilir. Yalnızca ayrılmış SQL havuzlarındaki yerel veri sanallaştırması (TYPE hadOOP'a eşit değildir) destekler wasb
.
Konum yolu:
-
<container>
= verileri tutan depolama hesabının kapsayıcısı. Kök kapsayıcılar salt okunur durumdadır, veriler kapsayıcıya geri yazılamaz. -
<storage_account>
= Azure kaynağının depolama hesabı adı.
Konumu ayarlarken ek notlar ve yönergeler:
- Varsayılan seçenek, Azure Data Lake Storage 2. Nesil'i sağlarken kullanmaktır
enable secure SSL connections
. Bu etkinleştirildiğinde güvenli bir TLS/SSL bağlantısı seçildiğinde kullanmanızabfss
gerekir, ancakabfss
gü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.https
tüm veri erişim yöntemlerinde kullanılamaz. -
wasbs
güvenli bir TLS bağlantısı kullanılarak veri gönderileceği için önerilir. - Hiyerarşik Ad Alanları, eski
wasb://
arabirimi kullanarak verilere erişirken Azure V2 Depolama Hesapları ile desteklenmez, ancak kullanmakwasbs://
Hiyerarşik Ad Alanlarını destekler.
CREDENTIAL = credential_name
Opsiyonel. Dış veri kaynağında kimlik doğrulaması için veritabanı kapsamlı kimlik bilgilerini belirtir. Kimlik bilgisi olmayan dış veri kaynağı, azure depolamadaki dosyalara erişmek için genel depolama hesabına erişebilir veya çağıranın Microsoft Entra kimliğini kullanabilir.
Kimlik bilgisi oluştururken ek notlar ve yönergeler:
- Azure Depolama veya Azure Data Lake Store (ADLS) 2. Nesil'den Azure Synapse Analytics'e veri yüklemek için bir Azure Depolama Anahtarı kullanın.
-
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 (Transact-SQL).
Sunucusuz SQL havuzunda, veritabanı kapsamlı kimlik bilgileri çalışma alanı yönetilen kimliği, hizmet asıl adı veya paylaşılan erişim imzası (SAS) belirteci belirtebilir. Microsoft Entra geçişi olarak da bilinen bir kullanıcı kimliği aracılığıyla erişim, genel kullanıma açık depolamaya anonim erişim olduğu gibi, veritabanı kapsamlı kimlik bilgisinde de mümkündür. Daha fazla bilgi için bkz . Desteklenen depolama yetkilendirme türleri.
Ayrılmış SQL havuzunda, veritabanı kapsamlı kimlik bilgileri paylaşılan erişim imzası (SAS) belirteci, depolama erişim anahtarı, hizmet sorumlusu, çalışma alanı yönetilen kimliği veya Microsoft Entra geçişi belirtebilir.
TÜR = HADOOP
İsteğe bağlı, önerilmez.
TYPE'i yalnızca ayrılmış SQL havuzlarıyla belirtebilirsiniz.
HADOOP
belirtildiğinde izin verilen tek değerdir. ile TYPE=HADOOP
dış veri kaynakları yalnızca ayrılmış SQL havuzlarında kullanılabilir.
Eski uygulamalar için HADOOP kullanın, aksi takdirde daha yeni yerel veri erişimini kullanmanız önerilir. Daha yeni yerel veri erişimini kullanmak için TÜR bağımsız değişkenini belirtmeyin.
Azure Depolama'dan veri yüklemek için kullanma TYPE = HADOOP
örneği için bkz. Hizmet sorumlusu kullanarak Azure Data Lake Store 1. Veya 2. Nesil'e başvurmak için dış veri kaynağı oluşturma.
Azure Synapse Analytics'teki sunucusuz ve ayrılmış SQL havuzları, veri sanallaştırma için farklı kod temelleri kullanır. Sunucusuz SQL havuzları yerel bir veri sanallaştırma teknolojisini destekler. Ayrılmış SQL havuzları hem yerel hem de PolyBase veri sanallaştırmayı destekler. PolyBase veri sanallaştırması, EXTERNAL DATA SOURCE TYPE=HADOOP
ile oluşturulduğunda kullanılır.
İzinler
Veritabanı üzerinde CONTROL
izni gereklidir.
Kilitleme
Nesne üzerinde EXTERNAL DATA SOURCE
paylaşılan bir kilit alır.
Güvenlik
Dış veri kaynaklarının çoğu, ara sunucu hesabı oluşturmak için veritabanı kapsamlı bir kimlik bilgisi kullanarak ara sunucu tabanlı kimlik doğrulamasını destekler.
Paylaşılan Erişim İmzası (SAS) anahtarları, Azure Data Lake Store 2. Nesil Depolama Hesaplarında kimlik doğrulaması için desteklenir. Paylaşılan Erişim İmzası kullanarak kimlik doğrulaması yapmak isteyen müşterilerin, gizli dizi olarak sas belirtecinin girilip girildiği IDENTITY = "Shared Access Signature"
veritabanı kapsamlı bir kimlik bilgisi oluşturması gerekir.
Burada veritabanı kapsamlı bir kimlik bilgisi IDENTITY = "Shared Access Signature"
oluşturursanız ve gizli dizi olarak bir depolama anahtarı değeri kullanırsanız aşağıdaki hata iletisini alırsınız:
'HdfsBridge::isDirExist - Unexpected error encountered checking whether directory exists or not: AbfsRestOperationException: Operation failed: "Server failed to authenticate the request. Please refer to the information in the www-authenticate header.", 401, HEAD, [Storage path URL]'
Örnekler
A. wasb:// arabirimini kullanarak Azure Depolama'daki verilere erişmek için dış veri kaynağı oluşturma
Bu örnekte dış veri kaynağı adlı logs
bir Azure Depolama hesabı V2'dir. Depolama kapsayıcısı olarak adlandırılır daily
. Azure Depolama dış veri kaynağı yalnızca veri aktarımı içindir. Koşul aşağı göndermeyi desteklemez. Arabirim aracılığıyla wasb://
verilere erişirken hiyerarşik ad alanları desteklenmez. veya wasb
aracılığıyla wasbs
Azure Depolama'ya bağlanırken kimlik doğrulaması, paylaşılan erişim imzası (SAS) ile değil depolama hesabı anahtarıyla yapılmalıdır.
Bu örnekte eski HADOOP Java tabanlı erişim yöntemi kullanılır. Aşağıdaki örnekte, Azure Depolama'da kimlik doğrulaması için veritabanı kapsamlı kimlik bilgilerinin nasıl oluşturulacağı gösterilmektedir. Veritabanı kimlik bilgisi gizli dizisinde Azure Depolama hesabı anahtarını belirtin. Azure depolamada kimlik doğrulaması sırasında kullanılmadığından veritabanı kapsamlı kimlik bilgileri kimliğindeki herhangi bir dizeyi belirtebilirsiniz.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
WITH IDENTITY = '<my_account>',
SECRET = '<azure_storage_account_key>';
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
LOCATION = 'wasbs://daily@logs.blob.core.windows.net/',
CREDENTIAL = AzureStorageCredential,
TYPE = HADOOP
);
B. Hizmet sorumlusu kullanarak Azure Data Lake Store 1. veya 2. Nesil'e başvurmak için dış veri kaynağı oluşturma
Azure Data Lake Store bağlantısı ADLS URI'nizi ve Microsoft Entra uygulamanızın hizmet sorumlusunu temel alabilir. Bu uygulamayı oluşturmaya yönelik belgeler , Microsoft Entra Id kullanılarak Data lake store kimlik doğrulaması bölümünde bulunabilir.
-- If you do not have a Master Key on your DW you will need to create one.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- These values come from your Microsoft Entra application used to authenticate to ADLS
CREATE DATABASE SCOPED CREDENTIAL ADLS_credential
WITH
-- IDENTITY = '<clientID>@<OAuth2.0TokenEndPoint>' ,
IDENTITY = '536540b4-4239-45fe-b9a3-629f97591c0c@https://login.microsoftonline.com/42f988bf-85f1-41af-91ab-2d2cd011da47/oauth2/token',
-- SECRET = '<KEY>'
SECRET = 'BjdIlmtKp4Fpyh9hIvr8HJlUida/seM5kQ3EpLAmeDI=';
-- For Gen 1 - Create an external data source
-- TYPE: HADOOP - PolyBase uses Hadoop APIs to access data in Azure Data Lake Storage.
-- LOCATION: Provide Data Lake Storage Gen 1 account name and URI
-- CREDENTIAL: Provide the credential created in the previous step
CREATE EXTERNAL DATA SOURCE AzureDataLakeStore
WITH (
LOCATION = 'adl://newyorktaxidataset.azuredatalakestore.net',
CREDENTIAL = ADLS_credential,
TYPE = HADOOP
);
-- 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
LOCATION = 'abfss://data@newyorktaxidataset.dfs.core.windows.net',
CREDENTIAL = ADLS_credential,
TYPE = HADOOP
);
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
Yönetilen Kimlik mekanizmasıyla Azure Data Lake Store 2. Nesil hesabına bağlanırken GİzLİ değerini 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)
- DIŞ TABLO OLUŞTUR (Transact-SQL)
- CREATE EXTERNAL TABLE AS SELECT (Azure Synapse Analytics)
- CREATE TABLE AS SELECT (Azure Synapse Analytics)
- sys.external_data_sources (Transact-SQL)
- Paylaşılan Erişim İmzalarını (SAS) Kullanma
* 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 PolyBase ile Veri sanallaştırma kullanılarak veri sanallaştırma ve veri yükü.
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'siNamenode
veya 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.defaultFS
bulunabilir. 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.
-
wasbs
gü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
Namenode
kümesininNamenode
sanal 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.
-
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.
TYPE = * [ HADOOP ] *
Yapılandırılan dış veri kaynağının türünü belirtir. Bu parametre her zaman gerekli değildir.
- Dış veri kaynağı Cloudera CDH, Hortonworks HDP veya Azure Depolama olduğunda HADOOP kullanın.
Azure Depolama'dan veri yüklemek için kullanma TYPE
= HADOOP
örneği için bkz. Hadoop'a başvurmak için dış veri kaynağı oluşturma.
RESOURCE_MANAGER_LOCATION = 'ResourceManager_URI[:p ort]'
SQL Server 2019'da (15.x), Bir Azure Depolama hesabı olan Cloudera CDH, Hortonworks HDP'ye bağlanmadığınız sürece RESOURCE_MANAGER_LOCATION belirtmeyin.
Yalnızca Cloudera CDH, Hortonworks HDP veya bir Azure Depolama hesabına bağlanırken bu isteğe bağlı değeri yapılandırın. Desteklenen Hadoop sürümlerinin tam listesi için bkz. PolyBase bağlantı yapılandırması (Transact-SQL).
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 İş Gönderimi (Cloudera 4.3) | 8021 |
Resource Manager İş Gönderimi (Windows'ta Hortonworks 2.0, Linux'ta Cloudera 5.x) | 8032 |
Resource Manager İş Gönderimi (Linux üzerinde Hortonworks 2.x, 3.0, Windows üzerinde Hortonworks 2.1-3) | 8050 |
Resource Manager İş Geçmişi | 10020 |
İzinler
CONTROL
Analiz Platformu Sistemi'ndeki (PDW) veritabanında izin gerektirir.
Uyarı
PDW'nin önceki sürümlerinde dış veri kaynağı için gerekli ALTER ANY EXTERNAL DATA SOURCE
izinleri oluşturun.
Kilitleme
Nesne üzerinde EXTERNAL DATA SOURCE
paylaşılan bir kilit alır.
Güvenlik
PolyBase, dış veri kaynaklarının çoğu için ara sunucu tabanlı kimlik doğrulamasını destekler. Proxy hesabını oluşturmak için veritabanı kapsamlı bir kimlik bilgisi oluşturun.
Türü HADOOP
olan bir SAS belirteci desteklenmiyor. Bunun yerine yalnızca depolama hesabı erişim anahtarı kullanıldığında tür = BLOB_STORAGE
ile desteklenir. Tür HADOOP
ve SAS kimlik bilgilerine sahip bir dış veri kaynağı oluşturma girişimi aşağıdaki hatayla başarısız oluyor:
Msg 105019, Level 16, State 1 - EXTERNAL TABLE access failed due to internal error: 'Java exception raised on call to HdfsBridge_Connect. Java exception message: Parameters provided to connect to the Azure storage account are not valid.: Error [Parameters provided to connect to the Azure storage account are not 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 (
LOCATION = 'hdfs://10.10.10.10:8050',
TYPE = HADOOP
);
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 (
LOCATION = 'hdfs://10.10.10.10:8020',
TYPE = HADOOP,
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 (
LOCATION = 'hdfs://10.10.10.10:8050',
CREDENTIAL = HadoopUser1,
TYPE = HADOOP,
RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);
D. wasb:// arabirimini kullanarak Azure Depolama'daki verilere erişmek için dış veri kaynağı oluşturma
Bu örnekte dış veri kaynağı adlı logs
bir Azure V2 Depolama hesabıdır. Depolama kapsayıcısı olarak adlandırılır daily
. Azure Depolama dış veri kaynağı yalnızca veri aktarımı içindir. Koşul aşağı göndermeyi desteklemez. Arabirim aracılığıyla wasb://
verilere erişirken hiyerarşik ad alanları desteklenmez. veya wasb
aracılığıyla wasbs
Azure Depolama'ya bağlanırken kimlik doğrulaması, paylaşılan erişim imzası (SAS) ile değil depolama hesabı anahtarıyla yapılmalıdır.
Bu örnekte, Azure depolamada kimlik doğrulaması için veritabanı kapsamlı kimlik bilgilerinin nasıl oluşturulacağı gösterilmektedir. Veritabanı kimlik bilgisi gizli dizisinde Azure depolama hesabı anahtarını belirtin. Azure depolamada kimlik doğrulaması sırasında kullanılmadığından veritabanı kapsamlı kimlik bilgileri kimliğindeki herhangi bir dizeyi belirtebilirsiniz.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
WITH IDENTITY = '<my_account>',
SECRET = '<azure_storage_account_key>';
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
LOCATION = 'wasbs://daily@logs.blob.core.windows.net/',
CREDENTIAL = AzureStorageCredential,
TYPE = HADOOP
);
İlgili içerik
* SQL Yönetilen Örneği *
Genel Bakış: Azure SQL Yönetilen Örneği
Şunlar için geçerlidir: Azure SQL Yönetilen Örneği
Azure SQL Yönetilen Örneği'nde bir dış veri kaynağı oluşturur. Tam bilgi için bkz. Azure SQL Yönetilen Örneği ile veri sanallaştırma.
Azure SQL Yönetilen Örneği'nde veri sanallaştırma, OPENROWSET veya CREATE EXTERNAL TABLE aracılığıyla çeşitli dosya biçimlerinde dış verilere erişim sağlar.
Transact-SQL söz dizimi kuralları
Sözdizimi
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ [ , ] CREDENTIAL = <credential_name> ]
)
[ ; ]
Tartışmalar
data_source_name
Veri kaynağı için kullanıcı tanımlı adı belirtir. Adın veritabanında benzersiz olması gerekir.
LOCATION = '<prefix>://<path[:p ort]>'
Bağlantı protokolunu ve dış veri kaynağının yolunu sağlar.
Dış Veri Kaynağı | Konum ön eki | Konum yolu |
---|---|---|
Azure Blob Saklama Alanı | abs |
abs://<container>@<storage_account>.blob.core.windows.net/<path>/<file_name> |
Azure Data Lake Service 2. Nesil | adls |
adls://<container>@<storage_account>.dfs.core.windows.net/<path>/<file_name> |
Veritabanı Altyapısı, nesne oluşturulduğunda dış veri kaynağının varlığını doğrulamaz. Doğrulamak için dış veri kaynağını kullanarak bir dış tablo oluşturun.
Bir dış veri kaynağını toplu işlemler için yapılandırırken URL'nin / sonuna sondaki LOCATION
, dosya adı veya paylaşılan erişim imzası parametrelerini eklemeyin.
CREDENTIAL = credential_name
Dış veri kaynağında kimlik doğrulaması için veritabanı kapsamlı bir kimlik bilgisi belirtir.
Kimlik bilgisi oluştururken ek notlar ve yönergeler:
- Azure Depolama'dan Azure SQL Yönetilen Örneği'ne veri yüklemek için Paylaşılan Erişim İmzası (SAS belirteci) kullanın.
-
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. - Bir kimlik bilgisi gerekiyorsa, kimlik bilgisi veya kimlik olarak oluşturulmalıdır
Managed Identity
SHARED ACCESS SIGNATURE
. Veritabanı kapsamlı kimlik bilgileri oluşturmak için bkz. CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL).
Veritabanı kapsamlı kimlik bilgileri için yönetilen hizmet kimliğini kullanmak için:
Belirtmek
WITH IDENTITY = 'Managed Identity'
Bu amaçla kullanılacaksa etkinleştirilmesi gereken Azure SQL Yönetilen Örneği'nin sistem tarafından atanan yönetilen hizmet kimliğini kullanın.
- Okuyucu Azure RBAC rolünü, gerekli Azure Blob Depolama kapsayıcılarına Azure SQL Yönetilen Örneğinin sistem tarafından atanan yönetilen hizmet kimliğine verin. Örneğin, Azure portalı aracılığıyla bkz. Azure portalını kullanarak Azure rolleri atama.
Veritabanı kapsamlı kimlik bilgileri için paylaşılan erişim imzası (SAS) oluşturmak için:
Belirtmek
WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = ...
Paylaşılan erişim imzası oluşturmanın birden çok yolu vardır:
- Azure portalı -><Your_Storage_Account> - Paylaşılan erişim imzası -> İzinleri yapılandırma ->> SAS ve bağlantı dizesi oluşturma bölümüne giderek SAS belirteci alabilirsiniz. Daha fazla bilgi için bkz . Paylaşılan erişim imzası oluşturma.
- Azure Depolama Gezgini ile SAS oluşturabilir ve yapılandırabilirsiniz.
- Sas belirtecini PowerShell, Azure CLI, .NET ve REST API aracılığıyla program aracılığıyla oluşturabilirsiniz. Daha fazla bilgi için bkz . Paylaşılan erişim imzalarını (SAS) kullanarak Azure Depolama kaynaklarına sınırlı erişim verme.
SAS belirteci aşağıdaki gibi yapılandırılmalıdır:
- SAS belirteci oluşturulduğunda belirtecin başında bir soru işareti ('?') bulunur. GİzLİ olarak yapılandırıldığında baştakileri
?
hariç tutun. - Geçerli bir süre sonu dönemi kullanın (tüm tarihler UTC saatindedir).
- SAS belirteci oluşturulduğunda belirtecin başında bir soru işareti ('?') bulunur. GİzLİ olarak yapılandırıldığında baştakileri
Yüklenmesi gereken dosya üzerinde en azından okuma izni verin (örneğin
srt=o&sp=r
). Farklı kullanım örnekleri için birden çok paylaşılan erişim imzası oluşturulabilir. İzinler aşağıdaki gibi verilmelidir:Eylem İzin Dosyadan veri okuma Okumak Birden çok dosyadan ve alt klasörden veri okuma Okuma ve Listeleme Dış Tablo Oluştur'u Seç Olarak Kullanma (CETAS) Okuma, Oluşturma ve Yazma
İzinler
CONTROL
Azure SQL Yönetilen Örneği'ndeki veritabanında izin gerektirir.
Kilitleme
Nesne üzerinde EXTERNAL DATA SOURCE
paylaşılan bir kilit alır.
Örnekler
Daha fazla örnek için bkz. Azure SQL Yönetilen Örneği ile veri sanallaştırma.
A. OPENROWSET veya dış tablo ile Azure SQL Yönetilen Örneği'nden dış verileri sorgulama
Daha fazla örnek için bkz . CREATE EXTERNAL DATA SOURCE (Transact-SQL) veya bkz. Azure SQL Yönetilen Örneği ile veri sanallaştırma.
Yoksa veritabanı ana anahtarını oluşturun.
-- Optional: Create MASTER KEY if it doesn't exist in the database: CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Strong Password>' GO
SAS 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 '?' GO
Kimlik 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