全部产品
Search
文档中心

ApsaraDB RDS:Prosedur tersimpan

更新时间:Feb 04, 2026

Topik ini menjelaskan prosedur tersimpan yang didukung oleh ApsaraDB RDS for SQL Server 2012 dan versi lebih baru.

Catatan penggunaan

Perintah dalam topik ini dimaksudkan untuk dieksekusi di SQL Server Management Studio (SSMS). Perintah-perintah tersebut mencakup GO sebagai pemisah batch. Jika Anda berencana menjalankan perintah prosedur tersimpan di Data Management Service (DMS), jangan sertakan kata kunci GO. Jika tidak, akan terjadi kesalahan.

Perbarui statistik database

Perintah T-SQL

sp_rds_update_db_stats

Deskripsi

Memperbarui informasi statistik database secara fleksibel dan efisien. Anda dapat mengonfigurasi beberapa dimensi, seperti laju sampel, tingkat paralelisme, periode timeout, dan persentase ambang batas.

Penggunaan

-- Contoh berikut menunjukkan cara menggunakan beberapa parameter.
-- Perbarui informasi statistik untuk database test_db. Atur laju sampel menjadi 50%, tingkat paralelisme menjadi 4, periode timeout menjadi 7200 detik, dan ambang modifikasi menjadi 3.
EXEC sp_rds_update_db_stats        
    @db_name = 'test_db',          -- Nama database (wajib)
    @sample_percent = 50,          -- Laju sampel (opsional)
    @max_dop = 4,                  -- Tingkat paralelisme (opsional, tidak didukung untuk SQL Server 2012 dan sebelumnya)
    @timeout_seconds = 7200,       -- Periode timeout dalam detik (opsional)
    @modification_threshold = 3;   -- Ambang modifikasi (opsional)
Catatan

Jika Anda hanya memberikan parameter @db_name, atau jika versi database SQL Server adalah 2008, sistem akan menjalankan sp_updatestats secara default. Untuk informasi lebih lanjut, lihat dokumentasi resmi Microsoft.

Parameter

Wajib

Deskripsi

@db_name

Ya

Nama database tujuan yang ingin Anda perbarui informasi statistiknya. Contoh berikut menunjukkan cara menggunakan parameter ini:

-- Tetapkan hanya nama database untuk mengikuti logika pembaruan informasi statistik dari Microsoft sp_updatestats.
EXEC sp_rds_update_db_stats @db_name = 'test_db';

@sample_percent

Tidak

Persentase pengambilan sampel untuk informasi statistik. Tipe datanya adalah float. Nilainya berkisar antara [0, 100].

Jika Anda tidak menentukan parameter ini, laju sampel default sistem akan digunakan. Untuk informasi lebih lanjut, lihat dokumentasi resmi Microsoft. Contoh berikut menunjukkan cara menggunakan parameter ini:

-- Atur laju sampel menjadi 30%.
EXEC sp_rds_update_db_stats 
    @db_name = 'test_db',
    @sample_percent = 30;

@max_dop

Tidak

Tingkat paralelisme (DOP). Tipe datanya adalah int. Nilai defaultnya adalah 0, yang menunjukkan bahwa pengaturan default sistem digunakan. Nilai maksimum tidak boleh melebihi jumlah vCores dari tipe instans RDS. Parameter ini tidak didukung untuk SQL Server 2012 dan versi sebelumnya. Contoh berikut menunjukkan cara menggunakan parameter ini:

-- Atur tingkat paralelisme maksimum menjadi 4.
EXEC sp_rds_update_db_stats 
    @db_name = 'test_db',
    @max_dop = 4;

@timeout_seconds

Tidak

Periode timeout untuk operasi pembaruan informasi statistik, dalam detik. Nilai defaultnya adalah 3600 detik (1 jam). Contoh berikut menunjukkan cara menggunakan parameter ini:

-- Atur periode timeout menjadi 7200 detik (2 jam).
EXEC sp_rds_update_db_stats 
 @db_name = 'test_db',
 @timeout_seconds = 7200;

@modification_threshold

Tidak

