sp_execute_remote (database SQL di Azure)
Si applica a: Database SQL di Azure
Esegue un'istruzione Transact-SQL (T-SQL) su un singolo database SQL di Azure remoto o un set di database che fungono da partizioni in uno schema di partizionamento orizzontale.
La stored procedure fa parte della funzionalità di query elastica. Vedere Informazioni generali delle query elastiche del database SQL di Azure (anteprima) e Report tra database cloud scalabili (anteprima).
Convenzioni relative alla sintassi Transact-SQL
Sintassi
sp_execute_remote
[ @data_source_name = ] data_source_name
, [ @stmt = ] stmt
[
{ , [ @params = ] N'@parameter_name data_type [ , ...n ]' }
{ , [ @param1 = ] 'value1' [ , ...n ] }
]
[ ; ]
Argomenti
[ @data_source_name = ] data_source_name
Identifica l'origine dati esterna in cui viene eseguita l'istruzione. Vedere anche CREARE ORIGINE DATI ESTERNA. L'origine dati esterna può essere di tipo RDBMS
o SHARD_MAP_MANAGER
.
[ @stmt = ] stmt
Una stringa Unicode che contiene un'istruzione Transact-SQL o un batch. @stmt deve essere una costante Unicode o una variabile Unicode. Non sono consentite le espressioni Unicode più complesse, ad esempio per la concatenazione di due stringhe tramite l'operatore +
. Le costanti carattere non sono consentite. Se viene specificata una costante Unicode, deve essere preceduta da un prefisso N
. Ad esempio, la costante Unicode N'sp_who'
è valida, ma la costante carattere 'sp_who'
non lo è.
Le dimensioni massime della stringa dipendono dalla memoria disponibile nel server di database. Nei server a 64 bit, le dimensioni della stringa sono limitate a 2 GB, la dimensione massima di nvarchar(max).
Nota
@stmt può contenere parametri con lo stesso formato di un nome di variabile, ad esempio: N'SELECT * FROM HumanResources.Employee WHERE EmployeeID = @IDParameter'
.
Ogni parametro incluso in @stmt deve avere una voce corrispondente sia nell'elenco delle definizioni dei parametri @params che nell'elenco dei valori dei parametri.
[ @params = ] N'@parameter_name data_type [ ,... n ]'
Una stringa contenente le definizioni di tutti i parametri incorporati in @stmt. La stringa deve essere una costante Unicode o una variabile Unicode. Ogni definizione di parametro è costituita da un nome del parametro e da un tipo di dati. n è un segnaposto che indica più definizioni di parametro. Ogni parametro specificato in @stmt essere definito in @params. Se l'istruzione Transact-SQL o il batch in @stmt non contengono parametri, non è necessario @params. Il valore predefinito per questo parametro è NULL
.
[ @param1 = ] 'value1'
Un valore per il primo parametro definito nella stringa di parametri. Il valore può essere una costante o una variabile Unicode. È necessario specificare un valore di parametro per ogni parametro incluso in @stmt. I valori non sono necessari quando l'istruzione Transact-SQL o il batch in @stmt non dispone di parametri.
n
Un segnaposto per i valori di parametri extra. I valori possono essere solo costanti o variabili. Non sono consentite espressioni più complesse quali funzioni o espressioni compilate tramite operatori.
Valori del codice restituito
0
(esito positivo) o valore diverso da zero (esito negativo).
Set di risultati
Restituisce il set di risultati dalla prima istruzione T-SQL.
Autorizzazioni
È richiesta l'autorizzazione ALTER ANY EXTERNAL DATA SOURCE
.
Osservazioni:
I parametri sp_execute_remote
devono essere immessi nell'ordine specifico, come descritto nella sezione Sintassi. Se i parametri non vengono immessi in ordine, viene visualizzato un messaggio di errore.
sp_execute_remote
funziona in modo analogo a EXECUTE per quanto riguarda i batch, l'ambito dei nomi e il contesto del database. L'istruzione T-SQL o il batch nel parametro @stmt non viene compilato finché l'istruzione sp_execute_remote
non viene eseguita.
sp_execute_remote
aggiunge una colonna extra al set di risultati denominato $ShardName
contenente il nome del database remoto che ha generato la riga.
sp_execute_remote
può essere usato in modo simile a sp_executesql.
Esempi
R. Esempio di base
Nell'esempio seguente viene creata ed eseguita una semplice istruzione SELECT
in un database remoto.
EXEC sp_execute_remote
N'MyExtSrc',
N'SELECT COUNT(w_id) AS Count_id FROM warehouse';
B. Esempio con più parametri
Questo esempio esegue le azioni seguenti:
Crea credenziali con ambito database in un database utente, specificando le credenziali di amministratore per il database
master
.Crea un'origine dati esterna che punta al database
master
e specificare le credenziali con ambito database.Esegue la procedura
sp_set_firewall_rule
nel databasemaster
. La procedurasp_set_firewall_rule
richiede tre parametri e richiede che il parametro@name
sia 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';