sp_execute_remote (Azure SQL Database)

Týká se:Azure SQL Database

Spustí příkaz Transact-SQL (T-SQL) pro jednu vzdálenou službu Azure SQL Database nebo sadu databází, které slouží jako horizontální oddíly ve schématu horizontálního dělení.

Uložená procedura je součástí funkce elastického dotazu. Viz přehled elastických dotazů Azure SQL Database (Preview) a vytváření sestav napříč cloudovými databázemi se škálováním na více instancí (Preview).

Transact-SQL konvence syntaxe

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

Identifikuje externí zdroj dat, ve kterém se příkaz spouští. Viz VYTVOŘENÍ EXTERNÍHO ZDROJE DAT. Externí zdroj dat může být typu RDBMS nebo SHARD_MAP_MANAGER.

[ @stmt = ] stmt

Řetězec Unicode, který obsahuje příkaz Transact-SQL nebo dávku. @stmt musí být buď konstanta Unicode, nebo proměnná Unicode. Složitější výrazy Unicode, jako je zřetězení dvou řetězců pomocí operátoru +, nejsou povolené. Znakové konstanty nejsou povoleny. Pokud je zadaná konstanta Unicode, musí mít předponu znaku N. Například konstanta Unicode N'sp_who' je platná, ale znaková konstanta 'sp_who' není.

Velikost řetězce je omezená pouze dostupnou pamětí databázového serveru. Na 64bitových serverech je velikost řetězce omezená na 2 GB, maximální velikost nvarchar(max).

Poznámka:

@stmt mohou obsahovat parametry, které mají stejný formulář jako název proměnné, například: N'SELECT * FROM HumanResources.Employee WHERE EmployeeID = @IDParameter'.

Každý parametr zahrnutý v @stmt musí mít odpovídající položku v seznamu definic parametrů @params i v seznamu hodnot parametrů.

[ @params = ] N'@parameter_namedata_type [ ,... n ]'

Jeden řetězec, který obsahuje definice všech parametrů, které byly vloženy do @stmt. Řetězec musí být buď konstanta Unicode, nebo proměnná Unicode. Každá definice parametru se skládá z názvu parametru a datového typu. n je zástupný symbol označující další definice parametrů. Každý parametr zadaný v @stmt musí být definován v @params. Pokud příkaz Transact-SQL nebo dávka @stmt neobsahuje parametry, @params se nevyžaduje. Výchozí hodnota pro tento parametr je NULL.

[ @param1 = ] 'hodnota1'

Hodnota prvního parametru, který je definován v řetězci parametru. Hodnota může být konstanta Unicode nebo proměnná Unicode. Musí existovat hodnota parametru zadaná pro každý parametr zahrnutý v @stmt. Hodnoty nejsou vyžadovány, pokud příkaz Transact-SQL nebo dávka v @stmt nemá žádné parametry.

n

Zástupný symbol pro hodnoty dodatečných parametrů. Hodnoty mohou být pouze konstanty nebo proměnné. Hodnoty nemohou být složitější výrazy, jako jsou funkce nebo výrazy vytvořené pomocí operátorů.

Hodnoty návratového kódu

0 (úspěch) nebo nenulová (selhání).

Sada výsledků

Vrátí sadu výsledků z prvního příkazu T-SQL.

Povolení

Vyžaduje ALTER ANY EXTERNAL DATA SOURCE oprávnění.

Poznámky

sp_execute_remote parametry musí být zadány v určitém pořadí, jak je popsáno v části Syntaxe . Pokud jsou parametry zadány mimo pořadí, dojde k chybové zprávě.

sp_execute_remote má stejné chování jako EXECUTE v případě dávek a rozsah názvů. Příkaz T-SQL nebo dávka v parametru @stmt se nezkompiluje, dokud sp_execute_remote se příkaz nespustí.

sp_execute_remote přidá další sloupec do sady výsledků s názvem $ShardName , která obsahuje název vzdálené databáze, která vytvořila řádek.

sp_execute_remote lze použít podobným způsobem jako sp_executesql.

Examples

A. Základní příklad

Následující příklad vytvoří a spustí základní SELECT příkaz ve vzdálené databázi.

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

B. Příklad s více parametry

Tento příklad provádí následující akce:

  1. Vytvoří přihlašovací údaje s vymezeným oborem databáze v uživatelské databázi a určí přihlašovací údaje správce pro master databázi.

  2. Vytvoří externí zdroj dat odkazující na master databázi a zadá přihlašovací údaje s vymezeným oborem databáze.

  3. Provede proceduru sp_set_firewall_rulemaster v databázi. Tento sp_set_firewall_rule postup vyžaduje tři parametry a vyžaduje @name , aby parametr byl Unicode.

EXECUTE 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';