ApsaraDB RDS for SQL Server インスタンスを作成した後、アプリケーションで使用するデータベースをインスタンスに作成する必要があります。このトピックでは、データベースを作成する方法と、ビジネス要件を満たすためにデータベースの数を計画する方法について説明します。
データベースの使用制限
データベース数
SQL Server 2008 R2 を実行するインスタンスの最大データベース数は 50 です。他の SQL Server バージョンを実行するインスタンスの場合、制限はインスタンスタイプに依存し、次のように計算されます:
-
RDS クラスター版 / RDS 高可用性版

CPU コア数の平方根を計算し、その結果を切り捨てて最も近い整数にし、50 を掛けます。最大データベース数は、この結果と 300 のうちの最小値です。たとえば、4 CPU コアと 8 GB のメモリを搭載した SQL Server 2016 Standard Edition を実行する RDS 高可用性版インスタンスは、最大 100 個のデータベースをサポートします。
-
RDS ベーシック版

CPU コア数の平方根を計算し、その結果を切り捨てて最も近い整数にし、100 を掛けます。最大データベース数は、この結果と 400 のうちの最小値です。たとえば、4 CPU コアと 8 GB のメモリを搭載した SQL Server 2019 Standard Edition を実行する RDS ベーシック版インスタンスは、最大 200 個のデータベースをサポートします。
説明
min 関数は 2 つの値のうち小さい方を返します。たとえば、min{100, 300} は 100 です。
データベースの作成
- RDSインスタンスにアクセスし、上部のリージョンを選択し、対象のRDSインスタンスのIDをクリックします。
左側のナビゲーションペインで、 をクリックします。
データベースの作成 をクリックし、以下のパラメーターを設定してから、作成 をクリックします。
パラメーター | 説明 |
[データベース (DB) 名] | データベースの名前を入力します。名前は 2~64 文字で、英字で始まり、英字または数字で終わる必要があります。使用できる文字は、大文字、小文字、数字、アンダースコア (_)、ハイフン (-) です。中国語文字はサポートされていません。 |
[サポートする文字セット] | データベースの文字セットを選択します。 |
[補足] | データベースの説明を入力します。説明は最大 256 文字です。 |
よくある質問
データベース作成時に Specified DB name already exists in the This instance. というエラーメッセージが返された場合の対処法
問題
ApsaraDB RDS for SQL Server インスタンスの [データベース] ページでデータベースを作成すると、エラーメッセージ Specified DB name already exists in the This instance. が返されます。エラーコードは InvalidDBName.Duplicate です。
原因
同じ名前のデータベースがインスタンスにすでに存在します。既存のデータベースと同じ名前のデータベースは作成できません。
また、ApsaraDB RDS for SQL Server インスタンスの [データベース] ページには、ONLINE ステータスのデータベースのみが表示されます。RESTORING、RECOVERING、OFFLINE など、ONLINE ステータスではないデータベースはコンソールに表示されないため、データベースが存在しないと誤認し、作成の失敗につながる可能性があります。
ソリューション
SSMS を使用して ApsaraDB RDS for SQL Server インスタンスに接続します。
次の SQL ステートメントを実行して、インスタンスにある非システムデータベースとその状態を照会します。
SELECT
[name] AS DatabaseName, -- データベースの名前
state_desc AS StateDescription, -- データベースの現在の状態 (ONLINE、OFFLINE、RECOVERING など)
recovery_model_desc AS RecoveryModel -- データベースの復旧モデル (SIMPLE、FULL など)
FROM
sys.databases
WHERE
database_id > 4; -- システムデータベースを除外
次のサンプル結果が返されます。同じ名前のデータベースが存在するかどうかを確認し、データベースの現在の状態を表示できます。
DatabaseName StateDescription RecoveryModel
jmdb ONLINE FULL
jmdb200 RECOVERING FULL
同じ名前のデータベースが存在するが、ONLINE 状態ではない場合は、次のシナリオに基づいて問題を解決します。
シナリオ 1:OSS からバックアップデータを復元する際に、データベースをオンラインにしないことを選択した場合
原因
OSS から ApsaraDB RDS for SQL Server インスタンスにバックアップデータを復元する際に、[データベースをオンラインにしない (追加の差分バックアップまたはログバックアップ用)] オプションを選択した場合、データベースは非 ONLINE 状態のままになります。
このオプションは、RDS コンソールの左側のナビゲーションペインにある [バックアップと復元] ページで [OSS バックアップデータを RDS に移行] をクリックすると表示される [インポートガイド] のステップ [3. データのインポート] にある [移行計画] セクションにあります。
解決策
引き続き増分バックアップファイルをアップロードする必要がある場合は、復元が完了した後、[バックアップデータのクラウド移行記録] タブでデータベースをオンラインにします。増分データを復元する必要がなくなった場合は、直接データベースをオンラインにできます。
この場合、[バックアップデータのクラウド移行履歴] タブでは、タスクステータスは [待機中]、タスクタイプは [データベースをオンラインにしない (追加の差分バックアップまたはログバックアップ用)]、タスクの説明は オンライン待機中 です。
データベースが不要になり、再作成する必要がある場合は、データベースをオンラインにしてから、データベースを削除し、再度データベースを作成できます。
シナリオ 2:ログ領域が満杯になったためにデータベースが RECOVERING 状態になる
原因
ログ領域が満杯になり、ログを書き込めません。その結果、データベースは RECOVERING 状態になります。インスタンスのエラーログを確認して、問題を確認できます。
3/16/2024 2:05:35 AM spid128 During undoing of a logged operation in database 'db_logistics', an error occurred at log record ID (1:88854:14712:2). Typically, the specific failure is logged previously as an error in...
3/16/2024 2:05:35 AM spid128 Error: 3314, Severity: 21, State: 3.
3/16/2024 2:05:35 AM spid128 The transaction log for database 'xxx' is full due to 'LOG_BACKUP'.
3/16/2024 2:05:35 AM spid128 Error: 9002, Severity: 17, State: 2.
3/16/2024 2:05:35 AM spid128 The transaction log for database 'xxx' is full due to 'LOG_BACKUP'.
解決策
インスタンスのストレージ領域が満杯でログ領域を拡張できない場合は、インスタンスのストレージ容量を拡張し、その後インスタンスを手動で再起動する必要があります。再起動後、データベースは RECOVERING プロセスを続行します。復旧が完了すると、データベースは ONLINE 状態に戻ります。
データベースのログファイルに拡張制限が設定されており、ログ領域は満杯だがインスタンスのストレージ領域は満杯でない場合は、ログファイルのサイズ制限を増やすだけで済みます。インスタンスを再起動する必要はありません。ログファイルのサイズ制限を調整するには、次の操作を実行します。
SQL Server Management Studio (SSMS) のオブジェクトエクスプローラーで、[jmdb]などのデータベースを右クリックし、[プロパティ]を選択します。
[データベースのプロパティ] ダイアログボックスの左側のナビゲーションペインで [ファイル] ページを選択します。[データベースファイル] テーブルで、ファイルの種類が LOG のログファイルを見つけ、[自動拡張/最大サイズ] 列の [...] ボタンをクリックして、ログファイルの自動拡張設定と最大サイズを調整します。
[jmdb_log の自動拡張の変更] ダイアログボックスで、[自動拡張を有効にする] を選択し、[ファイルの拡張] を [メガバイト単位] に設定して 64 などの増加値を入力し、[最大ファイルサイズ] を [制限値 (MB)] に設定して 2,097,152 (2 TB を示します) などの最大ファイルサイズを入力してから、[OK] をクリックします。
データベースが不要になり、再作成する必要がある場合は、データベースが ONLINE 状態になるのを待ってから、データベースを削除し、再度データベースを作成できます。
シナリオ 3:データベースが手動で OFFLINE 状態に設定される
原因
データベースが管理者によって手動で OFFLINE 状態に設定された可能性があります。
解決策
sp_rds_set_db_online ストアドプロシージャを使用して、データベースを ONLINE 状態に戻します。
USE master;
GO
EXEC sp_rds_set_db_online 'データベース名';
GO
データベースが不要になり、再作成する必要がある場合は、データベースが ONLINE 状態になるのを待ってから、データベースを削除し、再度データベースを作成できます。
データベース作成時に Due to the limit number you can't create a database というエラーメッセージが返された場合の対処法
ApsaraDB RDS for SQL Server データベースの名前に中国語文字を使用できますか?
いいえ、できません。データベース名に中国語文字を使用すると、互換性の問題、スクリプト解析の困難、移行のリスク、管理の複雑さを引き起こす可能性があります。ApsaraDB RDS for SQL Server では、データベース名は 2~64 文字で、英字で始まり、英字または数字で終わる必要があります。使用できる文字は、大文字、小文字、数字、アンダースコア (_)、ハイフン (-) のみです。これらの命名規則に従うことで、システムの安定性と保守性が確保されます。