SQL Server 2014 の BOL を見ていて気づきました。
テーブルとストアド プロシージャのネイティブ コンパイル
こちらの情報に
次のクエリは、サーバーのメモリに現在読み込まれているすべてのテーブルとストアド プロシージャ DLL を示します。
として、sys.dm_os_loaded_modules (Transact-SQL) の利用が記載されています。
この DMV を使用すると以下のような情報を取得することができます。
ネイティブコンパイルされたテーブル (メモリ最適化テーブル) は作成時または DB の起動時に、ネイティブコンパイルされたストアドプロシージャは作成時または初回実行時にコンパイルが行われます。
これを確認するためには上記の DMV を使うとよさそうですね。
ネイティブコンパイルされたストアドプロシージャのロードタイミングを確認する場合は、以下のようなクエリを使ってみます。
select description, name, * from sys.dm_os_loaded_modules where description like '%XTP%' GO exec [dbo].[usp_NCProc] GO select description, name, * from sys.dm_os_loaded_modules where description like '%XTP%' GO
usp_NCProc はネイティブコンパイルされたストアドプロシージャとなり、上記の実行タイミングが初回実行となります。
DMV の検索結果がこちらになります。
ネイティブコンパイルされたストアドプロシージャの実行後はロードされているモジュールが増えていますね。
モジュール名が _t_ がテーブル / _p_ がストアドプロシージャなのかもしれないですね。
以下のようなクエリを実行すると Hekaton のエンジンやコンパイラがロードされていることも確認できます。
select description, name, * from sys.dm_os_loaded_modules where name like '%hk%.dll' GO
Process Monitor で Path に xtp を含むものをキャプチャすると以下のような情報も取れますので何を使ってコンパイルしているかを確認したい場合などはここから追うと面白いかもしれませんね。