3

これが Web で最も多く見られる質問である場合は申し訳ありませんが、今度は私の番です。MS Sql Server 2008 の IIS 7 で asp.net mvc アプリを公開しようとしています。Windows Server 2008 仮想マシンを使用しています。次の古典的なエラーが発生します。

SQL Server への接続を確立中に、ネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないか、アクセスできませんでした。インスタンス名が正しいこと、および SQL Server がリモート接続を許可するように構成されていることを確認してください。(プロバイダー: SQL ネットワーク インターフェイス、エラー: 26 - 指定されたサーバー/インスタンスの検索中にエラーが発生しました)

SQLServer で、[リモート接続を許可する] がオンになっています。私の接続文字列は次のとおりです。

データ ソース=.\MSSQLSERVER;初期カタログ=mydbname;ユーザー ID=sa;パスワード=mypassword

ユーザー名/パスワードなしで「統合セキュリティ= true」も試しました。インストールされている SQLServer のインスタンスは 1 つだけです。Web ページにローカルおよびリモートでアクセスしようとしました。仮想マシンにアクティブなファイアウォールがありません。

4

6 に答える 6

3

SQL Server 構成ツールで TCP/IP がトランスポートとして設定されていることを確認してください。

于 2009-02-13T16:51:51.753 に答える
3

試してくれてありがとう。解決策を見つけましたが、それは私が提供するのを忘れていた情報に関連しています。これらのことについて、私と同じくらい新しい人に役立つことを願っています。

私は NHibernate を使用していますが、接続文字列は実際には nhibernate.cfg.xml ファイルにあります。web.config ファイル内のものは、実際にはさまざまなプロバイダー (ユーザー/ロール) によって使用されます。NH構成ファイルから接続文字列を削除することで修正しました。私は今それを取得します:

string connectionString = ConfigurationManager.
ConnectionStrings["myConnectString"].ConnectionString;

そして、NHで次のように設定しました:

Configuration cfg = new Configuration();
cfg.Configure(cfgFile);
cfg.SetProperty(NHibernate.Cfg.Environment.ConnectionString, connectionString);

今私は得る:

ログインで要求されたデータベース「mydb」を開けません。ログインに失敗しました。ユーザー 'NT AUTHORITY\NETWORK SERVICE' のログインに失敗しました。

しかし、これは別の話です。答えが見つからない場合は、別の質問に答えてください。

PS:「。」を使用する必要がありました。それ以外の場合はサーバー名として .\MSSQLSERVER は、「無効な接続文字列」という新しいエラーを生成していました。ヒントについては、Thx Ian と Jared に感謝します。

于 2009-02-13T17:24:07.480 に答える
1

ロバートが述べたように、試してください:

ConnectionString="Data Source=(LOCAL)\MSSQLSERVER;Initial Catalog=mydbname;User ID=sa;Password=mypassword"

接続文字列で大文字と小文字が区別されるかどうかはわかりませんが、「ID」ではなく「Id」が使用されていることに気付きました。

編集: \MSSQLSERVER が必要かどうかわかりませんか?

于 2009-02-13T17:01:55.613 に答える
1

SQL の名前付きインスタンスだと確信していますか?

試す

データ ソース=.;初期カタログ=mydbname;ユーザー ID=sa;パスワード=mypassword

アップデート:

このサイトから

次のことを試しましたか:

  • サーバー マシンが到達可能であることを確認します。たとえば、DNS が正しく解決されていること、サーバーに ping を実行できることなどです (常に正しいとは限りません)。
  • サーバーで SQL Browser サービスが実行されていることを確認します。
  • サーバーでファイアウォールが有効になっている場合は、sqlbrowser.exe および/または UDP ポート 1434 を例外にする必要があります。
于 2009-02-13T17:03:12.223 に答える
1

それはWeb構成からの実際のデータソース行ですか?

その場合は、もちろん引用符で囲む必要があります。安全のために ; を追加してください。最後に、それがインスタンスの実際の名前であることを確認すると、Windows サービスでインスタンス名を確認できます。

localhost代わりに代用してみ.てください。接続文字列の資格情報を使用して、SQL Server Management Studio から接続できますか?

于 2009-02-13T16:53:49.173 に答える