都内で働くSEの技術的なひとりごと / Technical soliloquy of System Engineer working in Tokyo

都内でサラリーマンやってます。SQL Server を中心とした (2023年からは Azure も。) マイクロソフト系(たまに、OSS系などマイクロソフト以外の技術も...)の技術的なことについて書いています。日々の仕事の中で、気になったことを技術要素関係なく気まぐれに選んでいるので記事内容は開発言語、インフラ等ばらばらです。なお、当ブログで発信、発言は私個人のものであり、所属する組織、企業、団体等とは何のかかわりもございません。ブログの内容もきちんと検証して使用してください。英語の勉強のため、英語の

SQL Server 2012 と SQL Server v.Next CTP1.1 の DMV と DMF の違いをチェックしてみる

 過去に 2012 と 2016 の dmv、dmf の違いを抽出しました。同じように 2012 と v.Next の違いもチェックしてみましょう。
ryuchan.hatenablog.com

 リンクサーバ名を VNEXTto2012 と定義します。下記のクエリを v.Next 側のインスタンスから実行します。

SELECT
    [SQLServerVNEXTのDMVとDMF] = sqlserverVNEXT.name,
    [SQLServer2012のDMVとDMF] = sqlserver2012.name,
    [種別] = sqlserverVNEXT.type,
    [備考] = sqlserverVNEXT.type_desc
FROM
    master.sys.system_objects sqlserverVNEXT
    FULL OUTER JOIN( SELECT
                         so.name,
                         so.type,
                         so.type_desc
                     FROM
                         VNEXTto2012.master.sys.system_objects so
                   ) sqlserver2012 ON
    sqlserverVNEXT.name = sqlserver2012.name
WHERE 
    sqlserverVNEXT.name LIKE 'dm_%'
ORDER BY 
    sqlserverVNEXT.name

f:id:koogucc11:20161225230443p:plain

 結果をざっと見てみると、見慣れない dmf がいました。赤枠の dm_db_stats_histogram です。object_id と stat_id を引数で渡せばいいようです。
f:id:koogucc11:20161225230726p:plain

 下記のクエリを SQL Server Management Studio で実行してみましょう。

SELECT
    s.*,
    sh.*
FROM 
    sys.stats s
    CROSS APPLY sys.dm_db_stats_histogram(s.object_id,s.stats_id) sh

f:id:koogucc11:20161225232130p:plain

 エラーになってしまいますね。しかし、単体で実行すると結果が出力されます。

SELECT
    *
FROM 
    sys.dm_db_stats_histogram(418100530,1)

f:id:koogucc11:20161225232903p:plain

 どうしてなんでしょう? CTP だから仕方ないんでしょうか。このあたり、統計の詳細情報を一覧で出せると結構便利そうですね。もう少し色々試してみよう....

YOGABOOK 用に買ってみたんですが、中々いい感じでした。