web-dev-qa-db-ja.com

データベース接続が失敗したのはなぜですか?

最近、SQL Server 2012を使用してソフトウェアを開発しました。接続しようとすると、次のエラーメッセージが表示されます。

AAFI\SQLEXPRESSに接続できません

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

3
Af'faq

これは非常に一般的なエラーであり、文字通り何百万もの検索結果がオンラインで表示されます。一般的なトラブルシューティングの手順は次のとおりです。

  • SQL Serverサービスが実際に実行されていることを確認します([SQL Server構成マネージャー]> [SQL Serverサービス]>特定のインスタンスの状態を確認し、「実行中」と表示されていることを確認します。それ以外の場合は右クリック> [開始])。
  • SQL Server Browserサービスが実行されていることを確認します。これは、上記のように構成マネージャーで確認するか、コマンドラインからsc query sqlbrowserを使用して実行できます(実行されていない場合は、右クリックして[開始]または[net start sqlbrowserを実行します]コマンドラインから)。
  • 別のマシンに接続しようとしている場合(または何らかの理由でマシンの外部にルーティングするように強制する名前を使用している場合)、リモート接続を許可するようにサーバーが構成されていることを確認してください。これを修正するには、リモートデスクトップを使用してそのサーバーに接続し、これをローカルで実行します。

    EXEC sys.sp_configure N'remote access', 1;
    GO
    RECONFIGURE WITH OVERRIDE;
    

    もちろん、接続できないローカルインスタンスの場合、これを行うのは難しいかもしれません。そのため、サーバーと通信してこれを変更できるようになる前に、このリストの他の手順を使用してローカルに接続する必要があります。設定。

  • SQL Serverが実行されているポートが開いていること、およびTCP/IPが有効になっていることを確認します(たとえば、SQL Server Express Editionでは、デフォルトでリモート接続に名前付きパイプが必要です)。これは、[構成マネージャー]> [SQL Serverネットワーク構成]> [<インスタンス名>のプロトコル]> [TCP/IP]で確認できます。右クリックして、[プロパティ]、[IPアドレス]タブを下にスクロールし、(a)TCP/IPが有効になっていることを確認します。 (そうでない場合は、右クリックして[有効化]を選択し、名前付きパイプも有効化してみてください)、IPAll> TCP Dynamic PortsまたはTCPポート。動的ポートを使用している場合、そのポートは変更される可能性があり、SQLブラウザーが自動的に起動するように構成されていない場合は、次回の再起動時にここに戻る可能性があります。
  • サーバー名が正しいことを確認し、IPアドレス、単純なサーバー名、完全修飾ドメイン名を試してください。サーバーがローカルの場合は、サーバー名に加えてlocalhostおよび127.0.0.1を試してください。サーバーにtraceroute/tracertでき、実行中のポートにtelnetできることを確認してください。これらのホストのいずれかに接続でき、他のホストには接続できない場合は、接続文字列を変更するか、hostsファイルやDNSを変更するか、ネットワーク管理者に問い合わせてください。
  • インスタンス名が正しいことを確認してください。マシン名を入力しても、名前付きインスタンスに接続しようとしていることに気付かないことがよくあります。これにはserver_name_or_ip\SQLEXPRESSのような構文が必要です。SQLEXPRESSは一般的に使用されるインスタンス名で、 SQL Server Express Editionを実行している。
  • これらの方法のいずれかを使用して接続できない場合は、ファイアウォールの問題である可能性があります。どのポートを誰のために開くかを決定する必要があります(もちろん、SQL Serverは可能な限り外部トラフィックから保護する必要があります)が、これが問題かどうかを瞬時にテストすることができますファイアウォールを完全に無効にします。

これの多くは、ここでより詳細に文書化されています( Paul Whiteのwikiの投稿はここにあります ):

8
Aaron Bertrand