Приступая к работе с межбазовыми запросами (вертикальное секционирование) (предварительная версия)
Применимо к: База данных 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')
Создание объектов базы данных
Главный ключ и учетные данные для конкретной базы данных
Откройте SQL Server Management Studio или SQL Server Data Tools в Visual Studio.
Подключитесь к базе данных «Заказы» и выполните следующие команды 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.
Следующие шаги
- Общие сведения об эластичных запросах см. в разделе Обзор эластичных запросов к базе данных SQL Azure (предварительная версия).
- Синтаксис и примеры запросов для вертикально секционированных данных см. в разделе "Запросы по вертикали секционированных данных".
- Руководство по горизонтальному секционированию (сегментированию) см. в статье Отчеты по масштабируемым облачным базам данных (предварительная версия).
- Сведения о синтаксисе и примерах запросов для горизонтально секционированных данных см. в разделе "Запрос горизонтально секционированных данных".
- См. sp_execute_remote хранимой процедуры, которая выполняет инструкцию Transact-SQL в одном удаленном База данных SQL Azure или наборе баз данных, которые служат сегментами в горизонтальной схеме секционирования.