このトピックでは、SQL コマンドを使用して ApsaraDB RDS for SQL Server インスタンスでデータベースを作成および削除する方法について説明します。 また、専用のストアドプロシージャを使用してデータベース名を変更する方法と、データベース管理中に禁止されているリスクの高い操作についても説明します。
前提条件
ApsaraDB RDS for SQL Server インスタンスは、SQL Server 2012 以降のバージョンを実行している必要があります。
データベースの作成
データベースを作成するには、次の文を実行します。
CREATE DATABASE TestDbRDS インスタンスでデータベースを作成すると、ファイルパスが自動的に生成されます。 ファイルパスを指定しないでください。
次の文を実行して、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. <!-- データベース [TestDb] にはバックアップセットがありません。 -->
-------------------------------------------------------------------------------------------------
Login User [Test11] has dropped database [TestDb] . <!-- ログインユーザー [Test11] がデータベース [TestDb] を削除しました。 -->データベース名の変更
ApsaraDB RDS for SQL Server は、sp_rds_modify_db_name ストアドプロシージャを提供して、データベース名を安全に変更します。 このストアドプロシージャは追加の承認を必要とせず、標準アカウントで実行できます。
T-SQL コマンド
sp_rds_modify_db_name
サポートされている RDS インスタンス
High Availability (HA) シリーズ
クラスタ版
ベーシックシリーズ
説明
このストアドプロシージャは、データベースの名前を変更するために使用されます。 RDS High-availability Edition または RDS Cluster Edition を実行している RDS インスタンスでデータベースの名前を変更すると、RDS インスタンスとそのセカンダリインスタンス間のレプリケーション構成が自動的に再構築されます。 再構築プロセス中に、RDS インスタンスのデータがバックアップおよびリストアされます。 データベースが大量のストレージを占有している場合は、RDS インスタンスの使用可能なストレージが十分にあることを確認してください。
使用方法
USE db
GO
EXEC sp_rds_modify_db_name 'db','new_db'
GO最初のパラメーターは、データベースの元の名前を指定します。
2 番目のパラメーターは、データベースの新しい名前を指定します。
データベース変更の制限
ほとんどのデータベース属性を変更できます。 以下の点に注意してください。
データベースを無効なファイルパスに移動しないでください。
たとえば、次の文を実行しますが、文に無効なファイルパスを指定します。
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 <!-- メッセージ 50000、レベル 16、状態 1、プロシージャ ******、行 152 --> The file path [ <!-- ファイルパス [ --> E:\KKKK\DDD\DATA\TestDb.mdf ] is invalid,please specify correct path folder [ E:\mmm\gggg\ ]. <!-- E:\KKKK\DDD\DATA\TestDb.mdf ] は無効です。正しいパスフォルダ [ E:\mmm\gggg\ ] を指定してください。 --> Msg 3609, Level 16, State 2, Line 2 <!-- メッセージ 3609、レベル 16、状態 2、行 2 --> The transaction ended in the trigger. The batch has been aborted. <!-- トリガーでトランザクションが終了しました。バッチは中止されました。 -->復元モデルを FULL 以外に設定しないでください。
たとえば、次の文を実行して復元モデルを SIMPLE に設定します。
ALTER DATABASE [TestDb] --[TestDb] is the database name. <!-- [TestDb] はデータベース名です。 --> SET RECOVERY SIMPLEこの操作により、データベースログチェーンが切断されます。 システムは復元モデルを FULL にリセットし、SIMPLE への変更を禁止し、次のエラーメッセージを返します。
Msg 50000, Level 16, State 1, Procedure ******, Line 46 <!-- メッセージ 50000、レベル 16、状態 1、プロシージャ ******、行 46 --> Login User [Test11] can't change database [TestDb] recovery model. <!-- ログインユーザー [Test11] はデータベース [TestDb] の復元モデルを変更できません。 --> Msg 3609, Level 16, State 2, Line 2 <!-- メッセージ 3609、レベル 16、状態 2、行 2 --> The transaction ended in the trigger. The batch has been aborted. <!-- トリガーでトランザクションが終了しました。バッチは中止されました。 -->重要ログがいっぱいの場合は、縮小のためにログチェーンを切り捨てることしかできません。 データベースの復元モデルを SIMPLE に変更しないことをお勧めします。 データベースの復元モデルを 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 <!-- メッセージ 5011、レベル 14、状態 9、行 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. <!-- ユーザーはデータベース 'TestDb' を変更する権限がありません。データベースが存在しないか、アクセスチェックを許可する状態ではありません。 --> Msg 5069, Level 16, State 1, Line 1 <!-- メッセージ 5069、レベル 16、状態 1、行 1 --> ALTER DATABASE statement failed. <!-- ALTER DATABASE 文が失敗しました。 -->データベースの状態を
OFFLINEからONLINEに変更するには、sp_rds_set_db_online ストアドプロシージャを実行します。EXEC sp_rds_set_db_online 'TestDb'
一般的なエラー
ネイティブ SQL の ALTER DATABASE コマンドまたは SSMS グラフィカルインターフェイスを使用して RDS SQL Server データベース名を変更するとエラーが発生しますか?
関連情報
ApsaraDB RDS コンソールでデータベースを作成または削除する方法の詳細については、「データベースの作成」および「データベースの削除」をご参照ください。 API を使用してこれらの操作を実行するには、「CreateDatabase」および「DeleteDatabase」をご参照ください。
ApsaraDB RDS コンソールで文字セットの照合順序とタイムゾーンを表示または変更する方法の詳細については、「文字セットの照合順序とタイムゾーンの変更」をご参照ください。 API を使用してこの操作を実行するには、「DescribeCollationTimeZones」をご参照ください。
ApsaraDB RDS コンソールでデータベースのプロパティを表示または変更したり、トランザクションログを手動で縮小したり、データベース統計を更新したりする方法の詳細については、「データベースプロパティの管理」をご参照ください。 API を使用してこれらの操作を実行するには、「ModifyDatabaseConfig」をご参照ください。

