開始使用跨資料庫查詢 (垂直資料分割) (預覽)

適用於:Azure SQL Database

Azure SQL 資料庫 的彈性資料庫查詢(預覽版)可讓您使用單一連接點執行跨越多個資料庫的 T-SQL 查詢。 本文適用於 垂直分割的資料庫

完成時,您將:瞭解如何設定及使用 Azure SQL 資料庫 來執行跨越多個相關資料庫的查詢。

如需彈性資料庫查詢功能的詳細資訊,請參閱 Azure SQL 資料庫 彈性資料庫查詢概觀

必要條件

需要 ALTER ANY EXTERNAL DATA SOURCE 許可權。 這個權限包含在 ALTER DATABASE 權限中。 需有 ALTER ANY EXTERNAL DATA SOURCE 權限,才能參考基礎資料來源。

建立範例資料庫

若要從 開始,請在相同或不同的伺服器中建立兩個資料庫: CustomersOrders

Orders 資料庫上執行下列查詢,以建立 OrderInformation 數據表並輸入範例數據。

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)

現在,在 Customers 資料庫上執行下列查詢,以建立 CustomerInformation 數據表並輸入範例數據。

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')

建立資料庫物件

資料庫範圍的主要金鑰和認證

  1. 在 Visual Studio 中開啟 SQL Server Management Studio 或 SQL Server Data Tools

  2. 連線 Orders 資料庫並執行下列 T-SQL 命令:

    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<master_key_password>';
    CREATE DATABASE SCOPED CREDENTIAL ElasticDBQueryCred
    WITH IDENTITY = '<username>',
    SECRET = '<password>';  
    

    「master_key_password」是您選擇用來加密連線認證的強密碼。 “username” 和 “password” 應該是用來登入 Customers 資料庫的使用者名稱和密碼(如果客戶資料庫中還沒有使用者,請在 Customers 資料庫中建立新的使用者)。 目前不支援使用 Microsoft Entra ID(先前稱為 Azure Active Directory)搭配彈性查詢的驗證。

外部資料來源

若要建立外部數據源,請在 Orders 資料庫上執行下列命令:

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

外部資料表

在 Orders 資料庫上建立外部數據表,其符合 CustomerInformation 數據表的定義:

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

執行範例彈性資料庫 T-SQL 查詢

定義外部數據源和外部資料表之後,您現在可以使用 T-SQL 來查詢外部數據表。 在 Orders 資料庫上執行此查詢:

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

成本

目前,彈性資料庫查詢功能會包含在 Azure SQL 資料庫 的成本中。

如需定價資訊,請參閱 SQL 資料庫 定價

下一步