私は非常に単純だと信じていることをやろうとしています。データベースから取得している接続文字列があります。SQL 接続の新しいインスタンスを作成すると (デバッグしてオブジェクトを確認すると)、db 接続文字列が適切に設定されているように見えます。ただし、表示されるエラー メッセージを見ると、データベース名のアンダースコアの後のすべての情報が削除されているように思えます。
コード例:
Database db = new SqlDatabase(ConnectionString); // Connection string appears correct
DbCommand dbCommand = db.GetStoredProcCommand("StoredProcName");
DataSet approverDataset = db.ExecuteDataSet(dbCommand); // when this executes, exception is generated
このコードを実行すると、次の例外メッセージが表示されます: The server principal "testdb_psidentity" is not able to access the database "testdb" under the current security context.
ここに私の接続文字列があります:
DataSource=testserver.com;Database=testdb_ps;Trusted_Connection=false;uid=testdb_psidentity;pwd=testpwd
これを次のように変更してみました:
DataSource=testserver.com;Database=[testdb_ps];Trusted_Connection=false;uid=testdb_psidentity;pwd=testpwd
そして、それはデータベースの完全な名前を取得しているように見えますが、名前にこれらの括弧を含むデータベースも探しているようです. このエラーが発生すると、ログインによって要求されたデータベース "[testdb_ps]" を開けません。ログインに失敗しました。ユーザー「testdb_psidentity」のログインに失敗しました。
ただし、SQL サーバー管理スタジオでそのログイン/パスワードを使用してデータベースへの接続をログに記録できます。
データベース名testdb_psデータベース名を受け入れるようにする方法はありますか? これにアクセスできないため、データベース名を単純に変更することはできません。また、データベース名を変更することはできないと言われました。