SQL Server ユーティリティのトラブルシューティング

SQL Server ユーティリティのトラブルシューティングの項目としては、UCP を使用した SQL Server インスタンスの登録処理の失敗の解決、データ収集の失敗 (UCP のマネージ インスタンスのリスト ビューで灰色のアイコンが表示される) に対するトラブルシューティング、パフォーマンス ボトルネックの緩和、リソースの正常性に関する問題の解決などがあります。SQL Server UCP が検出したリソースの正常性に関する問題を緩和する方法の詳細については、「SQL Server のリソース正常性のトラブルシューティング (SQL Server ユーティリティ)」を参照してください。

SQL Server インスタンスを SQL Server ユーティリティに登録する処理の失敗

登録する SQL Server インスタンスに SQL Server 認証を使用して接続し、UCP があるドメインとは異なる Active Directory ドメインに属するプロキシ アカウントを指定した場合、インスタンスの検証には成功しますが、次のエラー メッセージが表示されて登録処理に失敗します。

An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)

Additional information: Could not obtain information about Windows NT group/user '<DomainName\AccountName>', error code 0x5. (Microsoft SQL Server, Error: 15404)

この問題は、次のようなシナリオで発生します。

  1. UCP は "Domain_1" のメンバーです。

  2. 一方向のドメイン信頼関係が存在します。つまり、"Domain_1" は "Domain_2" から信頼されていませんが、"Domain_2" は "Domain_1" から信頼されています。

  3. SQL Server ユーティリティに登録する SQL Server インスタンスは、"Domain_1" のメンバーでもあります。

  4. 登録処理中に、登録する SQL Server インスタンスに "sa" を使用して接続します。"Domain_2" からのプロキシ アカウントを指定します。

  5. 検証に成功しますが、登録に失敗します。

この問題を回避するには、上の例の場合、SQL Server ユーティリティに登録する SQL Server インスタンスに "sa" を使用して接続し、"Domain_1" からのプロキシ アカウントを指定します。

WMI 検証の失敗

SQL Server インスタンスで WMI が正しく構成されていない場合は、UCP の作成操作とマネージ インスタンスの登録操作で警告が表示されますが、操作はブロックされません。また、SQL Server エージェントが目的の WMI クラスに対する権限を持たないように SQL Server エージェント アカウントの構成を変更した場合、影響を受ける SQL Server のマネージ インスタンスでデータ収集を行うと UCP へのアップロードに失敗します。この結果、UCP に灰色のアイコンが表示されます。

データ収集が失敗した結果、影響を受ける SQL Server のマネージ インスタンスの UCP リスト ビューに灰色の状態アイコンが表示されます。SQL Server のマネージ インスタンスのジョブ履歴には、sysutility_mi_collect_and_upload がステップ 2 (PowerShell スクリプトから収集されたデータのステージング) で失敗したことが示されます。

エラー メッセージの要約は次のとおりです。

シェル変数 "ErrorActionPreference" が Stop に設定されているため、コマンドの実行が停止しました: アクセスが拒否されました。

エラー: <日時 (MM/DD/YYYY HH:MM:SS)>: cpu プロパティの収集中に例外が検出されました。WMI クエリに失敗した可能性があります。警告。

この問題を解決するには、次の構成設定を確認します。

  • Windows Server 2003 上で、SQL Server エージェント サービスは SQL Server のマネージ インスタンスの Windows Performance Monitoring グループに属している必要があります。

  • SQL Server のマネージ インスタンス上で、WMI サービスが有効になっており、構成されている必要があります。

  • SQL Server のマネージ インスタンス上で、WMI リポジトリが破損している可能性があります。

  • SQL Server のマネージ インスタンス上で、パフォーマンス ライブラリが欠落または破損している可能性があります。