Persentase ambang batas modifikasi untuk memperbarui informasi statistik. Tipe datanya adalah int. Nilai defaultnya adalah 0.

  • Kebijakan default (ketika nilainya 0): Kebijakan praktik terbaik yang direkomendasikan oleh Alibaba Cloud digunakan:

    • Jumlah baris tabel < 500: 30%

    • 500 ≤ Jumlah baris ≤ 1.000.000: 20%

    • Jumlah baris > 1.000.000: 5%

  • Pemberian parameter manual: Anda harus menghitung nilai tersebut terlebih dahulu. Nilainya berkisar antara [0, 100]. Rumusnya adalah: Nilai = Jumlah baris yang dimodifikasi × 100 / Total jumlah baris. Untuk memicu pembaruan informasi statistik, hasil perhitungan harus kurang dari atau sama dengan nilai yang ditentukan.

    -- Jika sebuah tabel memiliki 10.000 baris dan Anda ingin memicu pembaruan informasi statistik ketika 100 baris dimodifikasi, atur ambang batas menjadi 1.
    EXEC sp_rds_update_db_stats 
        @db_name = 'test_db',
        @modification_threshold = 1;

Menyalin database dalam sebuah instans

Perintah T-SQL

sp_rds_copy_database

Edisi Instans yang Didukung

Edisi Dasar, Edisi Ketersediaan Tinggi

Deskripsi

Menyalin sebuah database dalam sebuah instans.

Catatan
  • Ruang penyimpanan yang tersedia pada instans harus setidaknya 1,3 kali ukuran database saat ini.

  • Prosedur ini tidak didukung untuk klaster khusus MyBase untuk SQL Server.

Penggunaan

USE db
GO
EXEC sp_rds_copy_database 'db','db_copy'
GO
  • Parameter pertama menentukan database yang akan disalin.

  • Parameter kedua menentukan database tujuan.

Setel database secara online

Perintah T-SQL

sp_rds_set_db_online

Edisi Instans yang Didukung

Basic Edition, High-availability Edition

Deskripsi

Setelah Anda menyetel database ke OFFLINE, Anda tidak dapat menggunakan ALTER DATABASE untuk menyetelnya kembali ke ONLINE. Anda dapat menggunakan prosedur tersimpan ini untuk menyetel database ke ONLINE.

Penggunaan

USE master
GO
EXEC sp_rds_set_db_online 'db'
GO

Parameter ini menentukan database yang akan disetel ke ONLINE.

Berikan izin database global

Perintah T-SQL

sp_rds_set_all_db_privileges

Edisi Instans yang Didukung

Edisi Dasar, Edisi Ketersediaan Tinggi

Deskripsi

Memberikan izin kepada pengguna pada semua atau beberapa database pengguna.

Catatan

Saat Anda memberikan izin, izin pengguna saat ini pada database harus lebih besar dari atau sama dengan izin yang ingin Anda berikan.

Penggunaan

sp_rds_set_all_db_privileges 'user','db_owner','db1,db2...'
  • Parameter pertama menentukan pengguna kepada siapa Anda ingin memberikan izin.

  • Parameter kedua menentukan peran database yang akan diberikan kepada pengguna.

  • Parameter ketiga menentukan database. Anda dapat menentukan satu atau lebih database yang dipisahkan oleh koma. Parameter ini opsional. Jika Anda tidak menentukan parameter ini, izin diberikan pada semua database pengguna.

Hapus database

Perintah T-SQL

sp_rds_drop_database

Edisi Instans yang Didukung

Edisi Ketersediaan Tinggi

Catatan
  • Instans Edisi Dasar tidak mendukung prosedur tersimpan ini. Anda dapat menggunakan DROP DATABASE db sebagai gantinya.

  • Dalam jendela perintah yang tidak terhubung ke database tujuan, Anda dapat menjalankan perintah ini menggunakan akun istimewa. Pastikan akun tersebut memiliki izin yang diperlukan pada database tujuan. Untuk informasi lebih lanjut, lihat Ubah Izin Sebuah Akun.

Deskripsi

Menghapus database dari sebuah instans. Saat database dihapus, objek-objek terkaitnya juga akan dihapus. Untuk instans Edisi Ketersediaan Tinggi, citra database secara otomatis dihapus, dan koneksi ke database dihentikan.

