本文介紹使用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控制臺:數據庫屬性管理