2012-06-19 19 views
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 

Iは、次の例外メッセージで迎えています: サーバープリンシパル「testdb_psidentityは」現在のセキュリティの下でのデータベース「TESTDB」にアクセスすることができませんコンテキスト

は、ここに私の接続文字列です:

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 Server管理スタジオでそのログイン/パスワードを使用してデータベースに接続することができます。

私はそれがデータベース名testdb_psデータベース名を受け入れることができる任意の方法?私はこれにアクセスできないのでデータベース名を変更することはできません。データベース名の変更は単に起こらないと言われました。

+0

"testdb_psidentity"にデータベースへの接続/実行権限がありますか?もしあなたがそれについて確かでないなら、あなたはそれをチェックするかもしれません - >データベースを右クリック - >プロパティ - >権限 - >ユーザーを選択し、明示的なタブの下にチェック... – NiK

+0

悲しいことに、 DB、私はこれを見るためのアクセス権がありません。 –

+0

しかし、[testserver.com]や[testserver]。[com]という構文でデータソースを入れてみてください。そして、あなたはソースの名前がtestserver.com(testserverではなく)であると確信しています。 SMSS – Paparazzi

答えて

1

接続文字列を引用符で囲むことができます。アンダースコアを区切り文字として解釈していると思います。あなたはそれが引用符や

" 
+0

あなたの見積もりはうんざりですか?どういう意味ですか?私は文字列変数として使用しようとしました。私はそれをコーディングすることを試みたことはありませんが、それは一般的に私たちのコーディング標準では眉をひそめています。 –

+0

通常、接続文字列はweb.configファイルまたはapp.configファイルに格納されます。これはなぜ私たちが本当に '_'文字に問題がないのかということです。データベースから接続文字列を取得する必要がある場合は、最初に文字列に書き出して、その文字列を送信してみてください。文字を入力するだけではできない場合は、 '" 'あなたがそれを必要とすべきではないC#の文字列リテラルを行う –

+0

ちょっとした提案ですが、このデータベースがしばらくありましたら、他のアプリがそれを使用していると思いますか?もしそうなら、あなたは彼らがそれについてどう見ているか見ることができました。 –

0

を使用して使用する方法に応じて

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

明示的にSQL Serverのインスタンス名を使用してIPアドレス

  • を使用して
  • ファイアウォールを無効に

    1. を試してみてください。
  • 0

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

    関連する問題