本文介紹使用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查看或修改系統字元集定序與時區,請參見: