Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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
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:
Hiermee maakt u een databasereferentie in een gebruikersdatabase en geeft u beheerdersreferenties voor de
masterdatabase op.Hiermee maakt u een externe gegevensbron die verwijst naar de
masterdatabase en geeft u de referentie voor het databasebereik op.Hiermee wordt de
sp_set_firewall_ruleprocedure in demasterdatabase uitgevoerd. Voor desp_set_firewall_ruleprocedure zijn drie parameters vereist en moet de@nameparameter 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';