本文介绍RDS SQL Server(2012及以上版本)支持的存储过程。
-
实例内复制数据库
-
设置数据库在线
-
数据库全局授权
-
删除数据库
-
设置更改跟踪
-
开启数据库变更捕获
-
关闭数据库变更捕获
-
配置实例参数
-
增加链接服务器Linked Server
-
设置跟踪标志
-
更改数据库的名称
-
Server级别角色授予
关于SQL Server存储过程的更多介绍,请参见RDS SQL Server使用介绍。
实例内复制数据库
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 db
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
支持的实例
高可用系列
说明
当数据库与AlwaysOn可用性组同时存在时,需要先移除可用性组才能启用CDC功能,不建议使用。
描述
启用数据库的数据变更捕获。
使用方法
USE db
GO
-- 启用数据库级别的变更捕获(CDC)
EXEC sp_rds_cdc_enable_db
GO
-- 启动指定表的变更捕获(CDC)
EXEC sys.sp_cdc_enable_table
@source_schema = '',
@source_name = '',
@role_name = ''
关闭数据库变更捕获
T-SQL命令
sp_rds_cdc_disable_db
支持的实例
高可用系列
说明
与AlwaysOn共存时,需要移除可用性组,不建议使用。
描述
关闭数据库的数据变更捕获。
使用方法
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捕获实例名称的方法
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月前创建的实例不支持该参数。 |
|
使用方法
EXEC sp_rds_configure '',
-
第一个参数是要设置的实例配置参数项。
-
第二个参数是该实例参数的值。
增加链接服务器Linked Server
T-SQL命令
sp_rds_add_linked_server
支持的实例
-
SQL Server 2012、2014、2016、2017、2019标准高可用系列(独享型或通用型实例)
-
SQL Server 2012、2014、2016企业高可用系列(独享型或通用型实例)
-
SQL Server 2017、2019企业集群系列(独享型或通用型实例)
说明
共享型规格实例暂不支持该存储过程。
描述
增加实例的链接服务器。支持分布式事务,实例主备自动创建,切换不需要再配置。
使用方法
DECLARE
@linked_server_name sysname = N'yangzhao_slb',
@data_source sysname = N'****.sqlserver.rds.aliyuncs.com,3888', --style: 10.1.10.1,1433
@user_name sysname = N'ay15' ,
@password nvarchar(128) = N'******',
@source_user_name sysname = N'test',
@source_password nvarchar(128) = N'******',
@link_server_options xml
= N'
true
true
true
'
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:请在非目标库的命令窗口下使用高权限账号执行该命令,并确保该账号拥有目标数据库的操作权限。更多操作,请参见修改账号权限。
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家
阿里云企业补贴进行中: 马上申请
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠
转转请注明出处:https://www.yunxiaoer.com/155078.html