読者です 読者をやめる 読者になる 読者になる

都内で働くSEの技術的なひとりごと

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

SQL Server 2012 と SQL Server 2016 RC1 の DMV と DMF の違いをチェックしてみる

 以前、DMV と DMF の一覧を出力するクエリを作成しました。
ryuchan.hatenablog.com
 
 今回は、SQL Server 2012 と SQL Server 2016 RC1(個人的にも、仕事でも SQL Server 2014 を使用することがないので、SQL Server 2014 との違いに関しては取り扱いません。) の DMV と DMF の違いを出力してみたいと思います。自分の LenovoSQL Server 2012 SP3 と SQL Server 2016 RC1 がインストールしてあるので、この環境で試してみたいと思います。まず、SQL Server 2016 のインスタンス側から、SQL Server 2012 に対してリンクサーバを作成します。( LINKtoSQLServer2012 というリンクサーバーを作成しています。)
f:id:koogucc11:20160327104155p:plain

 リンクサーバの作成方法に関しては、下記のスクリプトを参考にしてください。

片方のインスタンスにリンクサーバを定義します。下記のスクリプトSQL Server Management Studio で実行しましょう。 EXEC sp_addlinkedserver @server=N'INSTANCE2', @srvproduct=N'', @provider=N'SQLNCLI', @datasrc=N'[ホスト名]\INSTANCE2';

リンクサーバを用いたクエリの動作を試してみた - 都内で働くSEの技術的なひとりごと

※下記のような動作をするものなので、使用時は業務特性などを判断して使用してください。

SQL Server Profiler の実行結果は下記の通りです。SQL 実行前に、sp_getschemalock が Sales.SalesPerson に対して発行されています。これは、対象のテーブルに対して Sch-Sでロックを獲得します。その後、SQL 実行後に sp_releaseschemalock でテーブルのロックを解放します。

リンクサーバを用いたクエリの動作を試してみた - 都内で働くSEの技術的なひとりごと

※ロックされるのが好ましくない場合は、OPENQUERY を使ったリモート接続を行ってください。

この問題を解決するには、OPENQUERY を使用します。OPENQUERY を使用すると、テーブルに対してロックがかかりません。

リンクサーバを用いたクエリの動作を試してみた - 都内で働くSEの技術的なひとりごと

 今回は、リンクサーバを使用します。(リンクサーバを使用したほうがクエリがスッキリするんですよね。) SQL Server 2016 RC1 側のインスタンスから、下記のクエリを SQL Server Management Studio で実行します。

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

f:id:koogucc11:20160327103642p:plain

 [SQLServer2012のDMVとDMF] が NULL と表示されているものが、SQL Server 2016 RC1(SQL Server 2014 で追加されているかも)で追加されたものです。SQL Server 2012 と比較して SQL Server 2016 RC1 には下記の48の DMV と DMF が追加されています。結構ありますねー。(全然追いつけてないですが.....) ぼちぼち、調査開始しましょうかね....

  • dm_column_store_object_pool
  • dm_db_column_store_row_group_operational_stats
  • dm_db_column_store_row_group_physical_stats
  • dm_db_rda_migration_status
  • dm_db_rda_schema_update_status
  • dm_db_stats_properties_internal
  • dm_db_xtp_checkpoint_files
  • dm_db_xtp_checkpoint_stats
  • dm_db_xtp_gc_cycle_stats
  • dm_db_xtp_hash_index_stats
  • dm_db_xtp_index_stats
  • dm_db_xtp_memory_consumers
  • dm_db_xtp_nonclustered_index_stats
  • dm_db_xtp_object_stats
  • dm_db_xtp_table_memory_stats
  • dm_db_xtp_transactions
  • dm_exec_compute_node_errors
  • dm_exec_compute_node_status
  • dm_exec_compute_nodes
  • dm_exec_distributed_request_steps
  • dm_exec_distributed_requests
  • dm_exec_distributed_sql_requests
  • dm_exec_dms_services
  • dm_exec_dms_workers
  • dm_exec_external_operations
  • dm_exec_external_work
  • dm_exec_function_stats
  • dm_exec_input_buffer
  • dm_exec_query_optimizer_memory_gateways
  • dm_exec_query_parallel_workers
  • dm_exec_query_profiles
  • dm_exec_session_wait_stats
  • dm_hadr_automatic_seeding
  • dm_hadr_physical_seeding_stats
  • dm_io_cluster_valid_path_names
  • dm_os_buffer_pool_extension_configuration
  • dm_resource_governor_external_resource_pool_affinity
  • dm_resource_governor_resource_pool_volumes
  • dm_tran_global_recovery_transactions
  • dm_tran_global_transactions
  • dm_tran_global_transactions_enlistments
  • dm_tran_global_transactions_log
  • dm_xtp_gc_queue_stats
  • dm_xtp_gc_stats
  • dm_xtp_system_memory_consumers
  • dm_xtp_threads
  • dm_xtp_transaction_recent_rows
  • dm_xtp_transaction_stats

早くキャンプ行きたいです。これ、いいな。買ってみようかな。

グローブもそろそろ交換しないと。チーズの燻製とか作ってみたい。
ソト(SOTO) 燻家 スモークハウス ST-114

ソト(SOTO) 燻家 スモークハウス ST-114

本格的なものを購入してもいいかも。
ユニフレーム(UNIFLAME) インスタントスモーカー 665930

ユニフレーム(UNIFLAME) インスタントスモーカー 665930

スモーカーセットとかもあるのか。リュックもほしい。