(GUIを使用して)データベースをオフラインにできますが、オンラインに戻すことはできません。サーバーの詳細は次のとおりです。
RDBMS:MS SQL 2016 Expressホスト:Amazon AWS/RDS無料利用枠
問題の詳細/履歴数か月前、Amazon AWSにdbインスタンスを作成し、作成時に 'master/admin'を作成しましたアカウントはAWS/RDSウェブページで設定されました。この「admin」アカウントを使用して、そのインスタンスにいくつかのデータベースを問題なく作成しました。
過去数か月間、私はこの「admin」アカウントを使用して、いくつかのデータベースを包含データベースに変更しました。これは、包含ユーザーをセットアップできるようにするためです。このサーバーインスタンスで同じ管理者アカウントを使用してこれを何回か問題なく実行しました。
昨夜、この管理者アカウントで新しいデータベースを作成しました。次に、この新しいデータベースを包含データベースとして設定しようとしたところ、プロセスが失敗しました。 「後でもう一度やり直してください」などのダイアログボックスのエラーメッセージが表示されます。
3回目の試行が失敗した後、データベースをオフラインにすることを決めました(SSMSのGUIを使用)。私は、この新しいデータベースに存在する可能性のある開いているプロセスまたは接続を強制的に閉じるためにこれを行いました。うまくいきました。ただし、オンラインに戻すことはできませんでした。 GUIとクエリを使用して試したところ、失敗し続けます。
次に、この「admin」アカウントに割り当てられているサーバーの役割を確認しました。 sysadminロールの一部ではありません。私が理解しているように、「sysadmin」ロールは、dbインスタンスに対して絶対に何でも実行できます。私の管理者アカウントは、Amazon AWSの社内DBAを対象としているため、このsysadminロールのものではないと考えています。 sysadminとして追加しようとしましたが、失敗します。
私の「admin」アカウントが問題であることを確認するために、別のデータベースをオフラインにしました(空です)。オフラインになりましたが、オンラインに戻ることもできません。
何が問題でしょうか?助けてください。私のスキルレベルは非常に低く、私は進んでいる間に学んでいることに注意してください。
サーバーログには、有用な情報は何も表示されません。スクリーンショットを添付しました。
1 :
正解です。管理者アカウントはsysadmin
ではなく、それほど強力ではないアカウントです。これは、AWSがすべてをこのインスタンスに実行すること、およびセキュリティの境界をエスケープすることを制限できるようにするために必要です。
管理者アカウントの一部として、データベースをオフラインに設定するアクセス権がありますが、データベースをオンラインに戻すにはsysadmin
が必要です(これはありません)。このアクセス許可の制限を回避するために、AWSはデータベースをオンラインにするためのストアドプロシージャを提供しています。 rdsadmin
データベースのrds_set_database_online
プロシージャを使用する必要があります
EXEC rdsadmin.dbo.rds_set_database_online 'MyOfflineDatabase';
この手順は、AWS here によって完全に文書化されています。
同様に、sysadmin
が必要なため、RDS SQL Serverではxp_readerrorlog
を使用できません。代わりに、AWSはストアドプロシージャrds_read_error_log
を提供しています
EXEC rdsadmin.dbo.rds_read_error_log;
この手順は、AWS here によって完全に文書化されています。