起こったこと。
テスト環境構築のため、データベース(以下DB)をテスト版として設けた。
ExcelVBAからテスト版のDBへ接続しようとすると、「-2147467259:このログインで要求されたデータベース"xxx"を開けません。ログインに失敗しました。」と表示されて、処理が出来なかったため、対応開始。
環境
- SQL Server 2014
- Management Studio 2014(以下SSMS)
- Excel 2010
- ExcelとSQL ServerはADOを使用して接続。Windows認証を使用。
行なったこと。
1. DBのプロパティを比較
SSMSで、本番環境、テスト環境のDBのプロパティを比較してみた。
その結果、テスト環境のDBにはguestユーザーの権限がなかった。
2. 権限を追加
SSMSで、テスト環境のDBに、guestユーザーの権限を追加。
そして、権限を許可する項目は本番環境DBのそれと同じにした。
以下の8項目。
- 更新
- 削除
- 参照
- 実行
- 接続
- 選択
- 挿入
- 変更
許可をチェック→[OK]の後に再度プロパティを確認したところ、権限の許可者が「dbo」になっていた。
これは本番環境のDBも同様なのでOKと見なした。
結果。
ExcelVBAから該当処理が問題なく行なえるか実行したところ、全て処理出来るようになった。
疑問点
今回テスト環境のDBを作成した時、sa権限で実行した。その時にguestユーザーの権限付与も合わせて行なえるように出来たら、追加で権限付与する必要がなくなって良いなと思った。