sp_execute_remote (Azure SQL Database)

S’applique à :Azure SQL Database

Exécute une instruction Transact-SQL sur une base de données Azure SQL distante unique ou un ensemble de bases de données servant de partitions dans un schéma de partitionnement horizontal.

La procédure stockée fait partie de la fonctionnalité de requête élastique. Consultez la vue d’ensemble des requêtes de base de données élastique Azure SQL Database et les requêtes de base de données élastique pour le partitionnement (partitionnement horizontal).

Conventions de la syntaxe Transact-SQL

Syntaxe

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

Arguments

[ @data_source_name = ] datasourcename
Identifie la source de données externe où l’instruction est exécutée. Consultez CREATE EXTERNAL DATA SOURCE (Transact-SQL). La source de données externe peut être de type « SGBDR » ou « SHARD_MAP_MANAGER ».

[ @stmt= ] Déclaration
Chaîne Unicode qui contient une instruction Transact-SQL ou un lot. @stmt doit être une constante Unicode ou une variable Unicode. L'utilisation d'expressions Unicode plus complexes (comme la concaténation de deux chaînes avec l'opérateur +) n'est pas autorisée. L'utilisation de constantes de caractères n'est pas autorisée. Si une constante Unicode est spécifiée, elle doit être précédée d’un N. Par exemple, la constante Unicode N’sp_who' est valide, mais la constante de caractère 'sp_who' n’est pas. La taille de la chaîne n'est limitée que par la quantité de mémoire disponible sur le serveur de base de données. Sur les serveurs 64 bits, la taille de la chaîne est limitée à 2 Go, la taille maximale de nvarchar(max).

Note

@stmt peut contenir des paramètres ayant le même formulaire qu’un nom de variable, par exemple : N'SELECT * FROM HumanResources.Employee WHERE EmployeeID = @IDParameter'

Chaque paramètre inclus dans @stmt doit avoir une entrée correspondante dans la liste de définitions de paramètres @params et la liste des valeurs de paramètre.

[ @params= ] N'@parameter_name**data_type [ ,... n ] '
Chaîne qui contient les définitions de tous les paramètres incorporés dans @stmt. La chaîne doit être une constante Unicode ou une variable Unicode. Chaque définition de paramètre se compose d'un nom de paramètre et d'un type de données. n est un espace réservé qui indique des définitions de paramètres supplémentaires. Chaque paramètre spécifié dans @stmtmust être défini dans @params. Si l’instruction Transact-SQL ou le lot dans @stmt ne contient pas de paramètres, @params n’est pas obligatoire. La valeur par défaut de ce paramètre est NULL.

[ @param1= ] 'value1'
Valeur du premier paramètre qui est défini dans la chaîne de paramètres. Cette valeur peut être une constante ou une variable Unicode. Il doit y avoir une valeur de paramètre fournie pour chaque paramètre inclus dans @stmt. Les valeurs ne sont pas requises lorsque l’instruction Transact-SQL ou le lot dans @stmt n’a aucun paramètre.

n
Représente un espace réservé destiné aux valeurs de paramètres supplémentaires. Ces valeurs doivent être des constantes ou des variables. Leur degré de complexité ne doit pas dépasser celui d'expressions telles que les fonctions ou expressions créées à l'aide d'opérateurs.

Codet de retour

0 (réussite) ou autre que zéro (échec)

Jeux de résultats

Retourne le jeu de résultats de la première instruction SQL.

Autorisations

Nécessite l'autorisation ALTER ANY EXTERNAL DATA SOURCE.

Remarques

sp_execute_remote les paramètres doivent être entrés dans l’ordre spécifique, comme décrit dans la section de syntaxe ci-dessus. Si les paramètres sont entrés dans le désordre, un message d'erreur se produira.

sp_execute_remote a le même comportement que EXECUTE (Transact-SQL) en ce qui concerne les lots et l’étendue des noms. L’instruction Transact-SQL ou le lot dans le paramètre sp_execute_remote @stmt n’est pas compilé tant que l’instruction sp_execute_remote n’est pas exécutée.

sp_execute_remote ajoute une colonne supplémentaire au jeu de résultats nommé « $ShardName » qui contient le nom de la base de données distante qui a produit la ligne.

sp_execute_remotepeut être utilisé comme sp_executesql (Transact-SQL).

Examples

Exemple simple

L’exemple suivant crée et exécute une instruction SELECT simple sur une base de données distante.

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

Exemple avec plusieurs paramètres

Créez des informations d’identification délimitées à la base de données dans une base de données utilisateur, en spécifiant les informations d’identification de l’administrateur pour la base de données master. Créez une source de données externe pointant vers la base de données master et en spécifiant les informations d’identification délimitées à la base de données. Ensuite, exemple dans la base de données utilisateur, exécute la sp_set_firewall_rule procédure dans la base de données master. La sp_set_firewall_rule procédure nécessite 3 paramètres et nécessite que le @name paramètre soit 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';

Voir aussi :

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