本文介紹在RDS SQL Server執行個體中使用SQL命令建立和刪除資料庫,並通過專用預存程序更改資料庫名稱的方法,同時說明管理資料庫時禁止執行的高風險操作。
前提條件
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] .更改資料庫名稱
RDS SQL Server提供預存程序sp_rds_modify_db_name用於安全修改資料庫名稱,該預存程序無需額外授權,普通帳號也可執行。
T-SQL命令
sp_rds_modify_db_name
支援的執行個體
高可用系列
叢集系列
基礎系列
描述
更改資料庫的名稱。高可用系列和叢集系列執行個體在更改名稱後會自動重建主備關係,重建過程中會進行備份與還原,當資料庫空間比較大時,需要注意當前執行個體的剩餘可用空間。
使用方法
USE db
GO
EXEC sp_rds_modify_db_name 'db','new_db'
GO第一個參數是原資料庫的名稱。
第二個參數是新資料庫的名稱。
資料庫的更改限制
您可以更改資料庫的大部分屬性,但請不要執行如下操作:
請勿將資料庫移動到錯誤的檔案路徑。
例如,若您執行如下命令並指定了錯誤的檔案路徑:
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'
常見報錯
通過原生SQLALTER DATABASE命令或SSMS圖形介面修改RDS SQL Server資料庫名稱報錯?
相關文檔
通過RDS控制台(建立資料庫、刪除資料庫)或API(CreateDatabase、DeleteDatabase)建立、刪除資料庫。
通過RDS控制台(修改字元集定序與時區)或API(DescribeCollationTimeZones)查看或修改系統字元集定序與時區。
通過RDS控制台(資料庫屬性管理)或API(ModifyDatabaseConfig)查看或修改資料庫中的各類屬性、手動收縮資料庫交易記錄或更新資料庫統計資訊。

