1

SQL Server 2008 R2 で DMV をクエリしようとしています。

このサーバーには、histrxOpenLinkという 2 つのユーザー データベースがあります。名前が正しいことを証明するには:

select db_id('histrx') -- Returns 5
select db_id('OpenLink') -- Returns 7

次のクエリを実行してhistrxデータベースのエントリを選択すると、結果セットに 25 行が含まれます。

select top 25 
    total_worker_time/execution_count as avg_worker_time,
    total_logical_reads/execution_count as avg_logical_reads,
    db_name(s.dbid) as [db_name],
    object_name(s.objectid, s.dbid) as [object_name],
    execution_count,
    plan_generation_num,
    last_execution_time,
    creation_time,
    [text],
    p.query_plan
from
    sys.dm_exec_query_stats qs
    CROSS APPLY sys.dm_exec_sql_text(qs.plan_handle) s
    CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) p
where
    db_name(s.dbid) = 'histrx'
order by
    avg_logical_reads desc

次にwhere句を次のように変更すると、行は返されません。

where
    db_name(s.dbid) = 'OpenLink'

OpenLinkデータベースでかなりの量のアクティビティが行われていることを知っています。Activity MonitorでRecent Expensive Queriesを見ると、 OpenLinkのエントリが表示されており、これがその下にある DMV を使用していると確信しています。

  • 同じログインで Activity Monitor と DMV クエリを実行しています
  • そのログインはOpenLinkデータベースの所有者です
  • 実行すると、 VIEW SERVER STATE権限select * from fn_my_permissions (NULL, 'server');があることがわかります
  • 句を削除すると、 msdbディストリビューションwhereなどの他のデータベースのエントリが表示される
  • これは、私のログインのマッピングのスクリーンショットです。私は所有者になるべきではないと確信していますが、それは別の問題です。

db_owner ロール メンバーシップを示す SQL Server 権限のスクリーンショット

DMV クエリがこのデータベースに対してゼロ行を返す理由を誰か教えてもらえますか?

4

1 に答える 1