sp_execute_remote (Azure SQL Database)sp_execute_remote (Azure SQL Database)

適用対象: XSQL Server ○Azure SQL Database XAzure SQL Data Warehouse XParallel Data Warehouse APPLIES TO: noSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

実行、Transact-SQLTransact-SQLのステートメントでは、リモートの Azure SQL Database は 1 つまたは一連のデータベースを水平方向のパーティション構成にシャードとして機能します。Executes a Transact-SQLTransact-SQL statement on a single remote Azure SQL Database or set of databases serving as shards in a horizontal partitioning scheme.

ストアド プロシージャには、エラスティック クエリ機能の一部です。The stored procedure is part of the elastic query feature. 参照してくださいAzure SQL Database エラスティック データベース クエリの概要(水平パーティション) シャーディングのエラスティック データベース クエリします。See Azure SQL Database elastic database query overview and Elastic database queries for sharding (horizontal partitioning).

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions


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


[ @data_source_name = ] datasourcename[ @data_source_name = ] datasourcename
ステートメントを実行する外部データ ソースを識別します。Identifies the external data source where the statement is executed. 参照してください外部データ ソースの作成 & #40 です。TRANSACT-SQL と #41 ですSee CREATE EXTERNAL DATA SOURCE (Transact-SQL). 外部データ ソースは、"RDBMS"または"SHARD_MAP_MANAGER"の型指定できます。The external data source can be of type "RDBMS" or "SHARD_MAP_MANAGER".

[ @stmt= ] statement[ @stmt= ] statement
含む Unicode 文字列には、 Transact-SQLTransact-SQL ステートメントまたはバッチです。Is a Unicode string that contains a Transact-SQLTransact-SQL statement or batch. @stmt は、Unicode 定数または Unicode 変数のいずれかである必要があります。@stmt must be either a Unicode constant or a Unicode variable. + 演算子で 2 つの文字列を連結するなどの複雑な Unicode 式は使用できません。More complex Unicode expressions, such as concatenating two strings with the + operator, are not allowed. 文字定数も使用できません。Character constants are not allowed. Unicode 定数が指定されている場合に付ける必要があります、 Nします。Unicode 定数などN 'sp_who' が有効で、文字定数 'sp_who' はありません。If a Unicode constant is specified, it must be prefixed with an N. For example, the Unicode constant N'sp_who' is valid, but the character constant 'sp_who' is not. 文字列のサイズは、データベース サーバーで利用可能なメモリにより制限されます。The size of the string is limited only by available database server memory. 64 ビット サーバーで、文字列のサイズが 2 GB の最大サイズに制限、 nvarchar (max) します。On 64-bit servers, the size of the string is limited to 2 GB, the maximum size of nvarchar(max).


@stmt には、たとえば、名前の変数と同じ形式を持つパラメーターを含めることができます。 N'SELECT * FROM HumanResources.Employee WHERE EmployeeID = @IDParameter'@stmt can contain parameters having the same form as a variable name, for example: N'SELECT * FROM HumanResources.Employee WHERE EmployeeID = @IDParameter'

含まれる各パラメーター @stmt では、両方に対応するエントリがあります、 @params パラメーター定義リストとパラメーター値の一覧。Each parameter included in @stmt must have a corresponding entry in both the @params parameter definition list and the parameter values list.

[ @params= ] N'@parameter_name**data_type [ ,... n ] '[ @params= ] N'@parameter_name**data_type [ ,... n ] '
1 つの文字列に埋め込まれたすべてのパラメーターの定義を含む@stmt します。この文字列は Unicode 定数または Unicode 変数にする必要があります。Is one string that contains the definitions of all parameters that have been embedded in @stmt. The string must be either a Unicode constant or a Unicode variable. 各パラメーター定義は、パラメーター名とデータ型で構成されます。Each parameter definition consists of a parameter name and a data type. nは追加のパラメーター定義を示すプレース ホルダーです。n is a placeholder that indicates additional parameter definitions. すべてのパラメーターで指定された@で定義されている stmtmust @params します。Every parameter specified in @stmtmust be defined in @params. 場合、Transact-SQLTransact-SQLステートメントまたはバッチに@stmt にパラメーターが含まれていない@params は必要ありません。If the Transact-SQLTransact-SQL statement or batch in @stmt does not contain parameters, @params is not required. このパラメーターの既定値は NULL です。The default value for this parameter is NULL.

