本文介绍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:请在非目标库的命令窗口下使用高权限账号执行该命令,并确保该账号拥有目标数据库的操作权限。更多操作,请参见修改账号权限。