sp_execute_remote (database SQL di Azure)

Si applica a:database SQL di Azure

Esegue un'istruzione Transact-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 database SQL di Azure panoramica delle query di database elastici e Query del database elastico per il partizionamento orizzontale.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

sp_execute_remote [ @data_source_name = ] datasourcename  
[ , @stmt = ] statement  
[   
  { , [ @params = ] N'@parameter_name data_type [,...n ]' }   
     { , [ @param1 = ] 'value1' [ ,...n ] }  
]  

Argomenti

[ @data_source_name = ] datasourcename
Identifica l'origine dati esterna in cui viene eseguita l'istruzione. Vedi CREATE EXTERNAL DATA SOURCE (Transact-SQL) L'origine dati esterna può essere di tipo "RDBMS" o "SHARD_MAP_MANAGER".

[ @stmt= ] affermazione
Stringa Unicode che contiene un'istruzione Transact-SQL o un batch. @stmt deve essere una costante 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 di tipo carattere non sono consentite. Se viene specificata una costante Unicode, deve essere preceduta da un NUM. 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 ] '
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 definizioni di parametro aggiuntive. Ogni parametro specificato in @stmtmust 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'
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
Segnaposto per i valori di parametri aggiuntivi. 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 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 della sintassi precedente. Se i parametri non vengono immessi in ordine, verrà visualizzato un messaggio di errore.

sp_execute_remote funziona in modo analogo a EXECUTE (Transact-SQL) per quanto riguarda i batch, l'ambito dei nomi e il contesto del database. L'istruzione Transact-SQL o il batch nel parametro sp_execute_remote @stmt non viene compilato fino a quando non viene eseguita l'istruzione sp_execute_remote.

sp_execute_remote aggiunge una colonna aggiuntiva 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 (Transact-SQL).

Esempi

Esempio semplice

Nell'esempio seguente viene creata ed eseguita una semplice istruzione edizione Standard LECT in un database remoto.

EXEC sp_execute_remote  
    N'MyExtSrc',  
    N'SELECT COUNT(w_id) AS Count_id FROM warehouse'   

Esempio con più parametri

Creare credenziali con ambito database in un database utente, specificando le credenziali di amministratore per il database master. Creare un'origine dati esterna che punta al database master e specificare le credenziali con ambito database. Successivamente, ad esempio nel database utente, viene eseguita la procedura sp_set_firewall_rule nel database master. La procedura sp_set_firewall_rule richiede 3 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';

Vedere anche:

CREATE DATABASE SCOPED CREDENTIAL
CREATE EXTERNAL DATA SOURCE (Transact-SQL)