Začínáme s dotazy napříč databázemi (vertikální dělení) (Preview)
Platí pro:Azure SQL Database
Dotaz elastické databáze (Preview) pro Azure SQL Database umožňuje spouštět dotazy T-SQL, které zahrnují více databází pomocí jednoho spojovacího bodu. Tento článek se týká vertikálně dělených databází. V tomto článku se dozvíte, jak nakonfigurovat a používat Azure SQL Database k provádění dotazů, které zahrnují více souvisejících databází.
Další informace o funkci elastických dotazů databáze najdete v tématu Přehled elastických dotazů Azure SQL Database (Preview).
Požadavky
Vyžaduje se oprávnění ALTER ANY EXTERNAL DATA SOURCE. Toto oprávnění je součástí oprávnění ALTER DATABASE. K odkazování na podkladový zdroj dat jsou potřeba oprávnění ALTER ANY EXTERNAL DATA SOURCE.
Vytvoření ukázkových databází
Začněte tak, že vytvoříte dvě databáze, Customers
a Orders
, a to buď na stejných nebo různých logických serverech.
Spuštěním následujících dotazů v databázi Orders
vytvořte tabulku OrderInformation
a zadejte ukázková data.
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)
Teď spusťte následující dotaz na databázi Customers
a vytvořte tabulku CustomerInformation
a zadejte ukázková data.
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')
Vytváření databázových objektů
Hlavní klíč a přihlašovací údaje v oboru databáze
Otevřete SQL Server Management Studio nebo SQL Server Data Tools v sadě Visual Studio.
Připojte se k databázi Orders a spusťte následující příkazy T-SQL:
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<master_key_password>'; CREATE DATABASE SCOPED CREDENTIAL ElasticDBQueryCred WITH IDENTITY = '<username>', SECRET = '<password>';
-
master_key_password
je silné heslo, které jste zvolili k šifrování přihlašovacích údajů připojení. -
username
apassword
by měly být uživatelské jméno a heslo použité k přihlášení k databázi Customers (pokud ještě neexistuje, vytvořte nového uživatele v databázi Customers). - Ověřování pomocí Microsoft Entra ID (dříve Azure Active Directory) s elastickými dotazy se v současné době nepodporuje.
-
Externí zdroje dat
Pokud chcete vytvořit externí zdroj dat, spusťte v databázi Orders
následující příkaz, který se připojí k databázi Customers
. Zadejte logický server Azure SQL databáze Customers
v LOCATION
.
CREATE EXTERNAL DATA SOURCE MyElasticDBQueryDataSrc WITH
(TYPE = RDBMS,
LOCATION = '<server_name>.database.windows.net',
DATABASE_NAME = 'Customers',
CREDENTIAL = ElasticDBQueryCred
);
Externí tabulky
Vytvořte externí tabulku v databázi Orders
, která odpovídá definici tabulky CustomerInformation
:
CREATE EXTERNAL TABLE [dbo].[CustomerInformation]
( [CustomerID] [int] NOT NULL,
[CustomerName] [varchar](50) NOT NULL,
[Company] [varchar](50) NOT NULL)
WITH
( DATA_SOURCE = MyElasticDBQueryDataSrc)
Vzdálené dotazy
Pomocí uložené procedury sp_execute_remote spusťte příkaz Transact-SQL na jedné vzdálené databázi Azure SQL nebo sadě databází, které slouží jako horizontální fragmenty v rozdělovacím schématu. Následující vzdálený dotaz T-SQL vrátí data z externí tabulky OrderInformation
.
EXEC sp_execute_remote
N'MyElasticDBQueryDataSrc',
N'SELECT COUNT(CustomerID) AS customer_count FROM CustomerInformation';
Provedení ukázkového dotazu T-SQL elastické databáze
Po definování externího zdroje dat a externích tabulek teď můžete k dotazování externích tabulek použít T-SQL. Spusťte tento dotaz v databázi Orders
:
SELECT OrderInformation.CustomerID, OrderInformation.OrderId, CustomerInformation.CustomerName, CustomerInformation.Company
FROM OrderInformation
INNER JOIN CustomerInformation
ON CustomerInformation.CustomerID = OrderInformation.CustomerID;
Náklady
V současné době je funkce dotazu elastické databáze zahrnutá do nákladů na službu Azure SQL Database.
Informace o cenách najdete v tématu Sql Database – ceny.