[ @param1= ] 'value1'[ @param1= ] 'value1'
パラメーター文字列に定義する最初のパラメーターの値を指定します。Is a value for the first parameter that is defined in the parameter string. Unicode 定数または Unicode 変数を指定できます。The value can be a Unicode constant or a Unicode variable. 含まれるすべてのパラメーターに指定されたパラメーター値が必要がある@stmt します。ときに、値は必要ありません、Transact-SQLTransact-SQLステートメントまたはバッチに@stmt にパラメーターがありません。There must be a parameter value supplied for every parameter included in @stmt. The values are not required when the Transact-SQLTransact-SQL statement or batch in @stmt has no parameters.

追加するパラメーター値のプレースホルダーです。Is a placeholder for the values of additional parameters. 定数または変数のみを指定できます。Values can only be constants or variables. 関数などの複雑な式や演算子を使用した式は指定できません。Values cannot be more complex expressions such as functions, or expressions built by using operators.

リターン コードの値Return Code Values

0 (成功) または 0 以外 (失敗)0 (success) or non-zero (failure)

結果セットResult Sets

最初の SQL ステートメントの結果セットを返します。Returns the result set from the first SQL statement.




sp_execute_remote 上記の「構文」の説明に従って、特定の順序でパラメーターを入力する必要があります。sp_execute_remote parameters must be entered in the specific order as described in the syntax section above. パラメーターを不適切な順序で入力した場合、エラー メッセージが表示されます。If the parameters are entered out of order, an error message will occur.

sp_execute_remoteとして動作は同じEXECUTE (TRANSACT-SQL )に関してバッチおよび名前のスコープです。sp_execute_remote has the same behavior as EXECUTE (Transact-SQL) with regard to batches and the scope of names. TRANSACT-SQL ステートメントまたはバッチ、sp_execute_remote に @stmtパラメーターは、sp_execute_remote ステートメントが実行されるまでコンパイルされません。The Transact-SQL statement or batch in the sp_execute_remote @stmt parameter is not compiled until the sp_execute_remote statement is executed.

sp_execute_remote という名前の '$ShardName'、行を生成したリモート データベースの名前を含む結果セットに追加の列を追加します。sp_execute_remote adds an additional column to the result set named '$ShardName' that contains the name of the remote database that produced the row.

sp_execute_remote同様に使用できるsp_executesql & #40 です。TRANSACT-SQL と #41 ですsp_execute_remote can be used similar to sp_executesql (Transact-SQL).


簡単な例Simple example

次の例では、作成し、リモート データベースで単純な SELECT ステートメントを実行します。The following example creates and executes a simple SELECT statement on a remote database.

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

複数のパラメーターの例Example with multiple parameters

ユーザー データベース、master データベースの管理者の資格情報を指定することで、データベース スコープ資格情報を作成します。Create a database scoped credential in a user database, specifying administrator credentials for the master database. Master データベースをポイントし、データベース スコープ資格情報を指定する外部データ ソースを作成します。Create an external data source pointing to the master database and specifying the database scoped credential. 次の例で、ユーザー データベースを実行し、 sp_set_firewall_rule master データベース内のプロシージャです。Then following, example in the user database, executes the sp_set_firewall_rule procedure in the master database. sp_set_firewall_rule手順 3 つのパラメーターとが必要です、@nameパラメーターを Unicode になります。The sp_set_firewall_rule procedure requires 3 parameters, and requires the @name parameter to be 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 = '', @end_ip_address = '';

参照:See Also: