sys.dm_exec_cached_plans (Transact-SQL)
sys.dm_os_memory_cache_entries (Transact-SQL)
sys.dm_exec_sql_text (Transact-SQL)
上記3つを使うと、メモリのどこにクエリの情報が入っているかが分るんですが、
?
SQLServer2005のインスタンスに対し
同一サーバからと、リモートサーバから
同じSQLを発行して確認してみたところ、
別々のエントリアドレス、エントリデータアドレスになっちゃいました。
?
えぇ(^^;
select
ent.[name],
ent.[cache_address],
ent.[entry_address],
ent.[entry_data_address],
txt.[text]
from
sys.dm_os_memory_cache_entries ent
join
sys.dm_exec_cached_plans pln
on ent.memory_object_address = pln.memory_object_address
cross apply
sys.dm_exec_sql_text(pln.[plan_handle]) txt
where [name] = 'SQL Plans';
実行結果
name |
cache_address |
entry_address |
entry_data_address |
text |
SQL Plans |
0x03797B00 |
0x037E64E0 |
0x078661B8 |
select * from tb1; |
SQL Plans |
0x03797B00 |
0x037E6330 |
0x078881B8 |
select * from tb1; |