Aracılığıyla paylaş


Veritabanları arası sorguları kullanmaya başlama (dikey bölümleme) (önizleme)

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

Azure SQL Veritabanı için elastik veritabanı sorgusu (önizleme), tek bir bağlantı noktası kullanarak birden çok veritabanına yayılan T-SQL sorguları çalıştırmanızı sağlar. Bu makale, dikey olarak bölümlenmiş veritabanları için geçerlidir. Bu makalede, birden çok ilişkili veritabanına yayılan sorgular gerçekleştirmek için Azure SQL Veritabanı'nı yapılandırmayı ve kullanmayı öğrenin.

Elastik veritabanı sorgu özelliği hakkında daha fazla bilgi için bkz. Azure SQL Veritabanı elastik sorguya genel bakış (önizleme).

Önkoşullar

HERHANGİ BİR HARİCİ VERİ KAYNAĞINI DEĞİŞTİRME izni gereklidir. Bu izin ALTER DATABASE iznine dahil edilir. ALTER ANY EXTERNAL DATA SOURCE permissions to refer to the underlying data source.

Örnek veritabanları oluşturma

Başlangıç olarak, aynı veya farklı mantıksal sunucularda Customers ve Ordersolmak üzere iki veritabanı oluşturun.

Orders veritabanında aşağıdaki sorguları yürüterek OrderInformation tablosunu oluşturun ve örnek verileri girin.

CREATE TABLE [dbo].[OrderInformation](
    [OrderID] [int] NOT NULL,
    [CustomerID] [int] NOT NULL
    )
INSERT INTO [dbo].[OrderInformation] ([OrderID], [CustomerID]) VALUES (123, 1)
INSERT INTO [dbo].[OrderInformation] ([OrderID], [CustomerID]) VALUES (149, 2)
INSERT INTO [dbo].[OrderInformation] ([OrderID], [CustomerID]) VALUES (857, 2)
INSERT INTO [dbo].[OrderInformation] ([OrderID], [CustomerID]) VALUES (321, 1)
INSERT INTO [dbo].[OrderInformation] ([OrderID], [CustomerID]) VALUES (564, 8)

Şimdi Customers veritabanında aşağıdaki sorguyu yürüterek CustomerInformation tablosunu oluşturun ve örnek verileri girin.

CREATE TABLE [dbo].[CustomerInformation](
    [CustomerID] [int] NOT NULL,
    [CustomerName] [varchar](50) NULL,
    [Company] [varchar](50) NULL
    CONSTRAINT [CustID] PRIMARY KEY CLUSTERED ([CustomerID] ASC)
)
INSERT INTO [dbo].[CustomerInformation] ([CustomerID], [CustomerName], [Company]) VALUES (1, 'Jack', 'ABC')
INSERT INTO [dbo].[CustomerInformation] ([CustomerID], [CustomerName], [Company]) VALUES (2, 'Steve', 'XYZ')
INSERT INTO [dbo].[CustomerInformation] ([CustomerID], [CustomerName], [Company]) VALUES (3, 'Lylla', 'MNO')

Veritabanı nesneleri oluşturma

Veritabanı kapsamlı ana anahtar ve kimlik bilgileri

  1. Visual Studio'da SQL Server Management Studio'yu veya SQL Server Veri Araçları açın.

  2. Orders veritabanına bağlanın ve aşağıdaki T-SQL komutlarını yürütür:

    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<master_key_password>';
    CREATE DATABASE SCOPED CREDENTIAL ElasticDBQueryCred
    WITH IDENTITY = '<username>',
    SECRET = '<password>';  
    
    • master_key_password, seçtiğiniz bağlantı kimlik bilgilerini şifrelemek için kullandığınız güçlü bir paroladır.
    • username ve password, Müşteriler veritabanında oturum açmak için kullanılan kullanıcı adı ve parola olmalıdır (henüz yoksa Müşteriler veritabanında yeni bir kullanıcı oluşturun).
    • Elastik sorgularla Microsoft Entra Id (eski adıyla Azure Active Directory) kullanılarak kimlik doğrulaması şu anda desteklenmemektedir.

Dış veri kaynakları

Dış veri kaynağı oluşturmak için Orders veritabanında aşağıdaki komutu yürüterek Customers veritabanına bağlanın. LOCATION'deki Customers veritabanının Azure SQL mantıksal sunucusunu sağlayın.

CREATE EXTERNAL DATA SOURCE MyElasticDBQueryDataSrc WITH
    (TYPE = RDBMS,
    LOCATION = '<server_name>.database.windows.net',
    DATABASE_NAME = 'Customers',
    CREDENTIAL = ElasticDBQueryCred
);

Dış tablolar

Orders veritabanında CustomerInformation tablosunun tanımıyla eşleşen bir dış tablo oluşturun:

CREATE EXTERNAL TABLE [dbo].[CustomerInformation]
( [CustomerID] [int] NOT NULL,
    [CustomerName] [varchar](50) NOT NULL,
    [Company] [varchar](50) NOT NULL)
WITH
( DATA_SOURCE = MyElasticDBQueryDataSrc)

Uzaktan sorgular

Tek bir uzak Azure SQL Veritabanı veya yatay bölümleme düzeninde parça görevi gören veritabanları kümesinde Transact-SQL ifadesini yürütmek için sp_execute_remote saklı yordamını kullanın. Aşağıdaki uzak T-SQL sorgusu, dış OrderInformation tablosundaki verileri döndürür.

EXEC sp_execute_remote
    N'MyElasticDBQueryDataSrc',
    N'SELECT COUNT(CustomerID) AS customer_count FROM CustomerInformation';

Örnek elastik veritabanı T-SQL sorgusu yürütme

Dış veri kaynağınızı ve dış tablolarınızı tanımladıktan sonra, artık dış tablolarınızı sorgulamak için T-SQL kullanabilirsiniz. Bu sorguyu Orders veritabanında yürüt:

SELECT OrderInformation.CustomerID, OrderInformation.OrderId, CustomerInformation.CustomerName, CustomerInformation.Company
FROM OrderInformation
INNER JOIN CustomerInformation
ON CustomerInformation.CustomerID = OrderInformation.CustomerID;

Maliyet

Şu anda elastik veritabanı sorgu özelliği, Azure SQL Veritabanı maliyetine dahil edilir.

Fiyatlandırma bilgileri için bkz. fiyatlandırma SQL Veritabanı.