Delen via


sp_execute_remote (uitvoeren op afstand in Azure SQL Database)

Van toepassing op:Azure SQL Database

Voert een Transact-SQL -instructie (T-SQL) uit op één externe Azure SQL Database of een set databases die als shards fungeren in een horizontaal partitioneringsschema.

De opgeslagen procedure maakt deel uit van de elastische queryfunctie. Zie overzicht van elastische query's van Azure SQL Database (preview) en rapportage over uitgeschaalde clouddatabases (preview).a0>

Transact-SQL syntaxis-conventies

Syntaxis

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

Identificeert de externe gegevensbron waar de instructie wordt uitgevoerd. Zie CREATE EXTERNAL DATA SOURCE. De externe gegevensbron kan van het type RDBMS zijn of SHARD_MAP_MANAGER.

[ @stmt = ] stmt

Een Unicode-tekenreeks die een Transact-SQL instructie of batch bevat. @stmt moet een Unicode-constante of een Unicode-variabele zijn. Complexere Unicode-expressies, zoals het samenvoegen van twee tekenreeksen met de operator +, zijn niet toegestaan. Tekenconstanten zijn niet toegestaan. Als er een Unicode-constante is opgegeven, moet deze worden voorafgegaan door een N. De Unicode-constante N'sp_who' is bijvoorbeeld geldig, maar de tekenconstante 'sp_who' niet.

De grootte van de tekenreeks wordt alleen beperkt door het beschikbare geheugen van de databaseserver. Op 64-bits servers is de grootte van de tekenreeks beperkt tot 2 GB, de maximale grootte van nvarchar(max).

Opmerking

@stmt kan parameters bevatten met hetzelfde formulier als een variabelenaam, bijvoorbeeld: N'SELECT * FROM HumanResources.Employee WHERE EmployeeID = @IDParameter'.

Elke parameter die in @stmt is opgenomen, moet een overeenkomende vermelding bevatten in zowel de lijst met @params parameterdefinities als de lijst met parameterwaarden.

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

Eén tekenreeks die de definities bevat van alle parameters die zijn ingesloten in @stmt. De tekenreeks moet een Unicode-constante of een Unicode-variabele zijn. Elke parameterdefinitie bestaat uit een parameternaam en een gegevenstype. n is een tijdelijke aanduiding die meer parameterdefinities aangeeft. Elke parameter die is opgegeven in @stmt moet worden gedefinieerd in @params. Als de Transact-SQL-instructie of batch @stmt in geen parameters bevat, is @params niet vereist. De standaardwaarde voor deze parameter is NULL.

[ @param1 = ] 'waarde1'

Een waarde voor de eerste parameter die is gedefinieerd in de parametertekenreeks. De waarde kan een Unicode-constante of een Unicode-variabele zijn. Er moet een parameterwaarde zijn opgegeven voor elke parameter die is opgenomen in @stmt. De waarden zijn niet vereist wanneer de Transact-SQL instructie of batch in @stmt geen parameters heeft.

n

Een tijdelijke aanduiding voor de waarden van extra parameters. Waarden kunnen alleen constanten of variabelen zijn. Waarden kunnen geen complexere expressies zijn, zoals functies of expressies die zijn gebouwd met behulp van operators.

Codewaarden retourneren

0 (geslaagd) of niet-nul (fout).

Resultaatset

Retourneert de resultatenset van de eerste T-SQL-instructie.

Permissions

Hiervoor is toestemming vereist ALTER ANY EXTERNAL DATA SOURCE .

Opmerkingen

sp_execute_remote parameters moeten worden ingevoerd in de specifieke volgorde, zoals beschreven in de sectie Syntaxis . Als de parameters niet in de volgorde zijn ingevoerd, treedt er een foutbericht op.

sp_execute_remote heeft hetzelfde gedrag als EXECUTE met betrekking tot batches en het bereik van namen. De T-SQL-instructie of batch in de parameter @stmt wordt pas gecompileerd nadat de sp_execute_remote instructie is uitgevoerd.

sp_execute_remote voegt een extra kolom toe aan de resultatenset met de naam $ShardName van de externe database die de rij heeft geproduceerd.

sp_execute_remote kan op een vergelijkbare manier worden gebruikt als sp_executesql.

Voorbeelden

Eén. Basisvoorbeeld

In het volgende voorbeeld wordt een basisinstructie SELECT voor een externe database gemaakt en uitgevoerd.

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

B. Voorbeeld met meerdere parameters

In dit voorbeeld worden de volgende acties uitgevoerd:

  1. Hiermee maakt u een databasereferentie in een gebruikersdatabase en geeft u beheerdersreferenties voor de master database op.

  2. Hiermee maakt u een externe gegevensbron die verwijst naar de master database en geeft u de referentie voor het databasebereik op.

  3. Hiermee wordt de sp_set_firewall_rule procedure in de master database uitgevoerd. Voor de sp_set_firewall_rule procedure zijn drie parameters vereist en moet de @name parameter Unicode zijn.

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