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).
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)
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk