sp_execute_remote (база данных SQL Azure)
Область применения:База данных SQL Azure
Выполняет инструкцию Transact-SQL в одной удаленной базе данных SQL Azure или наборе баз данных, которые служат сегментами в горизонтальной схеме секционирования.
Хранимая процедура является частью функции эластичного запроса. Обзор запросов эластичных баз данных базы данных SQL Azure и запросов эластичных баз данных для сегментирования (горизонтальное секционирование).
Соглашения о синтаксисе Transact-SQL
Синтаксис
sp_execute_remote [ @data_source_name = ] datasourcename
[ , @stmt = ] statement
[
{ , [ @params = ] N'@parameter_name data_type [,...n ]' }
{ , [ @param1 = ] 'value1' [ ,...n ] }
]
Аргументы
[ @data_source_name = ] имя источника данных
Определяет внешний источник данных, в котором выполняется инструкция. См. статью CREATE EXTERNAL DATA SOURCE (Transact-SQL) (Transact-SQL). Внешний источник данных может быть типом "RDBMS" или "SHARD_MAP_MANAGER".
[ @stmt= ] Заявление
Строка Юникода, содержащая инструкцию Transact-SQL или пакет. @stmt должен быть константой Юникода или переменной Юникода. Более сложные выражения Юникода, например объединение двух строк с помощью оператора +, недопустимы. Символьные константы недопустимы. Если указана константа Юникода, она должна быть префиксирована n. Например, допустима константа Юникода N'sp_who, но константа символа "sp_who" не является. Размер строки ограничивается только доступной серверу баз данных памятью. На 64-разрядных серверах размер строки ограничен 2 ГБ, максимальный размер nvarchar(max).
Заметка
@stmt может содержать параметры с той же формой, что и имя переменной, например: N'SELECT * FROM HumanResources.Employee WHERE EmployeeID = @IDParameter'
Каждый параметр, включенный в @stmt, должен иметь соответствующую запись как в списке определений @params параметров, так и в списке значений параметров.
[ @params= ] N'@parameter_name**data_type [ ,... n ] '
Одна строка, содержащая определения всех параметров, внедренных в @stmt. Строка должна быть либо константой Юникода, либо переменной Юникода. Определение каждого параметра состоит из имени параметра и типа данных. n — это заполнитель, указывающий дополнительные определения параметров. Каждый параметр, указанный в @stmtmust, определяется в @params. Если инструкция Transact-SQL или пакет в @stmt не содержит параметров, @params не требуется. Этот аргумент по умолчанию принимает значение NULL.
[ @param1= ] "value1"
Значение для первого параметра, определенного в строке параметров. Это значение может быть константой или переменной в Юникоде. Для каждого параметра, включенного в @stmt, необходимо указать значение параметра. Значения не требуются, если инструкция Transact-SQL или пакет в @stmt не имеет параметров.
n
Заполнитель для значений дополнительных параметров. Значения могут быть только константами и переменными. Значения не могут представлять собой сложные выражения, такие как функции или выражения, построенные с помощью операторов.
Значения кода возврата
0 (успешное завершение) или ненулевое значение (неуспешное завершение)
Результирующие наборы
Возвращает результирующий набор из первой инструкции SQL.
Разрешения
Требуется разрешение ALTER ANY EXTERNAL DATA SOURCE
.
Замечания
sp_execute_remote
параметры необходимо ввести в определенном порядке, как описано в приведенном выше разделе синтаксиса. Если параметры вводятся не в этом порядке, будет выдано сообщение об ошибке.
sp_execute_remote
имеет то же поведение, что и EXECUTE (Transact-SQL) в отношении пакетов и области имен. Инструкция Transact-SQL или пакет в параметре sp_execute_remote @stmt не компилируется до выполнения инструкции sp_execute_remote .
sp_execute_remote
добавляет дополнительный столбец в результирующий набор с именем "$ShardName", который содержит имя удаленной базы данных, создающей строку.
sp_execute_remote
можно использовать аналогично sp_executesql (Transact-SQL).
Примеры
Простой пример
В следующем примере создается и выполняется простая инструкция SELECT в удаленной базе данных.
EXEC sp_execute_remote
N'MyExtSrc',
N'SELECT COUNT(w_id) AS Count_id FROM warehouse'
Пример с несколькими параметрами
Создайте учетные данные в области базы данных в пользовательской базе данных, указав учетные данные администратора для базы данных master. Создайте внешний источник данных, указывающий на базу данных master и указав учетные данные в области базы данных. Затем в пользовательской базе данных выполните процедуру sp_set_firewall_rule
в базе данных master. Для sp_set_firewall_rule
процедуры требуется 3 параметра и требуется @name
, чтобы параметр был Юникодом.
EXEC sp_execute_remote @data_source_name = N'PointToMaster',
@stmt = N'sp_set_firewall_rule @name, @start_ip_address, @end_ip_address',
@params = N'@name nvarchar(128), @start_ip_address varchar(50), @end_ip_address varchar(50)',
@name = N'TempFWRule', @start_ip_address = '0.0.0.2', @end_ip_address = '0.0.0.2';
См. также:
CREATE DATABASE SCOPED CREDENTIAL
CREATE EXTERNAL DATA SOURCE (Transact-SQL)
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по