5

私は非常に単純だと信じていることをやろうとしています。データベースから取得している接続文字列があります。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データベース名を受け入れるようにする方法はありますか? これにアクセスできないため、データベース名を単純に変更することはできません。また、データベース名を変更することはできないと言われました。

4

3 に答える 3

1

接続文字列を引用符で囲んでみてください。アンダースコアを区切り文字として解釈していると思います。

使用方法に応じて、引用符または

"
于 2012-06-19T15:08:17.947 に答える
0

ウィザードを使用してエンティティ クラスを生成します。このようにして、app.config でエンコードされた接続文字列を取得します。

于 2012-06-19T19:33:17.447 に答える
0

SQL サーバー管理スタジオを介してデータベースに接続できますか?

試す

  1. ファイアウォールを無効にする
  2. IP アドレスの使用
  3. SQL Server インスタンス名を明示的に使用します。
于 2012-06-19T17:49:28.290 に答える