sp_execute_remote (Banco de Dados SQL do Azure)
Aplica-se a: Banco de Dados SQL do Azure
Ele executa uma instrução Transact-SQL (T-SQL) em um único banco de dados SQL do Azure remoto ou em um conjunto de bancos de dados que funcionam como fragmentos em um esquema de particionamento horizontal.
O procedimento armazenado faz parte do recurso de consulta elástica. Consulte Visão geral da consulta elástica do Banco de Dados SQL do Azure (preview) e Relatórios em bancos de dados de nuvem expandidos (preview).
Convenções de sintaxe de Transact-SQL
Sintaxe
sp_execute_remote
[ @data_source_name = ] data_source_name
, [ @stmt = ] stmt
[
{ , [ @params = ] N'@parameter_name data_type [ , ...n ]' }
{ , [ @param1 = ] 'value1' [ , ...n ] }
]
[ ; ]
Argumentos
[ @data_source_name = ] data_source_name
Identifica a fonte de dados externa em que a instrução é executada. Confira CRIAR FONTE DE DADOS EXTERNA. A fonte de dados externa pode ser do tipo RDBMS
ou SHARD_MAP_MANAGER
.
[ @stmt= ] stmt
Uma sequência Unicode que contém uma ou instrução Transact-SQL ou lote. @stmt deve ser uma constante Unicode ou uma variável Unicode. Expressões Unicode mais complexas, como concatenação de duas sequências de caracteres com o operador +
não são permitidas. Constantes de caracteres não são permitidas. Se for especificada uma constante Unicode, ela deverá ser prefixada com um N
. Por exemplo, a constante Unicode N'sp_who'
é válida, mas a constante 'sp_who'
de caractere não é.
O tamanho da cadeia de caracteres é limitado apenas pela memória disponível do servidor de banco de dados. Em servidores de 64 bits, o tamanho da cadeia de caracteres é limitado a 2 GB, o tamanho de máximo de nvarchar(max).
Observação
@stmt pode conter parâmetros com o mesmo formato de um nome de variável, por exemplo: N'SELECT * FROM HumanResources.Employee WHERE EmployeeID = @IDParameter'
.
Cada parâmetro incluído em @stmt deve ter uma entrada correspondente na lista de definições de parâmetro @params e na lista de valores de parâmetro.
@params [ = ] N'@parameter_name data_type [ ,... n ]'
Uma sequência de caracteres que contém as definições de todos os parâmetros que foram inseridos no @stmt. A sequência de caracteres deve ser uma constante Unicode ou uma variável Unicode. Cada definição de parâmetro consiste em um nome de parâmetro e um tipo de dados. n é um espaço reservado que indica definições de parâmetro adicionais. Todo parâmetro especificado em @stmt deve estar definido em @params. Se a instrução Transact-SQL ou lote em @stmt não contiver parâmetros, @params não será necessário. O valor padrão para esse parâmetro é NULL
.
[ @param1 = ] 'value1'
Um valor para o primeiro parâmetro definido na sequência de caracteres do parâmetro. O valor pode ser uma constante Unicode ou uma variável Unicode. Deve haver um valor de parâmetro fornecido para cada parâmetro incluído no @stmt. Os valores não são necessários quando a instrução Transact-SQL ou o lote no @stmt não tem parâmetros.
n
Um espaço reservado para os valores de parâmetros adicionais. Os valores só podem ser constantes ou variáveis. Os valores não podem ser expressões mais complexas, como funções ou expressões criadas usando operadores.
Valores do código de retorno
0
(êxito) ou não zero (falha).
Conjunto de resultados
Retorna o conjunto de resultados da primeira instrução T-SQL.
Permissões
Requer a permissão ALTER ANY EXTERNAL DATA SOURCE
.
Comentários
Parâmetros de sp_execute_remote
devem ser inseridos na ordem específica, conforme descrito na seção Sintaxe acima. Se os parâmetros forem inseridos na ordem incorreta, será exibida uma mensagem de erro.
sp_execute_remote
tem o mesmo comportamento de EXECUTAR em relação aos lotes e ao escopo de nomes. A instrução T-SQL ou lote no parâmetro @stmt não será compilada até que a instrução sp_execute_remote
seja executada.
sp_execute_remote
adiciona uma coluna ao conjunto de resultados chamada $ShardName
, que contém o nome do banco de dados remoto que produziu a linha.
sp_execute_remote
pode ser usado de maneira semelhante ao sp_executesql.
Exemplos
R. Exemplo básico
O exemplo a seguir cria e executa uma instrução SELECT
básica em um banco de dados remoto.
EXEC sp_execute_remote
N'MyExtSrc',
N'SELECT COUNT(w_id) AS Count_id FROM warehouse';
B. Exemplo com vários parâmetros
Este exemplo executa as seguintes ações:
Ela cria uma credencial com escopo de banco de dados em um banco de dados de usuário, especificando as credenciais de administrador para o banco de dados
master
.Ela cria uma fonte de dados externa apontando para o banco de dados
master
e especificando a credencial com escopo de banco de dados.Ela executa o procedimento
sp_set_firewall_rule
no banco de dadosmaster
. O procedimentosp_set_firewall_rule
requer três parâmetros e requer que o parâmetro@name
seja Unicode.
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';