访问 Amazon RDS 上 Microsoft SQL Server 数据库实例的临时数据库
您现在可以访问 Amazon RDS 上 Microsoft RDS Server 数据库实例的 tempdb
数据库。您可以通过 Microsoft SQL Server Management Studio (SSMS) 或任何其他标准 SQL 客户端应用程序,使用 Transact-SQL 在 tempdb
上运行代码。有关连接到数据库实例的更多信息,请参阅连接到运行 Microsoft SQL Server 数据库引擎的数据库实例。
向数据库实例的主用户授予对 CONTROL
的 tempdb
访问权限,以便此用户能够修改 tempdb
数据库选项。主用户不是 tempdb
数据库的数据库拥有者。如果需要,主用户可以授予其他用户 CONTROL
访问权限,使得这些用户也可以修改 tempdb
数据库选项。
注意
您可以在 tempdb
数据库上运行数据库控制台命令 (DBCC)。
修改临时数据库选项
您可以在 Amazon RDS 数据库实例上修改 tempdb
数据库的数据库选项。有关可以修改哪些选项的详细信息,请参阅 Microsoft 文档中的临时数据库
最大文件大小等数据库选项在您重新启动数据库实例之后会保留。您可以修改数据库选项以优化导入数据时的性能,以及防止存储空间不足。
优化导入数据时的性能
在将大量数据导入数据库实例时,如果要优化性能,请将临时数据库的 SIZE
和 FILEGROWTH
属性设置为较大的数字。有关优化 tempdb
的更多信息,请参阅 Microsoft 文档中的优化临时数据库性能
以下示例说明了将大小设置为 100 GB 并将文件增长设置为 10%。
alter database[tempdb] modify file (NAME = N'
templog
', SIZE=100GB
, FILEGROWTH =10%
)
防止存储问题
要防止 tempdb
数据库使用所有可用的磁盘空间,请设置 MAXSIZE
属性。以下示例说明了将该属性设置为 2048 MB。
alter database [tempdb] modify file (NAME = N'
templog
', MAXSIZE =2048MB
)
缩减临时数据库
可通过两种方法缩减 Amazon RDS 数据库实例上的 tempdb
数据库。可以使用 rds_shrink_tempdbfile
过程,也可以设置 SIZE
属性。
使用 rds_shrink_tempdbfile 过程
您可以使用 Amazon RDS 过程 msdb.dbo.rds_shrink_tempdbfile
缩减 tempdb
数据库。您只能在具有对 rds_shrink_tempdbfile
数据库的 CONTROL
访问权限时调用 tempdb
。在调用 rds_shrink_tempdbfile
时,数据库实例不会停机。
rds_shrink_tempdbfile
过程具有以下参数。
参数名称 | 数据类型 | 默认值 | 必需 | 描述 |
---|---|---|---|---|
|
SYSNAME |
— |
必需 |
要缩减的文件的逻辑名称。 |
|
int |
null |
可选 |
文件的新大小 (以 MB 为单位)。 |
以下示例获取 tempdb
数据库的文件的名称。
use tempdb; GO select name, * from sys.sysfiles; GO
以下示例缩减名为 tempdb
的 test_file
数据库文件,并请求新的 10
MB 大小:
exec msdb.dbo.rds_shrink_tempdbfile @temp_filename = N'
test_file
', @target_size =10
;
设置 SIZE 属性
您也可以通过设置 tempdb
属性,然后重新启动数据库实例来缩减 SIZE
数据库。有关重新启动数据库实例的更多信息,请参阅重启中的数据库实例。
以下示例说明了将 SIZE
属性设置为 1024 MB。
alter database [tempdb] modify file (NAME = N'
templog
', SIZE =1024MB
)
多可用区部署的 TempDB 配置
如果您的 RDS for SQL Server 数据库实例位于使用数据库镜像(DBM)或 Always On 可用性组(AG)的多可用区部署内,请注意以下有关使用 tempdb
数据库的注意事项。
您无法将 tempdb
数据从主数据库实例复制到辅助数据库实例。当您失效转移到辅助数据库实例时,辅助数据库实例上的 tempdb
将为空。
您可以将 tempdb
数据库选项的配置(包括其文件大小和自动增长设置)从主数据库实例同步到辅助数据库实例。所有 RDS for SQL Server 版本都支持同步 tempDB
配置。您可以使用以下存储过程开启 tempdb
配置的自动同步:
EXECUTE msdb.dbo.rds_set_system_database_sync_objects @object_types = 'TempDbFile';
重要
在使用 rds_set_system_database_sync_objects
存储过程之前,请确保已在主数据库实例(而不是辅助数据库实例)上设置了首选 tempdb
配置。如果您在辅助数据库实例上更改了配置,则在您开启自动同步时,您的首选 tempdb
配置可能会被删除。
您可以使用以下函数来确认是否开启了 tempdb
配置的自动同步:
SELECT * from msdb.dbo.rds_fn_get_system_database_sync_objects();
开启 tempdb
配置自动同步后,将显示 object_class
字段的返回值。当它关闭时,不会返回任何值。
您可以使用以下函数来查找上次同步对象的时间,以 UTC 时间表示:
SELECT * from msdb.dbo.rds_fn_server_object_last_sync_time();
例如,如果您在 01:00 修改 tempdb
配置,然后运行 rds_fn_server_object_last_sync_time
函数,则为 last_sync_time
返回的值应在 01:00 之后,表示发生了自动同步。
如果您也在使用 SQL Server Agent 任务复制,则可以通过在 @object_type
参数中提供 SQL 代理任务和 tempdb
配置来为它们启用复制:
EXECUTE msdb.dbo.rds_set_system_database_sync_objects @object_types = 'SQLAgentJob,TempDbFile';
有关 SQL Server Agent 任务复制的更多信息,请参阅启用 SQL Server Agent 作业复制。
除了使用 rds_set_system_database_sync_objects
存储过程来确保自动同步 tempdb
配置更改之外,还可以使用以下手动方法之一:
注意
我们建议使用 rds_set_system_database_sync_objects
存储过程开启 tempdb
配置的自动同步。使用自动同步可以防止每次更改 tempdb
配置时都需要执行这些手动任务。
-
首先修改数据库实例并关闭多可用区,然后修改临时数据库,最后重新启用多可用区。此方法不会有任何停机时间。
有关更多信息,请参阅“修改 Amazon RDS 数据库实例”。
-
首先在原始主实例中修改
tempdb
,然后手动执行故障转移,最后在新的主实例中修改tempdb
。此方法需要停机。有关更多信息,请参阅 重启中的数据库实例。