本文介绍使用SQL命令在RDS SQL Server实例中创建和管理数据库的方法,以及在管理数据库时不允许执行的特定操作。
前提条件
实例版本需为RDS SQL Server 2012及以上版本。
创建数据库
执行如下命令,创建数据库:
CREATE DATABASE TestDb
在RDS SQL Server实例中创建数据库时会产生默认路径,请您不要指定任何文件的路径。
您可以执行以下命令,查询SQL Server实例的所有数据库的数据文件和日志文件的路径信息:
SELECT db_name(database_id), physical_name
FROM sys.master_files;
删除数据库
执行如下命令,删除数据库:
DROP DATABASE [TestDb]
需注意,若您在删除数据库前没有对该数据库进行过任何备份,系统会返回如下提示信息:
DROP DATABASE [TestDb]
-------------------------------------------------------------------------------------------------
Kindly reminder:
your database [TestDb] does not exist any backup set.
-------------------------------------------------------------------------------------------------
Login User [Test11] has dropped database [TestDb] .
更改数据库注意事项
您可以更改数据库的大部分属性,但请不要执行如下操作:
不能将数据库移动到错误的文件路径。
例如,若您执行如下命令并指定了错误的文件路径:
ALTER DATABASE [TestDb]MODIFY FILE( NAME = N'TestDb', FILENAME = N'E:\KKKK\DDD\DATA\TestDb.mdf' )
则系统会返回如下错误信息:
Msg 50000, Level 16, State 1, Procedure ******, Line 152 The file path [ E:\KKKK\DDD\DATA\TestDb.mdf ] is invalid,please specify correct path folder [ E:\mmm\gggg\ ]. Msg 3609, Level 16, State 2, Line 2 The transaction ended in the trigger. The batch has been aborted.
不能将数据库的恢复模式设置为FULL之外的其他模式。
例如,若您执行了如下将数据库的恢复模式设置为SIMPLE的命令:
ALTER DATABASE [TestDb] --[TestDb]为数据库名称。 SET RECOVERY SIMPLE
数据库日志链会断开,系统会将恢复模式重置为FULL,但不会实际修改数据库恢复模式为SIMPLE。会返回如下报错信息:
Msg 50000, Level 16, State 1, Procedure ******, Line 46 Login User [Test11] can't change database [TestDb] recovery model. Msg 3609, Level 16, State 2, Line 2 The transaction ended in the trigger. The batch has been aborted.
重要如果日志已满只能截断日志链进行收缩。原则上不允许将数据库修改为SIMPLE简单模式,这种方式会影响RDS的备份链,导致经过当前时间点的所有恢复任务失败。如果紧急情况下您需要通过修改数据库恢复模式为SIMPLE简单模式并需要截断数据库日志链,表示您已经理解并愿意承担上述风险。此时您可忽略执行如下命令后显示的错误信息,数据库日志链依然会断开。
将数据库设置为OFFLINE后,不能直接执行ONLINE命令。
例如,对于当前状态为OFFLINE的数据库,若您直接执行ONLINE的命令,如下所示:
USE [master] GO --set offline --ALTER DATABASE [TestDb] --SET OFFLINE --WITH ROLLBACK AFTER 0 ALTER DATABASE [TestDb] SET ONLINE
则系统会返回如下错误信息:
Msg 5011, Level 14, State 9, Line 1 User does not have permission to alter database 'TestDb', the database does not exist, or the database is not in a state that allows access checks. Msg 5069, Level 16, State 1, Line 1 ALTER DATABASE statement failed.
若您想把数据库的状态从OFFLINE改成ONLINE,您可以执行sp_rds_set_db_online存储过程命令进行状态的变更:
EXEC sp_rds_set_db_online 'TestDb'
相关操作
通过RDS控制台或API创建或删除数据库,以及修改系统字符集排序规则与时区,请参见:
通过RDS控制台或API查看或修改系统字符集排序规则与时区,请参见:
通过RDS控制台或API查看或修改数据库中的各类属性、手动收缩数据库事务日志或更新数据库统计信息,请参见:
RDS控制台:数据库属性管理