本文介紹RDS SQL Server(2012及以上版本)支援的預存程序。
使用說明
本文所述命令適用於在SSMS工具中執行,命令中包含了GO
作為批命令分隔字元。如果您計劃在DMS中執行預存程序命令,請勿在命令中添加GO
關鍵字,否則會報錯。
執行個體內複製資料庫
T-SQL命令
sp_rds_copy_database
支援的執行個體
高可用系列
基礎系列
描述
在執行個體內複製一個資料庫。
執行個體剩餘空間不得小於當前資料庫大小的1.3倍。
不支援專屬叢集MyBase SQL Server執行個體使用。
使用方法
USE db
GO
EXEC sp_rds_copy_database 'db','db_copy'
GO
第一個參數是被拷貝的資料庫。
第二個參數是拷貝的目標資料庫。
設定資料庫線上
T-SQL命令
sp_rds_set_db_online
支援的執行個體
高可用系列
基礎系列
描述
您將資料庫設定為OFFLINE後,不能直接通過ALTER DATABASE設定為ONLINE,請使用本預存程序設定為ONLINE。
使用方法
USE master
GO
EXEC sp_rds_set_db_online 'db'
GO
參數是指定要被設定ONLINE的資料庫。
資料庫全域授權
T-SQL命令
sp_rds_set_all_db_privileges
支援的執行個體
高可用系列
基礎系列
描述
為一個使用者授予所有或多個使用者資料庫的許可權。
授權時,目前使用者對被授權資料庫的許可權必須大於或等於被授與權限。
使用方法
sp_rds_set_all_db_privileges 'user','db_owner','db1,db2...'
第一個參數是被授權的使用者。
第二個參數是授予該使用者的資料庫角色。
第三個參數是資料庫,可以指定一個或者多個,用逗號分隔,也可以不指定該參數(不指定表示全部使用者資料庫)。
刪除資料庫
T-SQL命令
sp_rds_drop_database
支援的執行個體
高可用系列
描述
刪除執行個體中的資料庫。刪除時會將關聯的對象移除掉,高可用系列會自動將鏡像移除,並且KILL在該資料庫上的串連。
使用方法
USE db
GO
EXEC sp_rds_drop_database 'db'
GO
參數是要被刪除的資料庫。
設定變更追蹤
T-SQL命令
sp_rds_change_tracking
支援的執行個體
高可用系列
描述
設定資料庫的變更追蹤標記。
使用方法
USE db
GO
EXEC sp_rds_change_tracking 'db',1
GO
第一個參數是資料庫名稱。
第二個參數表示是否啟用。
1:啟用。
0:禁用。
開啟資料庫變更捕獲
T-SQL命令
sp_rds_cdc_enable_db
支援的執行個體
高可用系列、叢集系列
描述
啟用資料庫的資料變更捕獲。
使用方法
USE db
GO
-- 啟用資料庫層級的變更捕獲(CDC)
EXEC sp_rds_cdc_enable_db
GO
-- 啟動指定表的變更捕獲(CDC)
EXEC sys.sp_cdc_enable_table
@source_schema = '<模式名稱>',
@source_name = '<表名稱>',
@role_name = '<CDC角色名稱>'
關閉資料庫變更捕獲
T-SQL命令
sp_rds_cdc_disable_db
支援的執行個體
高可用系列、叢集系列
描述
關閉資料庫的資料變更捕獲。
使用方法
USE db
GO
-- 關閉資料庫層級的變更捕獲(CDC)
EXEC sp_rds_cdc_disable_db
GO
-- 關閉指定表的變更捕獲(CDC)
EXEC sys.sp_cdc_disable_table
@source_schema = '<模式名稱>',
@source_name = '<表名稱>',
@capture_instance = '<CDC捕獲執行個體名稱>'
-- 擷取特定表的CDC捕獲執行個體名稱的方法
SELECT capture_instance
FROM cdc.change_tables
WHERE source_schema = '<模式名稱>'
AND source_name = '<表名稱>'
配置執行個體參數
T-SQL命令
sp_rds_configure
支援的執行個體
高可用系列
基礎系列
描述
設定執行個體參數。若有主備執行個體,會自動同步。目前支援的參數如下,更多參數使用詳情,請參見微軟官方文檔。
參數項 | 描述 | 使用樣本 |
fill factor (%) | 指定索引頁的填滿因數百分比。 |
|
max worker threads | 指定並存執行查詢和處理請求的背景工作執行緒的最大數量。 |
|
cost threshold for parallelism | 指定並行的開銷閾值。 |
|
max degree of parallelism | 指定查詢的最大並行度。 |
|
min server memory (MB) | 指定SQL Server執行個體使用的最小記憶體量。 |
|
max server memory (MB) | 指定SQL Server執行個體使用的最大記憶體量。 |
|
blocked process threshold (s) | 指定被阻塞進程的閾值。 |
|
nested triggers | 指定是否啟用嵌套觸發器。取值如下:
說明 2023年05月前建立的執行個體不支援該參數。 |
|
Ad Hoc Distributed Queries | 指定是否啟用即席分散式查詢。取值如下:
說明 2023年05月前建立的執行個體不支援該參數。 |
|
clr enabled | 指定是否啟用CLR (Common Language Runtime)。取值如下:
說明 2023年05月前建立的執行個體不支援該參數。 |
|
default full-text language | 指定預設的全文檢索搜尋語言。取值如下:
說明 2023年05月前建立的執行個體不支援該參數。 |
|
default language | 指定預設的語言。取值如下:
說明 2023年05月前建立的執行個體不支援該參數。 |
|
max text repl size (B) | 指定複製過程中的文本最大大小。 說明 2023年05月前建立的執行個體不支援該參數。 | 設定最大文本複製大小為100 MB:
|
optimize for ad hoc workloads | 指定是否啟用針對即席工作負載進行最佳化的動態管理檢視。取值如下:
說明 2023年05月前建立的執行個體不支援該參數。 |
|
query governor cost limit | 指定查詢的最大已耗用時間(秒)。設定為0表示沒有時間限制。 說明 2023年05月前建立的執行個體不支援該參數。 |
|
recovery interval (min) | 指定復原間隔。 說明 2023年05月前建立的執行個體不支援該參數。 |
|
remote login timeout (s) | 指定遠程登入的逾時時間。 說明 2023年05月前建立的執行個體不支援該參數。 |
|
remote query timeout (s) | 指定遠程查詢的逾時時間。 說明 2023年05月前建立的執行個體不支援該參數。 |
|
query wait (s) | 指定查詢在等待資源時的等待時間。 說明 2023年05月前建立的執行個體不支援該參數。 |
|
min memory per query (KB) | 指定每次查詢佔用的最小記憶體量。 說明 2023年05月前建立的執行個體不支援該參數。 |
|
in-doubt xact resolution | 指定系統如何處理不確定的分散式交易。取值如下:
|
|
使用方法
EXEC sp_rds_configure '<參數項>',<參數取值>
第一個參數是要設定的執行個體配置參數項。
第二個參數是該執行個體參數的值。
增加連結的伺服器Linked Server
T-SQL命令
sp_rds_add_linked_server
支援的執行個體
執行個體規格:通用型、獨享型(不支援共用型)
計費方式:訂用帳戶或隨用隨付(不支援Serverless執行個體)
描述
增加執行個體的連結的伺服器。支援分散式交易,執行個體主備自動建立,切換不需要再配置。
使用方法
DECLARE
@linked_server_name sysname = N'yangzhao_slb', --Linked Server的名稱
@data_source sysname = N'****.sqlserver.rds.aliyuncs.com,3888', --目標端SQL Server的IP和連接埠號碼,格式為IP,Port
@user_name sysname = N'ay15' , --目標端SQL Server的登入使用者名稱
@password nvarchar(128) = N'******', --目標端SQL Server登入名稱對應的密碼
@source_user_name sysname = N'test', --當前SQL Server執行個體上執行建立連結的伺服器的登入使用者名稱
@source_password nvarchar(128) = N'******', --當前SQL Server執行個體上執行建立連結的伺服器的登入使用者名稱對應的密碼
--連結的伺服器的一些設定項,通過XML格式傳遞。本文樣本設定項為資料訪問、RPC及RPC out的許可權
@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
設定追蹤旗標
T-SQL命令
sp_rds_dbcc_trace
支援的執行個體
高可用系列
基礎系列
描述
設定執行個體的跟蹤標記。目前只支援部分跟蹤標記,若有主備執行個體,會自動同步。
使用方法
EXEC sp_rds_dbcc_trace '1222',1/0
第一個參數是跟蹤標記。
第二個參數表示開啟或關閉。
1:開啟。
0:關閉。
更改資料庫的名稱
T-SQL命令
sp_rds_modify_db_name
支援的執行個體
高可用系列
叢集系列
基礎系列
描述
更改資料庫的名稱。高可用系列和叢集系列執行個體在更改名稱後會自動重建主備關係,重建過程中會進行備份與還原,當資料庫空間比較大時,需要注意當前執行個體的剩餘可用空間。
使用方法
USE db
GO
EXEC sp_rds_modify_db_name 'db','new_db'
GO
第一個參數是原資料庫的名稱。
第二個參數是新資料庫的名稱。
Server層級角色授予
T-SQL命令
sp_rds_set_server_role
支援的執行個體
基礎系列
描述
針對Login使用者授予Server層級角色,角色範圍包括setupadmin和processadmin,如需建立其他許可權以及瞭解更多帳號許可權,請參見建立SA許可權帳號和帳號許可權列表。
使用方法
EXEC sp_rds_set_server_role @login_name='test_login',@server_role='setupadmin'
第一個參數是帳號名。
第二個參數是角色名稱。角色支援setupadmin和processadmin。
常見問題
Q:為什麼使用普通許可權的帳號執行EXEC sp_rds_drop_database 'dbtest';
命令後出現Cannot use KILL to kill your own process.
報錯?
A:請在非目標庫的命令視窗下使用高許可權帳號執行該命令,並確保該帳號擁有目標資料庫的操作許可權。更多操作,請參見修改帳號許可權。