Penggunaan

USE db
GO
EXEC sp_rds_drop_database 'db'
GO

Parameter ini menentukan database yang akan dihapus.

Atur pelacakan perubahan

Perintah T-SQL

sp_rds_change_tracking

Edisi Instans yang Didukung

High-availability Edition

Deskripsi

Mengatur flag pelacakan perubahan untuk sebuah database.

Penggunaan

USE db
GO
EXEC sp_rds_change_tracking 'db',1
GO
  • Parameter pertama menentukan nama database.

  • Parameter kedua menentukan apakah akan mengaktifkan fitur tersebut.

    • 1: Aktifkan.

    • 0: Nonaktifkan.

Aktifkan penangkapan data perubahan untuk sebuah database

Perintah T-SQL

sp_rds_cdc_enable_db

Edisi Instans yang Didukung

High-availability Edition, Cluster Edition

Deskripsi

Mengaktifkan penangkapan data perubahan (CDC) untuk sebuah database.

Penggunaan

USE db
GO
-- Aktifkan CDC di tingkat database.
EXEC sp_rds_cdc_enable_db
GO
-- Aktifkan CDC untuk tabel tertentu.
EXEC sys.sp_cdc_enable_table
    @source_schema = '<schema_name>',
    @source_name = '<table_name>',
    @role_name = '<CDC_role_name>'

Nonaktifkan change data capture untuk sebuah database

Perintah T-SQL

sp_rds_cdc_disable_db

Edisi Instans yang Didukung

High-availability Edition, Cluster Edition

Deskripsi

Menonaktifkan CDC untuk sebuah database.

Penggunaan

USE db
GO
-- Nonaktifkan CDC di tingkat database.
EXEC sp_rds_cdc_disable_db
GO
-- Nonaktifkan CDC untuk tabel tertentu.
EXEC sys.sp_cdc_disable_table
    @source_schema = '<schema_name>',
    @source_name = '<table_name>',
    @capture_instance = '<CDC_capture_instance_name>'
    
-- Metode untuk mendapatkan nama instans capture CDC untuk tabel tertentu.
SELECT capture_instance
FROM cdc.change_tables
WHERE source_schema = '<schema_name>'
    AND source_name = '<table_name>'

Konfigurasikan parameter instans

Perintah T-SQL

sp_rds_configure

Famili instans yang didukung

Edisi Dasar, Edisi Ketersediaan Tinggi

Deskripsi

Mengonfigurasi parameter instans. Jika instans memiliki node utama dan sekunder, parameter akan disinkronkan secara otomatis. Parameter berikut didukung. Untuk informasi selengkapnya tentang cara menggunakan parameter ini, lihat dokumentasi resmi Microsoft.

Parameter

Deskripsi

Contoh

fill factor (%)

Menentukan persentase faktor pengisian untuk halaman indeks.

EXEC sp_rds_configure 'fill factor (%)', 90;

max worker threads

Menentukan jumlah maksimum thread pekerja untuk eksekusi kueri paralel dan pemrosesan permintaan.

EXEC sp_rds_configure 'max worker threads', 100;

cost threshold for parallelism

Menentukan threshold biaya untuk paralelisme.

EXEC sp_rds_configure 'cost threshold for parallelism', 30;

max degree of parallelism

Menentukan tingkat paralelisme maksimum untuk kueri.

EXEC sp_rds_configure 'max degree of parallelism', 4;

min server memory (MB)

Menentukan jumlah memori minimum yang digunakan oleh instans SQL Server.

EXEC sp_rds_configure 'min server memory (MB)', 1024;

max server memory (MB)

Menentukan jumlah memori maksimum yang digunakan oleh instans SQL Server.

EXEC sp_rds_configure 'max server memory (MB)', 4096;

blocked process threshold (s)

Menentukan threshold untuk proses terblokir.

EXEC sp_rds_configure 'blocked process threshold (s)', 20;

nested triggers

Menentukan apakah akan mengaktifkan pemicu bersarang. Nilai valid:

  • 0: Nonaktifkan.

  • 1: mengaktifkan.

EXEC sp_rds_configure 'nested triggers', 1;

Ad Hoc Distributed Queries

