web-dev-qa-db-ja.com

localhost \ sqlserverを使用してデータベースに接続できません

そのようなフレーズに注意する必要があることはわかっていますが、突然、localhost\sqlexpressへのすべての接続が機能しなくなりました。 .\sqlexpress(local)\sqlexpressが機能するので、すべての接続文字列が前者の形式で定義されているチームプロジェクトに取り組んでいるという事実がなければ、これは大したことではありません。そして明らかに、それがもう機能しないことを受け入れるのに苦労しているので、いくつかのSQLServerバージョンの分析と再インストールに数時間を費やしました。 (そして、VS2010でdbプロジェクトを壊す途中なので、私も再インストールする必要がありました...)。

しかし、ここに詳細があります。すでに述べたように、私はlocalhost\sqlexpressに接続できませんでしたが、.\sqlexpressに接続できました。 SQL Server Managerを使用した場合の同じ症状、およびwcfサービスの展開と実行のための接続文字列。おかしなことに、localhostが機能するようにデフォルトインスタンスを解決します。

まず最初に、はい、SQL Serverが実行されています。念のため、TCP/IPを有効にして、ポートを1433に固定しましたが、TCP/IPが無効になっている同僚のマシンでは機能します。 (私が読んだ途中のどこかで、ネイティブSQLクライアントを使用するときに共有メモリを使用してlocalhostを解決できるので、それが彼のシステムで起こっていることだと思います。)

セットアップは、Windows 7Professional上の1つのSQLServer Express 2008R2インスタンスとVS2010のみです。

SQL Expressを起動するとエラーログが表示されます:

Server is listening on [ 'any' <ipv6> 1433].
Server is listening on [ 'any' <ipv4> 1433].

Netstatによると(抜粋):

TCP    0.0.0.0:1433           Machinenename:0             LISTENING
TCP    [::]:1433              Machinenename:0             LISTENING

ポート1433に127.0.0.1:1433とUDPがないことに注意してください

問題を診断するために、sqlcmdを使用して使用されているトランスポートを調べます。

1。localhost\sqlexpress

sqlcmd -Slocalhost\sqlexpress  -> Shared memory
sqlcmd -Stcp:localhost\sqlexpress ->  SQL Server Network Interfaces: Error Locating Server/Instance Specified

プロトコルとして共有メモリを指定しても、SQL Server ManagementStudioからlocalhost\sqlexpressに接続できません

2。localhost

sqlcmd -Slocalhost -> TCP
sqlcmd -Stcp:localhost -> TCP

SQL Server ManagementStudioからローカルホストに接続できます

.(ローカル)\ sqlexpress

sqlcmd -S(local)\sqlexpress  -> Shared memory
sqlcmd -Stcp:(local)\sqlexpress  ->  SQL Server Network Interfaces: Error Locating Server/Instance Specified

SQL Server Management Studioから(ローカル)\ sqlexpressに接続できます

だから私はここで迷子になっています。どんな助けでも大歓迎です。

8
Wullie

mS SQLで、[構成ツール]-> [SQLServer構成マネージャー]に移動します。[SQLServerネットワーク構成]を選択します->右側のウィンドウでプロトコルを選択してtcp/ipを有効にし、services.mscでサービスを再起動してから、localhost\sqlexpressへの接続を試みます。

5

SQLServer構成マネージャーの[SQLServerネットワーク構成] | [共有メモリ]で共有メモリが有効になっていることを確認しましたか。プロトコル?

「共有メモリ」プロトコルを無効にすると、「sqlcmd-S。\ sqlexpress」がタイムアウトします。これを有効にすると、コマンドは正常に機能します。

もう1つ考えてみましょう...ポート1434はSQLServer Discoveryサービスに使用されます。これにより、SQL ManagementStudioなどのプログラムはSQLServerがマシン上で実行されていることを検出できます。調査することがもう1つあります。

2
James L.

この問題が発生しました。何らかの理由で、このマシンでは、使用していたサーバー名(localhost\SQL2008_R2)をもう存在しないサーバーに転送するエイリアスが作成されていました。

エイリアスを削除すると、すべて機能しました。

エイリアスは、SQLServer構成マネージャーのツリーノードです。

SQL Server Configuration Manager Alias Node

0
Andrew Shepherd