sp_execute_remote (Azure SQL Database)

Berlaku untuk:Azure SQL Database

Menjalankan pernyataan Transact-SQL pada satu Azure SQL Database jarak jauh atau sekumpulan database yang berfungsi sebagai pecahan dalam skema pemartisian horizontal.

Prosedur tersimpan adalah bagian dari fitur kueri elastis. Lihat Gambaran umum kueri database elastis Azure SQL Database dan kueri database Elastis untuk sharding (pemartisian horizontal).

Konvensi sintaks transact-SQL

Sintaks

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

Argumen

[ @data_source_name = ] datasourcename
Mengidentifikasi sumber data eksternal tempat pernyataan dijalankan. Lihat MEMBUAT SUMBER DATA EKSTERNAL (Transact-SQL). Sumber data eksternal dapat berjenis "RDBMS" atau "SHARD_MAP_MANAGER".

[ @stmt = ] Pernyataan
Adalah string Unicode yang berisi pernyataan atau batch Transact-SQL. @stmt harus berupa konstanta Unicode atau variabel Unicode. Ekspresi Unicode yang lebih kompleks, seperti menggabungkan dua string dengan operator + , tidak diizinkan. Konstanta karakter tidak diperbolehkan. Jika konstanta Unicode ditentukan, konstanta tersebut harus diawali dengan N. Misalnya, konstanta Unicode N'sp_who' valid, tetapi konstanta karakter 'sp_who' tidak. Ukuran string hanya dibatasi oleh memori server database yang tersedia. Pada server 64-bit, ukuran string dibatasi hingga 2 GB, ukuran maksimum nvarchar(maks).

Catatan

@stmt dapat berisi parameter yang memiliki formulir yang sama dengan nama variabel, misalnya: N'SELECT * FROM HumanResources.Employee WHERE EmployeeID = @IDParameter'

Setiap parameter yang disertakan dalam @stmt harus memiliki entri yang sesuai dalam daftar definisi parameter @params dan daftar nilai parameter.

[@params= ] N'@parameter_name**data_type [ ,... n ] '
Adalah salah satu string yang berisi definisi semua parameter yang telah disematkan dalam @stmt. String harus berupa konstanta Unicode atau variabel Unicode. Setiap definisi parameter terdiri dari nama parameter dan jenis data. n adalah tempat penampung yang menunjukkan definisi parameter tambahan. Setiap parameter yang ditentukan dalam @stmtmust ditentukan dalam @params. Jika pernyataan Transact-SQL atau batch di @stmt tidak berisi parameter, @params tidak diperlukan. Nilai default untuk parameter ini adalah NULL.

[ @param1 = ] 'value1'
Adalah nilai untuk parameter pertama yang ditentukan dalam string parameter. Nilainya bisa berupa konstanta Unicode atau variabel Unicode. Harus ada nilai parameter yang disediakan untuk setiap parameter yang disertakan dalam @stmt. Nilai tidak diperlukan ketika pernyataan Transact-SQL atau batch dalam @stmt tidak memiliki parameter.

n
Adalah tempat penampung untuk nilai parameter tambahan. Nilai hanya dapat berupa konstanta atau variabel. Nilai tidak boleh berupa ekspresi yang lebih kompleks seperti fungsi, atau ekspresi yang dibangun dengan menggunakan operator.

Mengembalikan Nilai Kode

0 (berhasil) atau bukan nol (kegagalan)

Tataan Hasil

Mengembalikan tataan hasil dari pernyataan SQL pertama.

Izin

Memerlukan ALTER ANY EXTERNAL DATA SOURCE izin.

Keterangan

sp_execute_remote parameter harus dimasukkan dalam urutan tertentu seperti yang dijelaskan di bagian sintaks di atas. Jika parameter dimasukkan di luar urutan, pesan kesalahan akan terjadi.

sp_execute_remote memiliki perilaku yang sama dengan EXECUTE (Transact-SQL) sehubungan dengan batch dan cakupan nama. Pernyataan Transact-SQL atau batch dalam parameter @stmt sp_execute_remote tidak dikompilasi sampai pernyataan sp_execute_remote dijalankan.

sp_execute_remote menambahkan kolom tambahan ke kumpulan hasil bernama '$ShardName' yang berisi nama database jarak jauh yang menghasilkan baris.

sp_execute_remote dapat digunakan mirip dengan sp_executesql (Transact-SQL).

Contoh

Contoh sederhana

Contoh berikut membuat dan menjalankan pernyataan SELECT sederhana pada database jarak jauh.

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

Contoh dengan beberapa parameter

Buat kredensial lingkup database dalam database pengguna, menentukan kredensial administrator untuk database master. Buat sumber data eksternal yang menunjuk ke database master dan tentukan kredensial cakupan database. Kemudian mengikuti, contoh dalam database pengguna, menjalankan sp_set_firewall_rule prosedur dalam database master. Prosedur ini sp_set_firewall_rule memerlukan 3 parameter, dan mengharuskan @name parameter menjadi 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';

Lihat Juga:

CREATE DATABASE SCOPED CREDENTIAL
BUAT SUMBER DATA EKSTERNAL (TRANSACT-SQL)