このトピックでは、SQL文を使用してApsaraDB RDS for SQL Serverインスタンスでデータベースを作成および管理する方法について説明します。 このトピックでは、データベースを管理するときに許可されない特定の操作についても説明します。
前提条件
RDSインスタンスはSQL Server 2012以降で実行されます。
データベースの作成
次のステートメントを実行して、データベースを作成します。
データベースの作成TestDb
RDSインスタンスにデータベースを作成すると、システムは自動的にファイルパスを生成します。 ファイルパスを指定しないでください。
次のステートメントを実行して、SQL Serverインスタンスのすべてのデータベースのデータファイルとログファイルに関するパス情報を照会できます。
SELECT db_name(database_id), physical_name
FROM sys.master_files;
データベースの削除
次のステートメントを実行して、データベースを削除します。
ドロップデータベース [TestDb]
データベースを削除する前にデータベースをバックアップしない場合、システムは次のエラーメッセージを表示します。
ドロップデータベース [TestDb]
-------------------------------------------------------------------------------------------------
Kindly reminder:
your database [TestDb] does not exist any backup set.
-------------------------------------------------------------------------------------------------
ログインユーザー [Test11] がデータベース [TestDb] を削除しました。
データベースを変更するための使用方法の注意
ほとんどのデータベース属性を変更できます。 次の点に注意してください。
データベースに不正なファイルパスを指定しないでください。
たとえば、次のステートメントを実行し、ステートメントに無効なファイルパスを指定します。
ALTER DATABASE [TestDb]MODIFY FILE( NAME = N'TestDb' 、FILENAME = N'E:\KKKK\DDD\DATA\TestDb.mdf' )
すると、次のエラーメッセージが表示されます。
Msg 50000、レベル16、状態1、手順 ****** 、ライン152 ファイルパス [ E:\KKKK\DDD\DATA\TestDb.mdfが無効です。正しいパスフォルダ [E:\mmm\gggg\ ] を指定してください。 Msg 3609、レベル16、州2、ライン2 トランザクションはトリガーで終了しました。 バッチは中止されました。
リカバリモデルをFULL以外のモデルに設定しないでください。
たとえば、次のステートメントを実行して、復旧モデルをSIMPLEに設定します。
ALTER DATABASE [TestDb] --[TestDb] はデータベース名を指定します。 セット回復シンプル
データベースログチェーンが切断されています。 データベースの復旧モデルをSIMPLEに設定できず、復旧モデルをFULLにリセットします。 すると、次のエラーメッセージが表示されます。
Msg 50000、レベル16、州1、手順 ****** 、行46 ログインユーザー [Test11] はデータベース [TestDb] 復旧モデルを変更できません。 Msg 3609、レベル16、州2、ライン2 トランザクションはトリガーで終了しました。 バッチは中止されました。
重要ログがいっぱいの場合、縮小のためにログチェーンを切り捨てることしかできません。 データベースの復旧モデルをSIMPLEに変更しないことを推奨します。 データベースの復旧モデルをSIMPLEに変更すると、データベースが属するRDSインスタンスのバックアップチェーンが切断され、バックアップチェーンが切断された時点で実行されていたすべての復元タスクが失敗します。 緊急時にデータベースの復旧モードをSIMPLEに変更し、データベースのログチェーンを切り捨てる必要がある場合は、上記のリスクを理解し、責任を負う必要があります。 上記のステートメントを実行すると、表示されたエラーメッセージを無視でき、データベースのログチェーンが切断されます。
データベースがOFFLINE状態の場合、SQL文を実行してデータベースのステータスをONLINEに変更しないでください。
たとえば、次のステートメントを実行して、データベースのステータスをオフラインからオンラインに変更します。
USE [マスター] GO --set offline --ALTER DATABASE [TestDb] --SET OFFLINE --WITH ROLLBACK AFTER 0 ALTER DATABASE [TestDb] セットオンライン
すると、次のエラーメッセージが表示されます。
Msg 5011、レベル14、州9、ライン1 ユーザーにデータベース 'TestDb' を変更する権限がない、データベースが存在しない、またはデータベースがアクセスチェックを許可する状態にない。 Msg 5069、レベル16、州1、ライン1 ALTER DATABASEステートメントに失敗しました。
データベースのステータスをオフラインからオンラインに変更する場合は、sp_rds_set_db_ONLINEストアドプロシージャを使用できます。
EXEC sp_rds_set_db_online 'TestDb'
次に何をすべきか
ApsaraDB RDSコンソールで、またはAPI操作を呼び出してデータベースを作成または削除します。 詳細については、以下のトピックをご参照ください。
API操作: CreateDatabaseまたはDeleteDatabase
ApsaraDB RDSコンソールで、またはAPI操作を呼び出して、文字セットの照合順序とデータベースのタイムゾーンを変更します。 詳細については、以下のトピックをご参照ください。
ApsaraDB RDSコンソール: システムデータベースの文字セットの照合順序とタイムゾーンの変更
API操作: DescribeCollationTimeZones