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

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

SQL Server の構造について記事にしてみる - その4 ( SQL Server 2019 をインストールしたら、sys.dm_db_page_info というものを見つけたのでちょっと動きをしらべてみた ) -

 少しだけ SQL Server 2019 をお触りしてみました。その中で一つ気になった sys.dm_db_page_info (Transact-SQL) - SQL Server | Microsoft Docs というものがあり、もしや DBCC PAGE の代替となるものでは!と思い調べてみました。

 DBCC PAGE といえば、『 SQL Server の構造について記事にしてみる 』 でインデックスの構造を調査するのに使用していました。
ryuchan.hatenablog.com

 その後、図とか色々と書くのが面倒なため、シリーズはその3で打ち切りとなっていました(笑) 今回はちょっと興味を持ったので、勢いにまかせて一気に記事書きます。
※『 SQL Server の構造について記事にしてみる - その3 』で使用したクエリをベースにします。
※ データベースは、AdventureWorks2017 を使っています。
※テーブルは、Sales.SalesOrderHeader を使っています。

 それでは、早速下記のクエリを SQL Server Management Studio で実行してみましょう。

SELECT
    dpa.allocated_page_page_id,
    dpa.page_type,
    dpa.page_type_desc,
    dpa.page_level,
    dpa.next_page_page_id,
    dpa.previous_page_page_id
FROM
    sys.dm_db_database_page_allocations(DB_ID(), OBJECT_ID('Sales.SalesOrderHeader'), null, NULL, 'DETAILED') dpa

f:id:koogucc11:20190421113513p:plain
クエリの結果

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

DBCC TRACEON(3604)
DBCC PAGE(N'AdventureWorks2017',1,16416,3) WITH TABLERESULTS
DBCC TRACEOFF(3604)

f:id:koogucc11:20190421113826p:plain
DBCC PAGE の結果

 次に、dm_page_info を使ったクエリを SQL Server Management Studio で実行してみましょう。

SELECT
    pi.*
FROM
    sys.dm_db_database_page_allocations(DB_ID(), OBJECT_ID('Sales.SalesOrderHeader'), null, NULL, 'DETAILED') dpa 
CROSS APPLY 
    sys.dm_db_page_info(dpa.database_id, dpa.allocated_page_file_id, dpa.allocated_page_page_id, 'DETAILED') pi
WHERE
    dpa.allocated_page_page_id = 16416

f:id:koogucc11:20190421114418p:plain
f:id:koogucc11:20190421114435p:plain
f:id:koogucc11:20190421114447p:plain

f:id:koogucc11:20190421114457p:plain
dm_page_info の結果

 DBCC PAGE のヘッダー情報にあたるものくらいが取得できるようです。Undocumented な DBCC コマンドが dmv 化されたか!?と思ったのですが、DBCC PAGE の全ての情報を参照できるものでは無いようです。バージョンアップされることで、データ部、個別情報を出力できる dmv が追加( dm_page_info_detail... とか? )されるのでしょうか。今後のバージョンアップに期待ですね。

最新の iPad mini が欲しい。

Apple iPad mini 4 (Wi-Fi, 128GB) - シルバー (第4世代)

Apple iPad mini 4 (Wi-Fi, 128GB) - シルバー (第4世代)

けど、iPad Pro 11 に使える Pencil も欲しい。
www.amazon.co.jp