Menentukan apakah akan mengaktifkan kueri terdistribusi ad hoc. Nilai valid:

  • 0: Nonaktifkan.

  • 1: mengaktifkan.

EXEC sp_rds_configure 'Ad Hoc Distributed Queries', 1;

clr enabled

Menentukan apakah akan mengaktifkan Common Language Runtime (CLR). Nilai valid:

  • 0: Nonaktifkan.

  • 1: Aktifkan.

EXEC sp_rds_configure 'clr enabled', 1;

default full-text language

Menentukan bahasa pencarian teks lengkap default. Nilai umum:

  • 0: Bahasa default. Bahasa default ditentukan oleh lokal sistem operasi.

  • 1033: Inggris.

  • 2052: Cina Sederhana.

Klik untuk melihat semua nilai

Nilai

Bahasa (Inggris)

Definisi dalam bahasa Mandarin

0

Netral

Netral

1025

Arab

Arab

1026

Bahasa Bulgaria

Bahasa Bulgaria

1027

Catalan

Catalan

1028

Cina Tradisional

Cina Tradisional

1029

Ceko

Ceko

1030

Denmark

Bahasa Denmark

1031

Jerman

Jerman

1032

Yunani

Yunani

1033

Inggris

Inggris

1036

Prancis

Prancis

1037

Ibrani

Ibrani

1039

Islandia

Islandia

1040

Bahasa Italia

Italia

1041

Jepang

Jepang

1042

Korea

Korea

1043

Belanda

Belanda

1044

Bokmål

Norwegia (Bokmål)

1045

Polandia

Bahasa Polandia

1046

Brasil

Portugis Brasil

1048

Rumania

Rumania

1049

Rusia

Rusia

1050

Kroasia

Kroasia

1051

Slovak

Slovak

1053

Swedia

Swedia

1054

Thai

Thai

1055

Turki

Turki

1056

Urdu

Urdu

1057

Indonesian

Indonesian

1058

Ukraina

Ukraina

1060

Slovenia

Bahasa Slovenia

1062

Latvia

Latvia

1063

Lituania

Lituania

1066

Bahasa Vietnam

Bahasa Vietnam

1081

Hindi

Hindi

1086

Melayu - Malaysia

Melayu (Malaysia)

1093

Bengali (India)

Bengali (India)

1094

Punjabi

Punjabi

1095

Gujarati

Gujarati

1097

Tamil

Tamil

1098

Telugu

Telugu

1099

Kannada

Kannada

1100

Malayalam

Malayalam

1102

Marathi

Marathi

2052

Cina Sederhana

Cina Sederhana

2057

Inggris Britania

Inggris Britania

2070

Portugis

Portugis

2074

Bahasa Serbia (Latin)

Bahasa Serbia (Latin)

3076

Cina (Hong Kong SAR, Tiongkok)

Cina (Hong Kong SAR)

3082

Spanyol

Spanyol

3098

Serbia (Cyrillic)

Bahasa Serbia (Sirilik)

4100

Cina (Singapura)

Cina (Singapura)

5124

Cina (Macao SAR)

Cina (Macao SAR)

EXEC sp_rds_configure 'default full-text language', 2052;

default language

Menentukan bahasa default. Nilai umum:

  • 0: Inggris (AS).

  • 30: Cina Sederhana.

Klik untuk melihat semua nilai

Nilai

Bahasa (Inggris)

Definisi dalam bahasa Mandarin

0

Inggris

Inggris (AS)

1

Jerman

Jerman

2

Prancis

Prancis

3

Jepang

Jepang

4

Bahasa Denmark

Bahasa Denmark

5

Spanyol

Spanyol

6

Italia

Italia

7

Belanda

Belanda

8

Norwegia

Norwegia

9

Portugis

Portugis

10

Finlandia

Finlandia

11

Swedia

Swedia

12

Ceko

Ceko

13

Hongaria

Hongaria

14

Bahasa Polandia

Bahasa Polandia

15

Rumania

Rumania

16

Kroasia

Kroasia

17

Slovak

Slovak

18

Bahasa Slovenia

Slovenia

19

Yunani

Yunani

20

Bulgaria

Bahasa Bulgaria

21

Rusia

Rusia

22

