web-dev-qa-db-ja.com

DMV sys.dm_os_performance_countersのクエリでゼロ行が返される

サーバーのビューステート権限を持つSYSADMINロールを持つSQL Server 2014 Standard Edition (RTM)のユーザーがいますが、DMVを実行するとsys.dm_os_performance_countersレコードを返しません。

アクセス許可の何が問題になっていますか?

enter image description here

@@ Versionの出力:

Microsoft SQL Server 2014-12.0.2000.8(X64)Feb 20 2014 20:04:26 Copyright(c)Microsoft Corporation Standard Edition(64-bit)on Windows NT 6.3(Build 9600:)(Hypervisor)

9
AA.SC

問題のユーザーがView Server Stateを持っていると確信している場合(スクリーンショットのように見えます)。

次に、以前にいくつかの理由があります msdnブログに入力してください 範囲:

  1. SQL Serverのインストール中にセットアップされたパフォーマンスオブジェクトとカウンターが失敗しました。
  2. 64ビットプラットフォームと32ビットプラットフォームの混合。
  3. レジストリのアクセス許可が歪んでいる

これを解決するには、別のスタック交換ポストで パフォーマンスカウンターを再インストールするためのガイドライン で概説されているのと同じ手順を使用できます。

管理者特権のコマンドプロンプトを使用して、次の手順を実行します。

  1. 修正するSQL ServerインスタンスのBINNディレクトリへのパスを変更します。
    (例:C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\Binn
  2. 実行unlodctr <<REGISTERED SERVER NAME>>
    例:unlodctr MSSQL$SQL2008またはSQLAgent$SQL2008 ...
  3. 実行lodctr /T:<<perf-sql* matching the counters you desire to load>>
    例:SQLAgentの場合はperf-MSSQL$SQL2008sqlctr.iniまたはperf-SQLAgent$SQL2008sqlagtctr.ini/Tは、SQL Serverパフォーマンスカウンタープロバイダーを信頼できるプロバイダーとしてロードするために重要です。
  4. リモートレジストリサービスを循環させます。
    net stop "Remote Registry"、次にnet start "Remote Registry"
  5. winmgmt /resyncperfctr "<<PID>>"を使用してWMI同期を強制する
    PIDはWinPriv.exeのプロセスIDです(これはタスクマネージャから取得できます)

以下も必要になる場合があります。

  • 正しいセキュリティ権限がHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009に付与されていることを確認してください
    レジストリキー:

    1. 作成者所有者アカウントにフルコントロールアクセス許可を付与します。
    2. Administratorsアカウントにフルコントロールのアクセス許可を付与します。
    3. そのボックス/ノードのSQL管理者に読み取り権限を付与します。
    4. システムアカウントにフルコントロールアクセス許可を付与する
4
Reaces