開始使用跨資料庫查詢 (垂直資料分割) \(部分機器翻譯\)
適用於:Azure SQL 資料庫
Azure SQL 資料庫 的彈性資料庫查詢(預覽版)可讓您使用單一連接點執行跨越多個資料庫的 T-SQL 查詢。 本文適用於 垂直分割的資料庫。
完成時,您將:瞭解如何設定及使用 Azure SQL 資料庫 來執行跨越多個相關資料庫的查詢。
如需彈性資料庫查詢功能的詳細資訊,請參閱 Azure SQL 資料庫 彈性資料庫查詢概觀。
必要條件
要求 ALTER ANY EXTERNAL DATA SOURCE 權限。 這個權限包含在 ALTER DATABASE 權限中。 需有 ALTER ANY EXTERNAL DATA SOURCE 權限,才能參考基礎資料來源。
建立範例資料庫
若要從 開始,請在相同或不同的伺服器中建立兩個資料庫: Customers 和 Orders。
在 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')
建立資料庫物件
資料庫範圍的主要金鑰和認證
在 Visual Studio 中開啟 SQL Server Management Studio 或 SQL Server Data Tools。
連結至 ElasticDBQuery 資料庫,並執行下列 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)搭配彈性查詢的驗證。
外部資料來源
若要建立外部資料來源,請在 ElasticDBQuery 資料庫上執行下列命令:
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 Database 價格。
下一步
- 如需彈性查詢的概觀,請參閱彈性查詢概觀。
- 如需垂直資料分割之資料的語法和範例查詢,請參閱查詢垂直資料分割的資料。
- 如需水平資料分割 (分區化) 教學課程,請參閱開始使用彈性查詢進行水平資料分割 (分區化)。
- 如需水平資料分割之資料的語法和範例查詢,請參閱查詢水平資料分割的資料。
- 如需在單一遠端 Azure SQL Database,或水平資料分割配置中作為分區的資料庫集合上,執行 Transact-SQL 陳述式的預存程序,請參閱 sp_execute _remote。