SQL Server SEを実行するRDSインスタンスを作成しました。これにより、リモートデスクトップアクセスが許可されないため、Windows Server 2012ベースを実行するEC2インスタンスもあり、SQL Server Management Studioをインストールしており、接続してログインできますマスターユーザーとパスワード。
データベースの.bakファイルを復元したい。そこで、SQL Server管理スタジオを使用して、[データベース]-> [データベースの復元]オプションを選択しました。バックアップファイルとして[ファイル]を選択し、[追加]をクリックします。 [追加]をクリックすると、次のエラーがスローされます。
Transact-SQLステートメントまたはバッチの実行中に例外が発生しました。 (Microsoft.SqlServer.ConnectionInfo)EXECUTE権限がオブジェクト 'xp_fixeddrives'、データベース 'mssqlsystemresource'、スキーマ 'sys'で拒否されました。
回答を求めてインターネットを調べたところ、マスターユーザーにsysadminロールを付与するよう提案された人がいました。それを実行しようとすると、「ユーザーが存在しないか、それを実行する権限がありません」というエラーが表示されます。
問題を解決する方法についてのアイデアが不足しています。どんな助けでも大歓迎です。
この問題は、AWS RDSアクセス許可が原因で発生します。
復元中にファイルからの復元を選択すると、Microsoft SSMSはデータベースが実行されている物理的な場所を検索します。ただし、AWS RDSは、RDSインスタンスへのファイルレベルのアクセスを取得しないように設計されています。代わりに、エンドポイントとポートを取得して接続します。
詳細については、Amazon Relational Database Service(RDS)ユーザーガイドの SQL Serverデータベースのインポートとエクスポート を参照してください。
Rdsで実行できるストアドプロシージャがあります。
EXEC rds_backup_database 'DBName','.bak file path','','0'
EXEC rds_restore_database 'DBName','.bak file path',''
ファイルパスはS3を使用します。
オペレーションのコンテキストを追加するだけです。
RDSインスタンスでは、ec2の場合のように基盤となるファイルシステムにアクセスできないため、s3バケットを使用する必要があります。
詳細については、こちらをご覧ください:- http://docs.aws.Amazon.com/AmazonRDS/latest/UserGuide/SQLServer.Procedural.Importing.html