Приступая к работе с межбазовыми запросами (вертикальное секционирование) (предварительная версия)

Применимо к: База данных SQL Azure

Запрос (предварительная версия) к эластичной базе данных для Базы данных Azure SQL позволяет выполнять запросы T-SQL, охватывающие несколько баз данных, с помощью одной точки подключения. Эта статья относится к вертикально секционированным базам данных.

Будут представлены способы настройки и использования базы данных SQL Azure для выполнения запросов, охватывающих несколько связанных баз данных.

Дополнительные сведения о функции запросов к эластичной базе данных см. в этой статье.

Необходимые компоненты

Требуется разрешение ALTER ANY EXTERNAL DATA SOURCE. Это разрешение включено в разрешение ALTER DATABASE. Для обращения к базовому источнику данных необходимы разрешения ALTER ANY EXTERNAL DATA SOURCE.

Создание образца базы данных

Для начала создайте две базы данных, Клиенты и Заказы, на одном или на разных серверах.

Отправьте в базу данных Заказы указанные ниже запросы, чтобы создать таблицу 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)

Отправьте в базу данных Клиенты указанный ниже запрос, чтобы создать таблицу сведений о клиентах 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')

Создание объектов базы данных

Главный ключ и учетные данные для конкретной базы данных

  1. Откройте SQL Server Management Studio или SQL Server Data Tools в Visual Studio.

  2. Подключитесь к базе данных «Заказы» и выполните следующие команды 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 (прежнее название — Azure Active Directory) с эластичными запросами в настоящее время не поддерживается.

Внешние источники данных

Для создания внешнего источника данных выполните следующую команду в базе данных «Заказы».

CREATE EXTERNAL DATA SOURCE MyElasticDBQueryDataSrc WITH
    (TYPE = RDBMS,
    LOCATION = '<server_name>.database.windows.net',
    DATABASE_NAME = 'Customers',
    CREDENTIAL = ElasticDBQueryCred
) ;

Внешние таблицы

Создайте в базе данных «Заказы» внешнюю таблицу, соответствующую определению таблицы 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 для запроса внешних таблиц. Выполните следующий запрос в базе данных «Заказы»:

SELECT OrderInformation.CustomerID, OrderInformation.OrderId, CustomerInformation.CustomerName, CustomerInformation.Company
FROM OrderInformation
INNER JOIN CustomerInformation
ON CustomerInformation.CustomerID = OrderInformation.CustomerID

Себестоимость

В настоящее время функция запроса к эластичной базе данных включена в стоимость Базы данных SQL Azure.

Сведения о ценах см. на странице с ценами на Базу данных SQL.

Следующие шаги