Turki

Turki

23

Inggris Britania

Inggris (UK)

24

Esti

Estonian

25

Bahasa Latvia

Latvia

26

Lituania

Lituania

27

Portugis Brasil

Portugis Brasil

28

Cina Tradisional

Cina Tradisional

29

Korea

Korea

30

Cina Sederhana

Cina Sederhana

31

Arab

Arab

32

Thai

Thai

33

Norwegia (Bokmål)

Norwegia (Bokmål)

EXEC sp_rds_configure 'default language', 30;

max text repl size (B)

Menentukan ukuran maksimum teks dalam proses replikasi.

Setel ukuran maksimum replikasi teks menjadi 100 MB:

EXEC sp_rds_configure 'max text repl size (B)', 104857600;

optimize for ad hoc workloads

Menentukan apakah akan mengaktifkan tampilan manajemen dinamis yang dioptimalkan untuk beban kerja ad hoc. Nilai valid:

  • 0: Nonaktifkan.

  • 1: Aktifkan.

EXEC sp_rds_configure 'optimize for ad hoc workloads', 1;

query governor cost limit

Menentukan waktu maksimum eksekusi untuk sebuah kueri, dalam detik. Nilai 0 menunjukkan tidak ada batasan waktu.

EXEC sp_rds_configure 'query governor cost limit', 10;

recovery interval (min)

Menentukan interval pemulihan.

EXEC sp_rds_configure 'recovery interval (min)', 60;

remote login timeout (s)

Menentukan periode timeout untuk login jarak jauh.

EXEC sp_rds_configure 'remote login timeout (s)', 30;

remote query timeout (s)

Menentukan periode timeout untuk kueri jarak jauh.

EXEC sp_rds_configure 'remote query timeout (s)', 60;

query wait (s)

Menentukan waktu tunggu kueri untuk sumber daya.

EXEC sp_rds_configure 'query wait (s)', 5;

min memory per query (KB)

Menentukan jumlah memori minimum yang dialokasikan untuk setiap kueri.

EXEC sp_rds_configure 'min memory per query (KB)', 1024;

in-doubt xact resolution

Menentukan bagaimana sistem menangani transaksi terdistribusi yang diragukan. Nilai valid:

  • 0 (default untuk instans non-kluster): Menonaktifkan resolusi otomatis. Sistem tidak secara otomatis menangani transaksi terdistribusi yang diragukan. Anda harus menanganinya secara manual.

  • 1: Mengasumsikan komit otomatis. Jika sistem tidak memiliki cukup informasi untuk menyelesaikan transaksi yang diragukan, transaksi tersebut dikomit secara default.

  • 2 (default untuk instans kluster): Mengasumsikan rollback otomatis. Jika sistem menemui transaksi yang diragukan, transaksi tersebut dirollback secara default.

EXEC sp_configure 'in-doubt xact resolution', 2;

Penggunaan

EXEC sp_rds_configure '<parameter>',<nilai>
  • Parameter pertama menentukan parameter konfigurasi instans yang akan diatur.

  • Parameter kedua menentukan nilai dari parameter instans.

Tambahkan server terhubung

Perintah T-SQL

sp_rds_add_linked_server

Instans yang Didukung

  • Edisi instans: Edisi Kluster dan Edisi Ketersediaan Tinggi. Edisi Dasar tidak didukung.

  • Tipe instans: tujuan umum dan spesifikasi khusus. Tipe Instans Bersama tidak didukung.

  • Metode penagihan: Langganan dan Bayar-per-penggunaan. Instans Tanpa Server tidak didukung.

Deskripsi

Menambahkan linked server ke instans. Transaksi terdistribusi didukung. Linked server yang dibuat pada instans secara otomatis disinkronkan antara node primer dan sekunder. Anda tidak perlu mengonfigurasi ulang linked server setelah Alih bencana (HA). Namun, perubahan selanjutnya pada linked server yang sudah ada di database primer tidak disinkronkan ke database sekunder. Untuk informasi selengkapnya, lihat Failover primary/secondary otomatis atau manual.

Penggunaan

