Sdílet prostřednictvím


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

  1. Otevřete SQL Server Management Studio nebo SQL Server Data Tools v sadě Visual Studio.

  2. 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 a password 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.