Как сделать Azure SQL Exe c или выбрать другую таблицу / процедуру в другой Azure SQL - PullRequest
0 голосов
/ 17 февраля 2020

У меня есть два Azure SQL Сервера, каждый из которых содержит одну базу данных, мне нужно exe c Выбирает или сохраняет между ними процедуры.

Например:

Server1.database. windows. net DB: local1 Server2.database. windows. net DB: remote1

в Server1: Select * from Server2.remote1.dbo.Orders, и этот запрос возвращает список заказов.

на сервере2: Exec Server1.local1.dbo.ProcedureOrders, и это выполняет хранимую процедуру на сервере1

Прежде всего, возможно ли это? Если да, то как?

Ответы [ 2 ]

1 голос
/ 18 февраля 2020

Да, это возможно. Azure sql база данных не поддерживает связанный сервер, но, как @Alberto Morillo, упомянул, что Elasti c Query может помочь вам запрашивать и выполнять хранимую процедуру на другом SQL сервере.

Для запроса удаленной таблицы выполните следующие шаги:

  1. Создание главного ключа и учетных данных в области базы данных:

    CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'master_key_password'; CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = '<username>',<br> SECRET = '<password>' [;]

  2. Создание внешних источников данных:

    <External_Data_Source> ::= CREATE EXTERNAL DATA SOURCE <data_source_name> WITH (TYPE = RDBMS, LOCATION = ’<fully_qualified_server_name>’, DATABASE_NAME = ‘<remote_database_name>’,<br> CREDENTIAL = <credential_name> ) [;]

  3. Внешние таблицы:

    CREATE EXTERNAL TABLE [ database_name . [ schema_name ] . | schema_name . ] table_name<br> ( { <column_definition> } [ ,...n ])<br> { WITH ( <rdbms_external_table_options> ) } )[;]

    <rdbms_external_table_options> ::= DATA_SOURCE = <External_Data_Source>, [ SCHEMA_NAME = N'nonescaped_schema_name',] [ OBJECT_NAME = N'nonescaped_object_name',]

Для выполнения удаленной хранимой процедуры:

Elasti c запрос также представляет хранимую процедуру, которая обеспечивает прямой доступ к удаленной базе данных. Хранимая процедура называется sp_execute _remote и может использоваться для выполнения удаленных хранимых процедур или кода T- SQL в удаленной базе данных.

Пример:

EXEC sp_execute_remote
        N'MyExtSrc',
        N'select count(w_id) as foo from warehouse'

Для получения дополнительной информации, пожалуйста, укажите:

  1. Отчетность по масштабированным облачным базам данных (предварительный просмотр)
  2. Запрос к облачным базам данных с различными схемами (предварительный просмотр)

Надеюсь, это поможет.

0 голосов
/ 18 февраля 2020

Вы можете использовать elasti c запросов для запроса таблиц в разных базах данных на разных логических серверах и даже в тех случаях, когда они принадлежат разным подпискам. Вы можете найти и пример здесь .

Вы также можете выполнять транзакции между базами данных на разных логических серверах, как объявлено в этой статье .

...