共用方式為


sp_execute_remote (Azure SQL Database)

適用於: Azure SQL Database

在單一遠端 Azure SQL 資料庫或在水平資料分割配置中作為分區的一組資料庫上,執行 Transact-SQL (T-SQL) 陳述式。

預存程序是彈性查詢功能的一部分。 請參閱 Azure SQL 資料庫 彈性查詢概觀 (預覽版)跨向外延展雲端資料庫的報告 (預覽版)。

Transact-SQL 語法慣例

語法

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

引數

[ @data_source_name = ] data_source_name

識別執行陳述式的外部資料源。 另請參閱 CREATE 外部資料來源。 外部資料來源的類型可以是 RDBMSSHARD_MAP_MANAGER

[ @stmt = ] stmt

是一個 Unicode 字串,其中包含 Transact-SQL 陳述式或批次。 @stmt 必須是 Unicode 常數或 Unicode 變數。 不允許使用比較複雜的 Unicode 運算式,如用 + 運算子來串連兩個字串。 不允許字元常數。 如果指定 Unicode 常數,則必須前面加上 N。 例如,Unicode 常數 N'sp_who' 有效,但字元常數 'sp_who' 無效。

字串大小只受到可用資料庫伺服器記憶體的限制。 在 64 位元伺服器中,字串大小限制為 2 GB,大小上限是由 nvarchar(max) 設定。

注意

@stmt 可以包含與變數名稱格式相同的參數,例如:N'SELECT * FROM HumanResources.Employee WHERE EmployeeID = @IDParameter'

@params 參數定義清單和參數值清單中,@stmt 所包含的每個參數都必須有對應的項目。

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

是一個字串,其中包含內嵌在 @stmt 中的所有參數定義。字串必須是 Unicode 常數或 Unicode 變數。 每個參數定義都由參數名稱和資料類型組成。 n 是一個預留位置,表示其他參數定義。 @stmt 所指定的每個參數都必須在 @params 中定義。 如果 Transact-SQL 陳述式或 @stmt 中的批次不包含參數,則不需要 @params。 此參數的預設值為 NULL

[ @param1 = ] 'value1'

這是參數字串所定義的第一個參數的值。 這個值可以是 Unicode 常數或 Unicode 變數。 必須為 @stmt 所含的每個參數提供參數值。當 Transact-SQL 陳述式或 @stmt 中的批次沒有參數時,就不需要這些值。

n

這是其他參數值的預留位置。 這些值只能是常數或變數。 這些值不能是比較複雜的運算式,如函數或利用運算子來建立的運算式。

傳回碼值

0 (成功) 或非零 (失敗)

結果集

從第一個 T-SQL 陳述式傳回結果集。

權限

需要 ALTER ANY EXTERNAL DATA SOURCE 權限。

備註

sp_execute_remote 參數必須以特定順序輸入,如上面的語法一節所述。 如果未按順序輸入參數,就會出現錯誤訊息。

在批次和名稱範圍方面,sp_execute_remote 的行為與 EXECUTE 相同。 在執行陳述式之前 sp_execute_remote,不會編譯 @stmt 參數中的 T-SQL 陳述式或批次。

sp_execute_remote 會將額外的資料行新增到名稱為 $ShardName 的結果集,其中含有產生資料列的遠端資料庫名稱。

sp_execute_remote 可以用類似方式 sp_executesql

範例

A. 基本範例

下列範例會在遠端資料庫上建立和執行簡單的 SELECT 陳述式。

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

B. 使用多個參數的範例

此範例命令會執行下列動作:

  1. 在使用者資料庫中建立資料庫範圍認證,並指定 master 資料庫的系統管理員認證。

  2. 建立指向 master 資料庫並指定資料庫範圍認證的外部資料來源。

  3. 執行 master 資料庫中的程序 sp_set_firewall_rulesp_set_firewall_rule 程序需要三個參數,而且需要 @name 參數為 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';