Я работаю над проектом, предназначенным для запуска на платформе Azure с использованием базы данных Azure и локально с использованием локального сервера SQL.У нас есть хранимая процедура, которая содержит кросс-вызовы базы данных.Однако это не работает на сервере Azure. Мне нужны перекрестные запросы к базе данных, которые могут работать как на Azure, так и на локальном сервере SQL.
Мы используем Elastic Query, который позволяет нам выполнять запросы к базам данных SQL Azure
https://azure.microsoft.com/en-us/documentation/articles/sql-database-elastic-query-overview/
Мы можем настроить внешний источник данных на сервере Azure, используя следующий код.В этом случае мы можем выполнять кросс-вызовы базы данных, такие как объединение таблиц в одной базе данных.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'yourPassword';
CREATE DATABASE SCOPED CREDENTIAL yourServeradminlogin
WITH IDENTITY = 'yourServeradminlogin',
SECRET = 'yourPassword';
CREATE EXTERNAL DATA SOURCE RefmyDemoDB2
WITH
(
TYPE=RDBMS,
LOCATION='testdbdemoserver.database.windows.net',
DATABASE_NAME='myDemoDB2',
CREDENTIAL= yourServeradminlogin
);
CREATE EXTERNAL TABLE [dbo].[Department](
[DeptId] [int] NOT NULL,
[Name] [varchar](50) NULL
)
WITH
(
DATA_SOURCE = RefmyDemoDB2
);
Невозможно использовать вышеуказанный метод на нашем локальном сервере SQL без добавления стороннего механизма базы данных.Установите что-то под названием PolyBase для выполнения перекрестного запроса к базе данных на локальном сервере sql версии 2017 и выше. Он поддерживается только с внешним источником данных типа, таким как HADOOP, вместо ссылки на другую базу данных (или любое хранилище данных) на сервере sql.
Мы можем сделать это, используя следующий код
CREATE MASTER KEY ENCRYPTION BY PASSWORD='MyP@ssword123secretword';
CREATE DATABASE SCOPED CREDENTIAL mycredential
WITH IDENTITY = 'credential', Secret = 'secretkey'
CREATE EXTERNAL DATA SOURCE mycustomers
WITH (
TYPE = HADOOP,
LOCATION = 'wasbs://azurestorage.blob.core.windows.net/',
CREDENTIAL = mycredential
);
CREATE EXTERNAL FILE FORMAT csvformat
WITH (
FORMAT_TYPE = DELIMITEDTEXT,
FORMAT_OPTIONS (
FIELD_TERMINATOR = ','
)
);
CREATE EXTERNAL TABLE TableName
(
[did] [int] NOT NULL,
[Dname] [varchar] (50) NULL
)
WITH
(
LOCATION = '/',
DATA_SOURCE = mycustomers,
FILE_FORMAT = csvformat
)
Используя HADOOP и polybase, мы можем создать внешний источник данных на локальном сервере SQL.Но это создает внешний источник данных этого внешнего хранилища данных.Это таблица внешних данных, расположенная в этом внешнем хранилище. Точно, мое требование - создать внешний источник данных базы данных на сервере sql.Так что я могу использовать один и тот же запрос базы данных corss как на Azure, так и на локальном сервере SQL *
Есть ли какое-либо решение для решения этой проблемы.или какое-либо решение для выполнения кросс-запросов к базе данных как на Azure, так и на локальном сервере SQL?