Farklı şemalarla bulut veritabanları arasında sorgulama (önizleme)
Şunlar için geçerlidir: Azure SQL Veritabanı
Dikey olarak bölümlenmiş veritabanları, farklı veritabanlarında farklı tablo kümeleri kullanır. Bu, şemanın farklı veritabanlarında farklı olduğu anlamına gelir. Örneğin, envantere yönelik tüm tablolar bir veritabanında, muhasebeyle ilgili tüm tablolar ise ikinci bir veritabanında yer alır.
Önkoşullar
- Kullanıcının TÜM HARİÇ VERİ KAYNAĞıNı DEĞIŞTIRME iznine sahip olması gerekir. Bu izin ALTER DATABASE iznine dahil edilir.
- ALTER ANY EXTERNAL DATA SOURCE permissions to refer to the underlying data source.
Genel bakış
Not
Yatay bölümlemenin aksine, bu DDL deyimleri elastik veritabanı istemci kitaplığı aracılığıyla parça eşlemesi ile veri katmanı tanımlamaya bağımlı değildir.
- ANA ANAHTAR OLUŞTURMA
- CREATE DATABASE SCOPED CREDENTIAL
- CREATE EXTERNAL DATA SOURCE
- DıŞ TABLO OLUŞTURMA
Veritabanı kapsamlı ana anahtar ve kimlik bilgileri oluşturma
Kimlik bilgileri, elastik sorgu tarafından uzak veritabanlarınıza bağlanmak için kullanılır.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'master_key_password';
CREATE DATABASE SCOPED CREDENTIAL [<credential_name>] WITH IDENTITY = '<username>',
SECRET = '<password>';
Not
öğesinin <username>
herhangi bir "@servername" soneki içermediğinden emin olun.
Dış veri kaynakları oluşturma
Söz dizimi:
<External_Data_Source> ::=
CREATE EXTERNAL DATA SOURCE <data_source_name> WITH
(TYPE = RDBMS,
LOCATION = '<fully_qualified_server_name>',
DATABASE_NAME = '<remote_database_name>',
CREDENTIAL = <credential_name>
) [;]
Önemli
TYPE parametresi RDBMS olarak ayarlanmalıdır.
Örnek
Aşağıdaki örnekte, dış veri kaynakları için CREATE deyiminin kullanımı gösterilmektedir.
CREATE EXTERNAL DATA SOURCE RemoteReferenceData
WITH
(
TYPE=RDBMS,
LOCATION='myserver.database.windows.net',
DATABASE_NAME='ReferenceData',
CREDENTIAL= SqlUser
);
Geçerli dış veri kaynaklarının listesini almak için:
select * from sys.external_data_sources;
Dış Tablolar
Söz dizimi:
CREATE EXTERNAL TABLE [ database_name . [ schema_name ] . | schema_name . ] table_name
( { <column_definition> } [ ,...n ])
{ WITH ( <rdbms_external_table_options> ) }
)[;]
<rdbms_external_table_options> ::=
DATA_SOURCE = <External_Data_Source>,
[ SCHEMA_NAME = N'nonescaped_schema_name',]
[ OBJECT_NAME = N'nonescaped_object_name',]
Örnek
CREATE EXTERNAL TABLE [dbo].[customer]
(
[c_id] int NOT NULL,
[c_firstname] nvarchar(256) NULL,
[c_lastname] nvarchar(256) NOT NULL,
[street] nvarchar(256) NOT NULL,
[city] nvarchar(256) NOT NULL,
[state] nvarchar(20) NULL
)
WITH
(
DATA_SOURCE = RemoteReferenceData
);
Aşağıdaki örnekte, geçerli veritabanından dış tabloların listesinin nasıl alın aldığı gösterilmektedir:
select * from sys.external_tables;
Açıklamalar
Elastik sorgu, RDBMS türündeki dış veri kaynaklarını kullanan dış tabloları tanımlamak için var olan dış tablo söz dizimini genişletir. Dikey bölümleme için dış tablo tanımı aşağıdaki yönleri kapsar:
- Şema: Dış tablo DDL, sorgularınızın kullanabileceği bir şema tanımlar. Dış tablo tanımınızda sağlanan şemanın, gerçek verilerin depolandığı uzak veritabanındaki tabloların şemasıyla eşleşmesi gerekir.
- Uzak veritabanı başvurusu: Dış tablo DDL bir dış veri kaynağına başvurur. Dış veri kaynağı, gerçek tablo verilerinin depolandığı uzak veritabanının sunucu adını ve veritabanı adını belirtir.
Önceki bölümde açıklandığı gibi bir dış veri kaynağı kullanıldığında, dış tablo oluşturma söz dizimi aşağıdaki gibidir:
DATA_SOURCE yan tümcesi, dış tablo için kullanılan dış veri kaynağını (dikey bölümlemedeki uzak veritabanı) tanımlar.
SCHEMA_NAME ve OBJECT_NAME yan tümceleri, dış tablo tanımının sırasıyla uzak veritabanındaki farklı bir şemadaki bir tabloya veya farklı ada sahip bir tabloya eşlenebilmesini sağlar. Bu eşleme, uzak veritabanınızdaki bir katalog görünümüne veya DMV'ye veya uzak tablo adının zaten yerel olarak alındığı başka bir duruma yönelik bir dış tablo tanımlamak istiyorsanız kullanışlıdır.
Aşağıdaki DDL deyimi, yerel katalogdan var olan bir dış tablo tanımını bırakır. Uzak veritabanını etkilemez.
DROP EXTERNAL TABLE [ [ schema_name ] . | schema_name. ] table_name[;]
CREATE/DROP EXTERNAL TABLE izinleri: ALTER ANY EXTERNAL DATA SOURCE izinleri, temel alınan veri kaynağına başvurmak için de gereken dış tablo DDL için gereklidir.
Güvenlik konuları
Dış tabloya erişimi olan kullanıcılar, dış veri kaynağı tanımında verilen kimlik bilgileri altında temel alınan uzak tablolara otomatik olarak erişim kazanır. Dış veri kaynağının kimlik bilgileri aracılığıyla ayrıcalıkların istenmeyen şekilde yükseltilmesini önlemek için dış tabloya erişimi dikkatle yönetin. Normal SQL izinleri, normal bir tablo gibi dış tabloya erişim vermek veya İPTAL ETMEK için kullanılabilir.
Örnek: Dikey olarak bölümlenmiş veritabanlarını sorgulama
Aşağıdaki sorgu, siparişler ve sipariş satırları için iki yerel tablo ile müşteriler için uzak tablo arasında üç yönlü birleştirme gerçekleştirir. Bu, elastik sorgu için başvuru verileri kullanım örneğine bir örnektir:
SELECT
c_id as customer,
c_lastname as customer_name,
count(*) as cnt_orderline,
max(ol_quantity) as max_quantity,
avg(ol_amount) as avg_amount,
min(ol_delivery_d) as min_deliv_date
FROM customer
JOIN orders
ON c_id = o_c_id
JOIN order_line
ON o_id = ol_o_id and o_c_id = ol_c_id
WHERE c_id = 100
Uzak T-SQL yürütmesi için saklı yordam: sp_execute_remote
Elastik sorgu ayrıca uzak veritabanına doğrudan erişim sağlayan bir saklı yordam da sunar. Saklı yordam sp_execute _remote olarak adlandırılır ve uzak veritabanında uzak saklı yordamları veya T-SQL kodunu yürütmek için kullanılabilir. Aşağıdaki parametreleri alır:
- Veri kaynağı adı (nvarchar): RDBMS türündeki dış veri kaynağının adı.
- Sorgu (nvarchar): Uzak veritabanında yürütülecek T-SQL sorgusu.
- Parametre bildirimi (nvarchar) - isteğe bağlı: Sorgu parametresinde kullanılan parametreler için veri türü tanımlarına sahip dize (sp_executesql gibi).
- Parametre değer listesi - isteğe bağlı: Parametre değerlerinin virgülle ayrılmış listesi (sp_executesql gibi).
sp_execute_remote, uzak veritabanında verilen T-SQL deyimini yürütmek için çağırma parametrelerinde sağlanan dış veri kaynağını kullanır. Uzak veritabanına bağlanmak için dış veri kaynağının kimlik bilgilerini kullanır.
Örnek:
EXEC sp_execute_remote
N'MyExtSrc',
N'select count(w_id) as foo from warehouse'
Araçlar için bağlantı
NORMAL SQL Server bağlantı dizesi kullanarak IŞ zekası ve veri tümleştirme araçlarınızı, elastik sorgunun etkinleştirildiği ve dış tabloların tanımlandığı sunucudaki veritabanlarına bağlayabilirsiniz. SQL Server'ın aracınız için bir veri kaynağı olarak desteklendiğinden emin olun. Ardından elastik sorgu veritabanına ve dış tablolarına, aracınızla bağlanacağınız diğer SQL Server veritabanları gibi bakın.
En iyi yöntemler
- Azure SQL Veritabanı güvenlik duvarı yapılandırmasında Azure Hizmetleri için erişimi etkinleştirerek elastik sorgu uç noktası veritabanına uzak veritabanına erişim verildiğinden emin olun. Ayrıca, dış veri kaynağı tanımında sağlanan kimlik bilgilerinin uzak veritabanında başarıyla oturum açaabildiğinden ve uzak tabloya erişim izinlerine sahip olduğundan emin olun.
- Elastik sorgu, hesaplamanın çoğunun uzak veritabanlarında yapılabildiği sorgular için en iyi sonucu sağlar. Genellikle uzak veritabanlarında veya uzak veritabanında tamamen gerçekleştirilebilecek birleşimlerde değerlendirilebilecek seçmeli filtre önkoşullarıyla en iyi sorgu performansını elde edersiniz. Diğer sorgu kalıplarının uzak veritabanından büyük miktarda veri yüklemesi gerekebilir ve kötü performans sergileyebilir.
Sonraki adımlar
- Elastik sorguya genel bakış için bkz . Elastik sorguya genel bakış.
- Elastik sorgu sınırlamaları için bkz . Önizleme sınırlamaları
- Dikey bölümleme öğreticisi için bkz . Veritabanları arası sorguyu (dikey bölümleme) kullanmaya başlama.
- Yatay bölümleme (parçalama) öğreticisi için bkz . Yatay bölümleme (parçalama) için elastik sorguyu kullanmaya başlama.
- Yatay olarak bölümlenmiş veriler için söz dizimi ve örnek sorgular için bkz . Yatay olarak bölümlenmiş verileri sorgulama)
- Yatay bölümleme düzeninde parça olarak hizmet veren tek bir uzak Azure SQL Veritabanı veya veritabanı kümesinde Transact-SQL deyimini yürüten bir saklı yordam için sp_execute _remote bakın.