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í.

Po dokončení se naučí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 dotazu elastické databáze najdete v přehledu dotazů elastické databáze Azure SQL Database.

Požadavky

Je vyžadováno 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 vytvořením dvou databází, zákazníků a objednávek, a to buď na stejných nebo různý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)

Nyní 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é se používá k šifrování přihlašovacích údajů připojení. Uživatelské jméno a heslo 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:

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)

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.

Další kroky