sp_execute_remote (база данных SQL Azure)
Применимо к: База данных SQL Azure
Выполняет инструкцию Transact-SQL (T-SQL) на одном удаленном База данных SQL Azure или наборе баз данных, которые служат сегментами в горизонтальной схеме секционирования.
Хранимая процедура является частью функции эластичного запроса. См. База данных SQL Azure обзор эластичных запросов (предварительная версия) и отчеты по масштабируемым облачным базам данных (предварительная версия).
Соглашения о синтаксисе Transact-SQL
Синтаксис
sp_execute_remote
[ @data_source_name = ] data_source_name
, [ @stmt = ] stmt
[
{ , [ @params = ] N'@parameter_name data_type [ , ...n ]' }
{ , [ @param1 = ] 'value1' [ , ...n ] }
]
[ ; ]
Аргументы
[ @data_source_name = ] data_source_name
Определяет внешний источник данных, в котором выполняется инструкция. См. раздел CREATE EXTERNAL DATA SOURCE. Внешний источник данных может быть типом RDBMS
или SHARD_MAP_MANAGER
.
[ @stmt = ] 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 — это заполнитель, указывающий больше определений параметров. Каждый параметр, указанный в @stmt, должен быть определен в @params. Если инструкция Transact-SQL или пакет не @stmt содержит параметров, @params не требуется. Значение параметра по умолчанию — NULL
.
[ @param1 = ] 'value1'
Значение первого параметра, определенного в строке параметров. Это значение может быть константой или переменной в Юникоде. Для каждого параметра, включенного в @stmt, необходимо указать значение параметра. Значения не требуются, если инструкция Transact-SQL или пакет в @stmt не имеет параметров.
n
Заполнитель для значений дополнительных параметров. Значения могут быть только константами и переменными. Значения не могут быть более сложными выражениями, такими как функции или выражения, созданные с помощью операторов.
Значения кода возврата
0
(успешно) или ненулевая (сбой).
Результирующий набор
Возвращает результирующий набор из первой инструкции T-SQL.
Разрешения
Требуется разрешение ALTER ANY EXTERNAL DATA SOURCE
.
Замечания
sp_execute_remote
параметры необходимо ввести в определенном порядке, как описано в разделе синтаксиса. Если параметры введены вне порядка, возникает сообщение об ошибке.
sp_execute_remote
имеет то же поведение, что и EXECUTE в отношении пакетов и области имен. Инструкция T-SQL или пакет в параметре @stmt не компилируется до sp_execute_remote
выполнения инструкции.
sp_execute_remote
добавляет дополнительный столбец в результирующий набор $ShardName
, содержащий имя удаленной базы данных, создающей строку.
sp_execute_remote
можно использовать аналогично sp_executesql.
Примеры
А. Простой пример
В следующем примере создается и выполняется базовая SELECT
инструкция в удаленной базе данных.
EXEC sp_execute_remote
N'MyExtSrc',
N'SELECT COUNT(w_id) AS Count_id FROM warehouse';
B. Пример с несколькими параметрами
В этом примере выполняются следующие действия:
Создает учетные данные в области базы данных в пользовательской базе данных, указывая учетные данные администратора для
master
базы данных.Создает внешний источник данных, указывающий на
master
базу данных и указывая учетные данные в области базы данных.Выполняет процедуру
sp_set_firewall_rule
master
в базе данных. Процедураsp_set_firewall_rule
требует трех параметров и требует@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';