DECLARE
@linked_server_name sysname = N'yangzhao_slb', -- Nama server terhubung.
@data_source sysname = N'****.sqlserver.rds.aliyuncs.com,3888', -- Alamat IP dan nomor port dari SQL Server tujuan dalam format IP,Port.
@user_name sysname = N'ay15' , -- Nama pengguna untuk masuk ke SQL Server tujuan.
@password nvarchar(128) = N'******', -- Kata sandi untuk nama pengguna masuk ke SQL Server tujuan.
@source_user_name sysname = N'test', -- Nama pengguna masuk yang digunakan untuk membuat server terhubung pada instans SQL Server saat ini.
@source_password nvarchar(128) = N'******', -- Kata sandi untuk nama pengguna masuk yang digunakan untuk membuat server terhubung pada instans SQL Server saat ini.
-- Pengaturan untuk server terhubung, diteruskan dalam format XML. Contoh ini menunjukkan pengaturan untuk akses data, izin RPC, dan RPC keluar.
@link_server_options xml
= N'
      <rds_linked_server>
        <config option="data access">true</config>
        <config option="rpc">true</config>
        <config option="rpc out">true</config>
      </rds_linked_server>
'

EXEC sp_rds_add_linked_server
@linked_server_name,
@data_source,
@user_name,
@password,
@source_user_name,
@source_password,
@link_server_options

Atur flag jejak

Perintah T-SQL

sp_rds_dbcc_trace

Edisi Instans yang Didukung

Edisi Dasar, Edisi Ketersediaan Tinggi

Deskripsi

Menetapkan flag jejak untuk instans. Hanya flag jejak tertentu yang didukung. Jika instans memiliki node primer dan sekunder, flag jejak akan disinkronkan secara otomatis.

Penggunaan

EXEC sp_rds_dbcc_trace '1222',1/0
  • Parameter pertama menentukan flag jejak.

  • Parameter kedua menentukan apakah akan mengaktifkan atau menonaktifkan flag tersebut.

    • 1: Buka.

    • 0: Nonaktif.

Mengubah nama database

Perintah T-SQL

sp_rds_modify_db_name

Edisi Instans yang Didukung

Edisi Dasar, Edisi Ketersediaan Tinggi, Edisi Kluster

Deskripsi

Mengubah nama sebuah database. Pastikan akun yang digunakan untuk terhubung ke database memiliki izin yang diperlukan pada database tujuan dan bahwa database tujuan dalam status online.

Untuk instans Edisi Ketersediaan Tinggi dan Edisi Kluster, hubungan primer/sekunder akan dibangun ulang secara otomatis setelah nama diubah. Selama proses ini, backup dan pemulihan dilakukan. Jika database berukuran besar, periksa ruang penyimpanan yang tersedia dari instans. Jika ruang tidak mencukupi, Anda dapat memperluas instans.

Penggunaan

USE master
GO
EXEC sp_rds_modify_db_name 'db','new_db'
GO
  • Parameter pertama menentukan nama database asli.

  • Parameter kedua menentukan nama database baru.

Berikan peran tingkat server

Perintah T-SQL

sp_rds_set_server_role

Edisi Instans yang Didukung

Basic Edition

Deskripsi

Memberikan peran tingkat server kepada pengguna logon. Peran yang didukung adalah setupadmin dan processadmin. Untuk membuat izin lain dan mempelajari lebih lanjut tentang izin akun, lihat Buat Akun dengan Izin SA dan Daftar Izin Akun.

Penggunaan

EXEC sp_rds_set_server_role @login_name='test_login',@server_role='setupadmin'
  • Parameter pertama menentukan nama pengguna.

  • Parameter kedua menentukan nama peran. Peran yang didukung adalah setupadmin dan processadmin.

FAQ

T: Mengapa saya menerima kesalahan Tidak dapat menggunakan KILL untuk membunuh proses Anda sendiri. setelah menjalankan perintah EXEC sp_rds_drop_database 'dbtest'; menggunakan akun dengan izin standar?

J: Anda dapat menjalankan perintah ini menggunakan akun istimewa di jendela perintah yang tidak terhubung ke database tujuan. Pastikan bahwa akun tersebut memiliki izin yang diperlukan pada database tujuan. Untuk informasi lebih lanjut, lihat Ubah Izin Sebuah Akun.