sp_execute_remote (Azure SQL Database)

S’applique à : base de données Azure SQL

Exécute une instruction Transact-SQL (T-SQL) sur une seule base de données Azure SQL distante 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 élastiques de base de données Azure SQL (aperçu) et Les rapports sur les bases de données cloud mises à l'échelle (aperçu).

Conventions de la syntaxe Transact-SQL

Syntaxe

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

Arguments

[ @data_source_name = ] data_source_name

Identifie la source de données externe dans laquelle l'instruction est exécutée. Consultez CRÉER UNE SOURCE DE DONNÉES EXTERNES. La source de données externe peut être de type RDBMS ou SHARD_MAP_MANAGER.

[ @stmt = ] stmt

Une 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. Les constantes de caractères ne sont pas autorisées. Si une constante Unicode est spécifiée, elle doit être préfixée par 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).

Remarque

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

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

[ @params = ] N'@parameter_name data_type [ ,... n ]'

une 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 correspond à un espace réservé qui indique d'autres définitions de paramètres. Chaque paramètre spécifié dans @stmt doit être défini dans @params. Si l’instruction Transact-SQL ou le lot dans @stmt ne contient aucun paramètre, @params n’est pas nécessaire. La valeur par défaut de ce paramètre est NULL.

[ @param1 = ] 'value1'

Une valeur pour le premier paramètre qui est défini dans la chaîne de paramètres. Cette valeur peut être une constante ou une variable Unicode. Une valeur de paramètre doit être fournie pour chaque paramètre inclus dans @stmt. Les valeurs ne sont pas obligatoires lorsque l’instruction Transact-SQL ou le lot dans @stmt n’a aucun paramètre.

n

Un espace réservé destiné aux valeurs de paramètres supplémentaires. Ces valeurs doivent être des constantes ou des variables. Les valeurs ne peuvent pas être des expressions plus complexes telles que des fonctions ou des expressions construites à l'aide d'opérateurs.

Valeurs des codes de retour

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

Jeu de résultats

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

autorisations

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

Notes

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

sp_execute_remote a le même comportement que EXECUTE en ce qui concerne les lots et la portée des noms. L'instruction T-SQL ou le lot dans le paramètre @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_remote peut être utilisé de manière similaire à sp_executesql.

Exemples

R. Exemple de base

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

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

B. Exemple avec plusieurs paramètres

Cet exemple de commande effectue les actions suivantes :

  1. Créez des informations d’identification de base de données dans une base de données utilisateur, en spécifiant les informations d'identification d'administration pour la base de données master.

  2. Créez une source de données externe pointant vers la base de données master et spécifiant les informations d’identification de la base de données.

  3. Exécute la procédure sp_set_firewall_rule dans la base de données master. La procédure sp_set_firewall_rule requiert trois paramètres et exige que le paramètre @name 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';