Farklı şemalarla bulut veritabanları arasında sorgulama (önizleme)

Şunlar için geçerlidir:Azure SQL Veritabanı

Query across tables in different databases

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.

  1. ANA ANAHTAR OLUŞTURMA
  2. CREATE DATABASE SCOPED CREDENTIAL
  3. CREATE EXTERNAL DATA SOURCE
  4. 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ı

BI ve veri tümleştirme araçlarınızı esnek sorgunun etkinleştirildiği ve dış tabloların tanımlandığı sunucudaki veritabanlarına bağlamak için normal SQL Server bağlantı dizelerini kullanabilirsiniz. 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 uygulamalar

  • 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