開始使用跨資料庫查詢 (垂直資料分割) (預覽)
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
連線 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 資料庫 定價。
下一步
- 如需彈性查詢的概觀,請參閱彈性查詢概觀。
- 如需垂直分割數據的語法和範例查詢,請參閱 查詢垂直分割的數據。
- 如需水平資料分割 (分區化) 教學課程,請參閱開始使用彈性查詢進行水平資料分割 (分區化)。
- 如需水準分割數據的語法和範例查詢,請參閱 查詢水準分割的數據。
- 如需在單一遠端 Azure SQL 資料庫 或一組資料庫上執行 Transact-SQL 語句的預存程式,請參閱sp_execute_remote,以作為水平數據分割配置中的分區。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應