指定した SQL Server インスタンスが UCP にデータを報告するように正しく構成されていることを検証するには、指定した SQL Server インスタンスで次のクラスが使用可能であり、SQL Server エージェント サービス アカウントからこれらのクラスにアクセスできるかどうかを確認します。

  • Win32_MountPoint

  • Win32_PerfRawData_PerfProc_Process

  • Win32_PerfRawData_PerfOS_Processor

  • Win32_Processor

  • Win32_Volume

  • Win32_LogicalDisk

各クラスで Get-WmiObject PowerShell コマンドレットを使用して、各クラスにアクセスできるかどうかを確認します。SQL Server のマネージ インスタンスで、次のコマンドレットを実行します。

Get-WmiObject Win32_MountPoint -ErrorAction Stop | Out-Null
Get-WmiObject Win32_PerfRawData_PerfProc_Process -ErrorAction Stop| Out-Null
Get-WmiObject Win32_PerfRawData_PerfOS_Processor -ErrorAction Stop | Out-Null
Get-WmiObject Win32_Processor -ErrorAction Stop | Out-Null
Get-WmiObject Win32_Volume -ErrorAction Stop | Out-Null
Get-WmiObject Win32_LogicalDisk -ErrorAction Stop | Out-Null

Get-WmiObject Win32_MountPoint -ErrorAction Stop | Out-Null
Get-WmiObject Win32_PerfRawData_PerfProc_Process -ErrorAction Stop| Out-Null
Get-WmiObject Win32_PerfRawData_PerfOS_Processor -ErrorAction Stop | Out-Null
Get-WmiObject Win32_Processor -ErrorAction Stop | Out-Null
Get-WmiObject Win32_Volume -ErrorAction Stop | Out-Null
Get-WmiObject Win32_LogicalDisk -ErrorAction Stop | Out-Null

WMI のトラブルシューティングの詳細については、「WMI のトラブルシューティング」を参照してください。SQL Server ユーティリティのこれらの操作におけるクエリはローカルで実行されるので、DCOM およびリモート トラブルシューティングの内容は適用されません。

データ収集の失敗

