データを収集して SQL Server 接続の問題をトラブルシューティングする
この記事では、特定のカテゴリに基づいて関連する質問をすることで、SQL Server 接続の問題の根本原因を特定するのに役立ちます。 SQL Server 接続の問題のトラブルシューティングに推奨される前提条件とチェックリストに関する記事には、収集する最も重要な項目が含まれていますが、この記事の質問は、接続の問題の原因を絞り込んで効果的にトラブルシューティングするのに役立ちます。
注:
すべての質問がすべての問題に適用されるわけではありません。 ただし、これらの質問は、接続の問題のトラブルシューティング方法を検討するときに役立ちます。
この記事で提供されている情報を使用して、問題の正確な性質をゼロインできたら、エラーの種類については、「 SQL Server での一貫性のある認証の問題の概要 」を参照してください。
データの収集方法
データを収集するには、 問題ステップ レコーダー (PSR)、 ネットワーク トレース、 NETLOGON トレースなどのツールを使用できます。 このセクションでは、これらすべてのツールの組み合わせをインストールして構成する詳細な手順について説明します。
クライアント コンピューターとサーバー コンピューターの両方で、これらの手順を同時に実行します。 アプリケーションが 3 層または n 層のアーキテクチャの場合は、中間サーバーでもインストールを実行します。
影響を受けるすべてのコンピューターに WireShark をインストールするか、組み込みの
NETSH
コマンド (Windows 2008 以降のバージョン) を使用します。 再起動の必要はありません。次のコマンドを実行して、クライアントとすべてのサーバーで NETLOGON デバッグ ログを有効にします。
NLTEST /DBFLAG:2080FFFF
可能であれば、次のいずれかの手順を実行します。
- クライアント コンピューターを再起動します。
- ユーザーにログオフしてもう一度ログインするように依頼します。
- クライアント アプリケーションを閉じてもう一度開きます。
クライアント コンピューターで、 問題ステップ レコーダー (psr.exe) を起動し、[ レコードの開始] を選択します。
このツールは、問題の前にあるすべてのユーザーアクションを正確にキャプチャし、結果を .zip ファイルに保存します。
すべてのコンピューターでネットワーク キャプチャを開始します。
NETSH を使用している場合は、コマンドを実行します
NETSH TRACE START CAPTURE=YES TRACEFILE=C:\TEMP%computername%.ETL
(適切なファイル名またはパス名を使用します)。コマンドを実行して、すべてのコンピューターでドメイン ネーム システム (DNS) キャッシュを
IPCONFIG /FLUSHDNS
フラッシュします。コマンドを実行して、すべてのコンピューターで NETBIOS キャッシュを
NBTSTAT /RR
クリアします。コマンドを実行してクライアント Kerberos チケットを
KLIST purge
消去します。コマンドを実行して、各サーバーのチケットを
KLIST -li 0x3e7 purge
クリアします。注:
コマンドを入力します。 ハイフンが長い (em) ダッシュに変換される可能性があるため、コマンド ラインにコピーして貼り付けないでください。
KLIST
は大文字と小文字が区別されます。問題を再現します。
psr.exe 記録を停止します。
ネットワーク キャプチャを停止します。 わかりやすい名前を使用して、NETSH:
NETSH TRACE STOP
コマンドを実行して、記録されたファイルを保存します。 たとえば、ファイルの名前は SQLProd01.netmon.cap にすることができます。コマンド プロンプトが再び表示されるまで待ってから、ウィンドウを閉じます。 プロンプトが表示される前にコマンド プロンプト ウィンドウを閉じないでください。
NETLOGON ログを C:\windows\debug\netlogon.log にコピーし、ファイルにわかりやすい名前を付けます。 たとえば、 SQLProd01.netlogon.log。
コマンドを実行してログ記録を
NLTEST /DBFLAG:0x0
無効にします。
データを収集して問題を分類する
次の一連の質問は、問題が該当するカテゴリを見つけるのに役立つよう設計されているため、トラブルシューティングの正しい方向に進みます。 関連する質問の各ドロップダウンを選択します。
特定の質問に進む前に、SQL Server 接続に必要なすべての前提条件が満たされていることを確認してください。 前提条件の詳細については、「 SQL Server 接続の問題をトラブルシューティングするための推奨される前提条件とチェックリスト」を参照してください。
より広い観点の質問
- この問題はデータベース接続にのみ影響しますか、それとも Web とファイル共有の接続にも影響しますか? 多くの場合は、データベース サーバー上で発生するため、SQL Server チームに報告されます。 ただし、この問題がデータベースにまったく関連していない可能性があり、より一般的な Windows または Active Directory のサポートが必要になる場合があります。
- ユーザー ドメイン、クライアント ドメイン、またはサーバー ドメインが異なる場合、信頼関係は存在しますか? 外部、フォレスト、一方向、双方向、またはなしですか?
- すべてのリソースが同じドメイン内にある場合、接続は正しく機能しますか?
- 問題は断続的か定期的か、それとも一貫性がありますか?
- この問題は、複数のユーザーがアプリケーションを使用している場合にのみ発生しますか? より多くのユーザーがそれを使用している場合、それはより頻繁に発生しますか?
- この問題は、1 日の特定の時刻または特定の曜日にのみ発生しますか?
- この問題は、バックアップが作成されているか、データベースのインデックスが再作成されている場合にのみ発生しますか?
- この問題は複数のサーバーに影響しますか?
- この問題は、n ノード クラスター内の 1 つのノードにのみ影響しますか? はいの場合は、その特定のノードの再構築を検討する方が効率的な場合があります。
- この問題は、複数のクライアントのうち 1 つまたは 2 つのクライアントにのみ影響しますか? はいの場合は、おそらく再構築の方が効率的です。
- この問題は名前付きパイプにのみ影響し、TCP (またはその逆) には影響しませんか?
- この問題は、SQL Server ログインと TCP/IP を使用するときに発生しますか?
- 失敗したケースと比較できる作業ケースは存在しますか? システムの違い
クライアント コンピューター
次の質問を使用して、クライアント コンピューターのさまざまなコンポーネントに関するデータを収集します。 このデータは、問題を特定するのに役立つ場合があります。
オペレーティング システム名、エディション、バージョン (WinVer) とは
SQL Server ドライバーまたはプロバイダーの名前とバージョンは何ですか?
コンピューター名と IP アドレスは何ですか?
コンピューターのドメインの状態は何ですか? ドメインに参加している場合、ドメイン名は何ですか?
どのアプリケーションランタイム環境が使用されますか? たとえば、インターネット インフォメーション サービス (IIS)、Windows フォーム、Web Sphere、SQL Server Integration Services (SSIS) ジョブなどです。
どのアプリケーション言語が使用されますか?
接続文字列は何を使用しますか?
サーバーへの接続に使用される認証の種類は何ですか? たとえば、New Technology LAN Manager (NTLM)、Kerberos、SQL、Azure Active Directory (AAD) などです。
アプリケーションがサーバーまたはサービスの場合、バックエンド データベースにユーザー資格情報を委任しますか?
制約付き委任は使用されますか?
アプリケーション サービス アカウントとドメインとは
どの種類のサービスが使用されますか? 物理、仮想、またはクラウドですか? たとえば、IaaS、Web アプリ、Web ロール、Power BI などです。
クライアント ドライバーとは Java Database Connectivity (JDBC) ですか、それとも Linux または Mac で実行されますか?
注:
ワークフローは現在、より Windows 指向です。
この問題は、SQL Native Client 以降のドライバー (またはその逆) ではなく、または
Driver={SQL Server}
などのProvider=SQLOLEBD
レガシ プロバイダーにのみ影響しますか?この問題は、1 つのアプリケーションまたは複数のアプリケーションでのみ発生しますか?
ユニバーサル データ リンク (UDL) ファイルは、他の SQL Server ベースのサーバーに接続しようとすると失敗しますか、それとも問題があるサーバーのみに失敗しますか?
ユーザーは SQL Server ベースのサーバーにログインし、SQL Server Management Studio (SSMS) を使用して接続を試みますか?
この問題は、サーバーの NETBIOS 名を使用する場合にのみ発生し、完全修飾ドメイン名 (FQDN) (またはその逆) を使用する場合には発生しませんか? IP アドレスを使用して動作しますか?
Windows 10 Enterprise Edition を実行しているクライアントでは、Credential Guard 機能が有効になっていますか? はいの場合、完全な委任シナリオに影響する可能性があります。
ログ情報
ログ ファイルに関するデータを収集するには、次の質問を使用します。
- 呼び出し履歴の正確なエラー メッセージは何ですか?
- ログは SQL Server ERRORLOG ファイルと ERRORLOG.1 ファイルから収集されましたか?
- アプリケーション イベント ログはクライアントとサーバーから収集されましたか?
- クライアント アプリケーションのログ ファイルと構成ファイルは収集されましたか? たとえば、 web.config、rsreportserver.config、 *.config、または *.iniです。
- コンピューター、ルーターなどを表示するネットワークの視覚的表現はありますか?
新規または既存の問題
問題が最近開発されたかどうか、またはしばらくの間永続化されているかどうかを判断することを指します。
- 問題は常に存在していましたか (新しいインストール) か、最近壊れる前にアプリケーションが正しく機能しましたか?
- アプリケーションが正常に機能していた場合、環境にどのような変更が加えられましたか? たとえば、インストールされた更新プログラム、アップグレードされたドメイン コントローラー、ファイアウォール設定の変更、使用停止されたドメイン コントローラー、ドメイン内の別の OU への移動などです。
サーバー コンピューター
リンク サーバーの場合は、中間層サーバーとバックエンド サーバーの両方のサーバー情報を収集します。 IIS から SQL への委任の問題の場合は、 web.config や認証設定など、Web サーバー上の情報を収集します。
- オペレーティング システム名、エディション、バージョン (Winver) の名前は何ですか?
- データベースの名前とバージョンは何ですか?
- コンピューターの名前は何ですか?
- IP アドレスとは
- コンピューターがドメインに参加している場合のドメイン名は何ですか?
- SQL Server サービス アカウントとドメインとは
- SQL Server インスタンスの名前は何ですか?
- 有効になっているプロトコルはどれですか?
- サーバーがリッスンするポートはどれですか?
- サーバー パイプの名前は何ですか? この情報は、エラー ログにあります。
- 使用される環境の種類 物理、仮想、またはクラウドですか? たとえば、IaaS (Azure Virtual Machine (VM)内の SQL) や PaaS (Azure SQL Database、SQL Managed Instance (MI)) などです。
- データベースはスタンドアロン、クラスター化、ミラー化、または Always On を使用してデプロイされていますか?
- フェールオーバー パートナー名と IP アドレスとは
- 仮想クラスター名またはリスナー名とポートとは
- 仮想 IP またはリスナー IP はどれですか?
- データベースがインストールされているオペレーティング システムはどれですか? Windows、Linux、Mac ですか? これはデータ収集に影響する可能性があります。
- データベースの場所は何ですか? Azure に含まれますか?
- 最新の Service Pack と累積的な更新プログラムの観点から、サーバーの現在の状態は何ですか? 既に修正されている問題をデバッグしても意味がありません。
- トランスポート層セキュリティ (TLS) 1.2 をサポートするように SQL Server は最近アップグレードされましたか? クライアントも更新されましたか? TLS 1.0 がオフになっていますか?
- SQL Server サービスの現在の状態は何ですか? 実行されていますか?
- SQL Browser サービスの状態は何ですか? 実行されていますか?
- サービス アカウントに対する問題の特異性は何ですか? 別のサービス アカウントを使用してサーバーを実行すると、問題は解決されますか?
ユーザー情報
次のユーザーの詳細を収集します。
- ユーザーはクライアント コンピューターに直接ログインするか、リモートでアクセスしますか? たとえば、ユーザーはブラウザーを使用していますか?
- ユーザーは SQL エージェントなどのサービスですか? プロセス ID が使用されているか、保存されている資格情報が使用されていますか?
- クライアント アプリケーションへの接続に使用される認証の種類は何ですか? Windows、フォーム認証、または AAD ですか?
- ユーザーは統合セキュリティを使用してサーバーに接続しますか?
- ユーザー名とドメイン名は何ですか?
ユーザーがクライアント アプリケーションに対してリモートである場合は、次の詳細を収集します。
- コンピューター名と IP アドレスは何ですか?
- コンピューターはドメインに参加していますか? はいの場合、ドメイン名は何ですか?
- ユーザーは VPN またはプロキシ サーバー経由で接続していますか? いずれかの方法が直接接続されている場合、問題は発生しますか?
- ユーザーが Web サーバーに接続している場合、サーバーは負荷分散されますか?
- スティッキー セッションまたはセッション アフィニティが使用されていますか?
- ユーザーはターミナル サーバーまたはジャンプ ボックスにログインし、アプリケーションにアクセスしていますか?
- この問題は、特定の組織単位 (OU) のユーザーにのみ影響しますか?
- ユーザー、クライアント、またはサーバーを Active Directory の別の組織単位 (OU) に移動しましたか?
- この問題は管理者以外のユーザーにのみ影響しますか?
- この問題は、特定のドメイン内のユーザーのすべてまたは一部にのみ影響しますか?
関連項目
サードパーティの情報に関する免責事項
この資料に記載されているサードパーティ製品は、マイクロソフトと関連のない他社の製品です。 明示的か黙示的かにかかわらず、これらの製品のパフォーマンスや信頼性についてマイクロソフトはいかなる責任も負わないものとします。