Amazon RDS - MS SQL DBA 任务


作为 RDS 服务,MSSQL DB 有许多 DBA 任务可作为托管服务使用。您没有对 DB 的 shell 访问权限,但通过控制台或通过客户端软件中的命令,您可以执行各种 DBA 活动。以下是在 Amazon RDS Ms SQL Server 中执行的最常见和最常用的 DBA 任务。

变更数据捕获

CDC 捕获对表中数据所做的更改。对用户表所做的更改将捕获在相应的更改表中。这些变更表提供了随时间变化的历史视图。SQL Server提供的变更数据捕获功能使变更数据能够轻松、系统地被使用。

在连接到 RDS MSSQL 服务器的 SSMS 中使用以下命令来启用和禁用 CDC。

#Enable CDC for RDS DB Instance
exec msdb.dbo.rds_cdc_enable_db ''

#Disable CDC for RDS DB Instance
exec msdb.dbo.rds_cdc_disable_db ''

接下来,为了跟踪特定表中的更改,我们使用存储过程 sp_cdc_enable_table 和以下命令。

#Begin tracking a table
exec sys.sp_cdc_enable_table   
   @source_schema           = N''
,  @source_name             = N'
' , @role_name = N'' , @captured_column_list = '' ;

修改 tempdb 数据库选项

tempdb 系统数据库是一个全局资源,可供连接到 SQL Server 实例的所有用户使用,用于保存以下内容

  • 显式创建的临时用户对象,例如:全局或本地临时表、临时存储过程、表变量或游标。

  • 由 SQL Server 数据库引擎创建的内部对象,例如,用于存储假脱机或排序的中间结果的工作表。

  • 由使用行版本控制隔离或快照隔离事务的读提交的数据库中的数据修改事务生成的行版本。

以下是如何针对各种 DBA 活动修改 RDS MSSQL tempdb 的示例。

# setting the size to 100 GB and file growth to 10 percent.
alter database[tempdb] modify file (NAME = N'templog', SIZE=100GB, FILEGROWTH = 10%)

# set the MAXSIZE property to prevent tempdb database from using all available disk space.
alter database [tempdb] modify file (NAME = N'templog', MAXSIZE = 2048MB)

# Shrinking the tempdb Database file size and requests a new size
exec msdb.dbo.rds_shrink_tempdbfile @temp_filename = N'test_file', @target_size = 10;

线下到线上的转变

您可以使用以下命令将 Amazon RDS 数据库实例上的 Microsoft SQL Server 数据库从离线状态转换为在线状态。

EXEC rdsadmin.dbo.rds_set_database_online name

非英语字符集

在创建RDS MSSQL实例期间,为数据库标记的默认排序规则为英语。但可以通过应用 COLLATE 子句以及排序规则名称将其更改为另一种非英语语言。下面的例子说明了这一点。

CREATE TABLE [dbo].[Account]
(
    [AccountID] [nvarchar](10) NOT NULL,
    [AccountName] [nvarchar](100) COLLATE Japanese_CI_AS NOT NULL 
) ON [PRIMARY];