全部產品
Search
文件中心

ApsaraDB RDS:預存程序

更新時間:Dec 25, 2024

本文介紹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

支援的執行個體

高可用系列

說明
  • 基礎系列執行個體暫不支援本預存程序,請使用DROP DATABASE db

  • 請在非目標庫的命令視窗下使用高許可權帳號執行該命令,並確保該帳號擁有目標資料庫的操作許可權。更多操作,請參見修改帳號許可權

描述

刪除執行個體中的資料庫。刪除時會將關聯的對象移除掉,高可用系列會自動將鏡像移除,並且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 (%)

指定索引頁的填滿因數百分比。

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

max worker threads

指定並存執行查詢和處理請求的背景工作執行緒的最大數量。

EXEC sp_rds_configure 'max worker threads', 100;

cost threshold for parallelism

指定並行的開銷閾值。

EXEC sp_rds_configure 'cost threshold for parallelism', 30;

max degree of parallelism

指定查詢的最大並行度。

EXEC sp_rds_configure 'max degree of parallelism', 4;

min server memory (MB)

指定SQL Server執行個體使用的最小記憶體量。

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

max server memory (MB)

指定SQL Server執行個體使用的最大記憶體量。

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

blocked process threshold (s)

指定被阻塞進程的閾值。

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

nested triggers

指定是否啟用嵌套觸發器。取值如下:

  • 0:禁用。

  • 1:啟用。

說明

2023年05月前建立的執行個體不支援該參數。

EXEC sp_rds_configure 'nested triggers', 1;

Ad Hoc Distributed Queries

指定是否啟用即席分散式查詢。取值如下:

  • 0:禁用。

  • 1:啟用。

說明

2023年05月前建立的執行個體不支援該參數。

EXEC sp_rds_configure 'Ad Hoc Distributed Queries', 1;

clr enabled

指定是否啟用CLR (Common Language Runtime)。取值如下:

  • 0:禁用。

  • 1:啟用。

說明

2023年05月前建立的執行個體不支援該參數。

EXEC sp_rds_configure 'clr enabled', 1;

default full-text language

指定預設的全文檢索搜尋語言。取值如下:

  • 0:使用預設語言。預設語言由作業系統的地區設定決定。

  • 1033:設定為英語。

說明

2023年05月前建立的執行個體不支援該參數。

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

default language

指定預設的語言。取值如下:

  • 0:使用預設語言。預設語言由作業系統的地區設定決定。

  • 1033:設定為英語。

說明

2023年05月前建立的執行個體不支援該參數。

EXEC sp_rds_configure 'default language', 1033;

max text repl size (B)

指定複製過程中的文本最大大小。

說明

2023年05月前建立的執行個體不支援該參數。

設定最大文本複製大小為100 MB:

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

optimize for ad hoc workloads

指定是否啟用針對即席工作負載進行最佳化的動態管理檢視。取值如下:

  • 0:禁用。

  • 1:啟用。

說明

2023年05月前建立的執行個體不支援該參數。

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

query governor cost limit

指定查詢的最大已耗用時間(秒)。設定為0表示沒有時間限制。

說明

2023年05月前建立的執行個體不支援該參數。

EXEC sp_rds_configure 'query governor cost limit', 10;

recovery interval (min)

指定復原間隔。

說明

2023年05月前建立的執行個體不支援該參數。

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

remote login timeout (s)

指定遠程登入的逾時時間。

說明

2023年05月前建立的執行個體不支援該參數。

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

remote query timeout (s)

指定遠程查詢的逾時時間。

說明

2023年05月前建立的執行個體不支援該參數。

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

query wait (s)

指定查詢在等待資源時的等待時間。

說明

2023年05月前建立的執行個體不支援該參數。

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

min memory per query (KB)

指定每次查詢佔用的最小記憶體量。

說明

2023年05月前建立的執行個體不支援該參數。

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

in-doubt xact resolution

指定系統如何處理不確定的分散式交易。取值如下:

  • 0(非叢集版執行個體預設值):禁用自動解決。系統不會自動處理不確定的分散式交易,需要手動處理。

  • 1:假設自動認可。若系統對不確定的事務沒有足夠的資訊來解決,將預設自動認可這些事務。

  • 2(叢集版執行個體預設值):假設自動復原。若系統遇到不確定的事務,將預設復原這些事務。

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

使用方法

EXEC sp_rds_configure '<參數項>',<參數取值>
  • 第一個參數是要設定的執行個體配置參數項。

  • 第二個參數是該執行個體參數的值。

增加連結的伺服器Linked Server

T-SQL命令

sp_rds_add_linked_server

支援的執行個體

描述

增加執行個體的連結的伺服器。支援分散式交易,執行個體主備自動建立,切換不需要再配置。

使用方法

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層級角色,角色範圍包括setupadminprocessadmin,如需建立其他許可權以及瞭解更多帳號許可權,請參見建立SA許可權帳號帳號許可權列表

使用方法

EXEC sp_rds_set_server_role @login_name='test_login',@server_role='setupadmin'
  • 第一個參數是帳號名。

  • 第二個參數是角色名稱。角色支援setupadminprocessadmin

常見問題

Q:為什麼使用普通許可權的帳號執行EXEC sp_rds_drop_database 'dbtest';命令後出現Cannot use KILL to kill your own process.報錯?

A:請在非目標庫的命令視窗下使用高許可權帳號執行該命令,並確保該帳號擁有目標資料庫的操作許可權。更多操作,請參見修改帳號許可權