Приступая к работе с межбазовыми запросами (вертикальное секционирование) (предварительная версия)
Применимо к: База данных SQL Azure
Запрос (предварительная версия) к эластичной базе данных для Базы данных Azure SQL позволяет выполнять запросы T-SQL, охватывающие несколько баз данных, с помощью одной точки подключения. Эта статья относится к вертикально секционированным базам данных. В этой статье описано, как настроить и использовать базу данных SQL Azure для выполнения запросов, охватывающих несколько связанных баз данных.
Дополнительные сведения о функции запроса эластичной базы данных см. в обзоре эластичных запросов базы данных SQL Azure (предварительная версия).
Необходимые компоненты
Требуется разрешение ALTER ANY EXTERNAL DATA SOURCE. Это разрешение включено в разрешение ALTER DATABASE. Для обращения к базовому источнику данных необходимы разрешения ALTER ANY EXTERNAL DATA SOURCE.
Создание образца базы данных
Для начала создайте две базы данных, Customers
и Orders
на одном или разных логических серверах.
Выполните следующие запросы в базе данных Orders
, чтобы создать таблицу 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)
Теперь выполните следующий запрос в базе данных Customers
, чтобы создать таблицу 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) с эластичными запросами в настоящее время не поддерживается.
-
Внешние источники данных
Чтобы создать внешний источник данных, выполните следующую команду в базе данных Orders
для подключения к базе данных Customers
. Укажите логический сервер базы данных SQL Azure Customers
в LOCATION
.
CREATE EXTERNAL DATA SOURCE MyElasticDBQueryDataSrc WITH
(TYPE = RDBMS,
LOCATION = '<server_name>.database.windows.net',
DATABASE_NAME = 'Customers',
CREDENTIAL = ElasticDBQueryCred
);
Внешние таблицы
Создайте внешнюю таблицу в базе данных Orders
, которая соответствует определению таблицы CustomerInformation
:
CREATE EXTERNAL TABLE [dbo].[CustomerInformation]
( [CustomerID] [int] NOT NULL,
[CustomerName] [varchar](50) NOT NULL,
[Company] [varchar](50) NOT NULL)
WITH
( DATA_SOURCE = MyElasticDBQueryDataSrc)
Удаленные запросы
Используйте хранимую процедуру sp_execute_remote для выполнения инструкции Transact-SQL в одной удаленной базе данных SQL Azure или наборе баз данных, которые служат сегментами в горизонтальной схеме секционирования. Следующий удаленный запрос T-SQL возвращает данные из внешней таблицы OrderInformation
.
EXEC sp_execute_remote
N'MyElasticDBQueryDataSrc',
N'SELECT COUNT(CustomerID) AS customer_count FROM CustomerInformation';
Выполнение запроса T-SQL к примеру эластичной базы данных
После определения внешнего источника данных и внешних таблиц теперь можно использовать T-SQL для запроса внешних таблиц. Выполните этот запрос в базе данных Orders
:
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