SQL Server ユーティリティのデータ収集イベントが失敗した場合は、次の可能性を検討してください。

  • SQL Server のマネージ インスタンスの "ユーティリティ情報" コレクション セットのプロパティを変更しないでください。データ コレクションはユーティリティ エージェント ジョブで管理されるため、データ コレクションを手動で有効または無効にしないでください。

  • WMI 検証に失敗したか、この機能がサポートされていません。詳細については、このトピックの前半の「WMI 検証の失敗」を参照してください。

  • SQL Server ユーティリティのビューポイントのデータは自動的に更新されないため、マネージ インスタンスのリスト ビューのデータを手動で更新してください。データを更新するには、ユーティリティ エクスプローラーのナビゲーション ウィンドウで [マネージ インスタンス] ノードを右クリックして [更新] をクリックするか、リスト ビューで SQL Server インスタンス名を右クリックして [更新] をクリックします。SQL Server インスタンスが UCP に登録された後、ユーティリティ エクスプローラーのコンテンツ ウィンドウ内のダッシュボードとビューポイントに最初に表示されるまでに最大 30 分かかる場合があります。

  • SQL Server 構成マネージャーを使用して、SQL Server インスタンスが実行されていることを確認します。

  • データ コレクションまたはデータ アップロードがタイムアウトの問題で失敗する場合は、MSDB データベースの dbo.fn_sysutility_mi_get_collect_script() 関数を更新します。具体的には、"Invoke-BulkCopyCommand()" 関数に次の行を追加します。

    $bulkCopy.BulkCopyTimeout=180
    
    $bulkCopy.BulkCopyTimeout=180
    

    タイムアウトの既定値は 30 秒です。

  • SQL Server のインスタンスがクラスター化されていない場合は、SQL Server エージェント サービスが実行されていることと、このサービスが UCP、および SQL Server のマネージ インスタンスで自動的に開始するように設定されていることを確認します。

  • SQL Server のマネージ インスタンスでデータ収集を実行するために有効なアカウントが使用されていることを確認します。たとえば、パスワードの有効期限が切れている可能性があります。プロキシ パスワードの有効期限が切れている場合は、次のように、SSMS でパスワード資格情報を更新します。

    1. SSMS のオブジェクト エクスプローラーで、[セキュリティ] ノードを展開し、[資格情報] ノードを展開します。

    2. [UtilityAgentProxyCredential_<GUID>] を右クリックし、[プロパティ] をクリックします。

    3. [資格情報のプロパティ] ダイアログ ボックスで、必要に応じて UtilityAgentProxyCredential_<GUID> 資格情報を更新します。

    4. [OK] をクリックして変更を確認します。

  • TCP/IP は、UCP と SQL Server のマネージ インスタンスで有効にしておく必要があります。TCP/IP は、SQL Server 構成マネージャーを使用して有効にします。

  • UCP の SQL Server Browser サービスを開始して、自動的に開始するように構成する必要があります。組織の方針で SQL Server Browser サービスを使用できない場合は、次の手順を実行して、SQL Server のマネージ インスタンスから UCP に接続できるようにします。

    1. SQL Server のマネージ インスタンス上の Windows タスク バーで、[スタート] ボタンをクリックし、[ファイル名を指定して実行] をクリックします。

    2. 該当するボックスに「cliconfg.exe」と入力し、[OK] をクリックします。

    3. "SQL クライアント設定ユーティリティ EXE" の起動を許可するように求めるメッセージが表示されたら、[続行] をクリックします。

    4. [SQL クライアント設定ユーティリティ] ダイアログ ボックスで、[別名] タブをクリックし、[追加] をクリックします。

    5. [ネットワーク ライブラリ設定の追加] ダイアログ ボックスで、次の操作を行います。

    6. ネットワーク ライブラリの一覧で、[TCP/IP] を指定します。

    7. [サーバー別名] ボックスに、UCP の ComputerName\InstanceName を指定します。

    8. [サーバー名] ボックスに、UCP の ComputerName を指定します。

    9. [ポートを動的に決定する] チェック ボックスをオフにします。

    10. [ポート番号] ボックスに、UCP がリッスンしているポート番号を指定します。

    11. [OK] をクリックすると変更が保存されます。

    12. SQL Server Browser サービスが無効になっている UCP に接続する、SQL Server のマネージ インスタンスごとに、この手順を繰り返します。

  • SQL Server のマネージ インスタンスがネットワークに接続されていることを確認します。

  • SQL Server のマネージ インスタンス上に、名前が同じでも大文字と小文字の区別に関する設定が異なるデータベースがある場合は、データベースとそのビューポイントが正しく識別されず、データ収集に失敗することがあります。たとえば、"MYDATABASE" という名前のデータベースで、実際には "MyDatabase" という名前のデータベースの正常性状態が示される場合があります。この場合、エラーにはなりません。データ収集の失敗は、データベース ファイルやファイル グループの名前など、UCP に表示される他のオブジェクトの大文字と小文字の不一致から発生することもあります。

  • SQL Server のマネージ インスタンスが Windows Server 2003 コンピューター上でホストされている場合、SQL Server エージェント サービス アカウントは、Performance Monitor Users セキュリティ グループまたはローカルの Administrators グループに属している必要があります。属していない場合は、アクセス拒否エラーが発生してデータ収集が失敗します。SQL Server エージェント サービス アカウントを Performance Monitor Users セキュリティ グループに追加するには、次の手順を実行します。

    1. [コンピューターの管理] を開き、[ローカル ユーザーとグループ][グループ] の順に展開します。

    2. [Performance Monitor Users] を右クリックし、[グループに追加] をクリックします。

    3. [追加] をクリックします。

    4. SQL Server Agent サービスを実行しているアカウントを入力し、[OK] をクリックします。

    5. ユーザーをこのグループに追加する前に SQL Server インスタンスが既に UCP に登録されている場合は、SQL Server エージェント サービスを再起動します。