本文介紹RDS SQL Server(2012及以上版本)支援的預存程序。
使用說明
本文所述命令適用於在SSMS工具中執行,命令中包含了GO作為批命令分隔字元。如果您計劃在DMS中執行預存程序命令,請勿在命令中添加GO關鍵字,否則會報錯。
更新資料庫統計資訊
T-SQL命令
sp_rds_update_db_stats
描述
用於靈活高效地更新資料庫統計資訊,支援採樣率、並行度、逾時時間及閾值百分比多維度配置。
使用方法
-- 如下為包含多個參數的綜合樣本
-- 更新test_db資料庫統計資訊,設定採樣率為50%,並行度為4,逾時時間為7200秒,修改閾值為3
EXEC sp_rds_update_db_stats
@db_name = 'test_db', -- 資料庫名(必填)
@sample_percent = 50, -- 採樣率(可選)
@max_dop = 4, -- 並行度(可選,該參數不支援2012及以下版本)
@timeout_seconds = 7200, -- 逾時時間(可選)
@modification_threshold = 3; -- 修改閾值(可選)僅傳入@db_name參數,或者SQL Server資料庫版本為2008時,預設將執行系統sp_updatestats,詳情請參見微軟官方教程。
參數項 | 是否必填 | 描述 |
@db_name | 是 | 指定需要更新統計資料的目標資料庫名稱。使用樣本如下: |
@sample_percent | 否 | 控制統計資訊採樣的百分比,類型為 未指定該參數時使用系統預設採樣率,詳情請參見微軟官方教程。使用樣本如下: |
@max_dop | 否 | 設定並行度(Degree of Parallelism),類型為 |
@timeout_seconds | 否 | 設定統計資訊更新操作的逾時時間,單位為秒(s),預設值為 |
@modification_threshold | 否 | 設定統計資訊更新的修改閾值百分比,類型為
|
執行個體內複製資料庫
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執行個體)
描述
增加執行個體的連結的伺服器。支援分散式交易,執行個體的連結的伺服器會在執行個體主備自動建立,HA切換後不需要再配置。更多詳情,請參見自動或手動主備切換。
使用方法
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 master
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。
管理tempdb庫db_owner許可權
T-SQL命令
sp_rds_manage_tempdb_user
支援的執行個體系列
基礎系列、高可用系列、叢集系列
描述
授予或移除指定帳號對tempdb資料庫的db_owner許可權。
由於
tempdb為系統臨時資料庫,執行個體重啟時tempdb會自動重建並初始化,許可權將丟失並恢複為預設狀態,因此需在每次重啟後重新授權。對於主備架構執行個體(如高可用系列、叢集系列),主節點與備節點需分別授權。相關操作,請參見回收tempdb臨時空間。
使用方法
EXEC sp_rds_manage_tempdb_user
@login_name = '<login_name>',
@action = '<action>';第一個參數是帳號名。
第二個參數是操作類型,支援
create(授予許可權)和drop(刪除許可權)。
常見問題
Q:為什麼使用普通許可權的帳號執行EXEC sp_rds_drop_database 'dbtest';命令後出現Cannot use KILL to kill your own process.報錯?
A:請在非目標庫的命令視窗下使用高許可權帳號執行該命令,並確保該帳號擁有目標資料庫的操作許可權。更多操作,請參見修改帳號許可權。