【トレースフラグ 139】──互換性レベル130相当のDBCC CHECK系コマンドを実行する:SQL Serverトレースフラグレファレンス(5)
「Microsoft SQL Server」が稼働するデータベースシステムを運用する管理者に向け、「トレースフラグ」の活用を軸にしたトラブル対策のためのノウハウを紹介していきます。今回は「トレースフラグ139の詳細と使い方」を解説します。
本連載では、「Microsoft SQL Server(以下、SQL Server)」で発生するトラブル対策を踏まえた「SQL Serverのトレースフラグ」の使いこなしTipsを紹介していきます。
今回は「トレースフラグ139」の詳細と使い方を解説します。
トレースフラグ139は、互換性レベル120以前から互換性レベル130に変更した際、機能強化された精度などを使用してDBCC CHECK系コマンドを実行するための設定です。SQL Server 2016で実装されている互換性レベル130では、以前のバージョンに比べて精度などに関する機能強化が実装されました(*1)。これを利用できるようになります。
*1:SQL Serverは互換性を保証できる範囲を指定するために、互換性レベルという考え方を採っている。互換性レベル130はSQL Server 2016と同2017で動作が可能なことを意味する(互換性レベル90であれば同2005〜2012で動作)。互換性レベル130で実装された精度などに関する機能強化の詳細は次の通り。SQL Server 2016 improvements in handling some data types and uncommon operations
設定可能なスコープ
設定方法 | 可/不可 | 要/不要 |
---|---|---|
スタートアップ | ○ | ─ |
グローバルスコープ | ○ | ─ |
セッションスコープ | × | ─ |
クエリスコープ | × | ─ |
トレースフラグ3604、同3605 | − | 不要 |
動作例
例えば、互換性レベル130でDATETIME型からDATETIME2型に変換した場合の結果は、互換性レベル120以前と異なります(表1)。
変換元DATETIME | 互換性レベル120以前のDATETIME2 | 互換性レベル130のDATETIME2 |
---|---|---|
1900-01-01 00:00:00.003 | 1900-01-01 00:00:00.0030000 | 1900-01-01 00:00:00.0033333 |
そのためDATETIME型とDATETIME2型のデータが同一であるといったCHECK制約を作成していた場合、互換性レベルが130であるか120以前であるかによって結果が異なる可能性があります。
互換性レベル120以前から互換性レベル130への変更を計画している場合には、事前にトレースフラグ139を使用して互換性レベル130相当でのDBCC CHECK系コマンドを実行し、動作を検証できます。
DBCC TRACEON(139, -1) GO DBCC CHECKCONSTRAINTS GO DBCC TRACEOFF(139, -1) GO
互換性レベルとトレースフラグの関係を、表2にまとめました。
互換性レベル | トレースフラグ 139 | 互換性レベル130相当のDBCC CHECK系コマンドの実行 |
---|---|---|
130 | ー | ○ |
120以下 | 有効 | ○ |
120以下 | 無効 | × |
筆者紹介
内ヶ島 暢之(うちがしま のぶゆき)
ユニアデックス株式会社 NUL System Services Corporation所属。Microsoft MVP Data Platform(2011〜)。OracleやSQL Serverなど商用データベースの重大障害や大型案件の設計構築、プリセールス、社内外の教育、新技術評価を担当。2016年IoTビジネス開発の担当を経て、2017年現在は米国シリコンバレーにて駐在員として活動中。目標は生きて日本に帰ること。
椎名 武史(しいな たけし)
ユニアデックス株式会社所属。入社以来 SQL Serverの評価/設計/構築/教育などに携わりながらも、主にサポート業務に従事。SQL Serverのトラブル対応で社長賞の表彰を受けた経験も持つ。休日は学生時代の仲間と市民駅伝に参加し、銭湯で汗を流してから飲み会へと流れる。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- それでは“ダメ”な「トラブル対応例」
本連載は、「Microsoft SQL Server」で発生するトラブルを「どんな方法で」「どのように」解決していくか、「SQL Serverで起こりがちなトラブル」を厳選して、具体的な対処方法を紹介していきます。第1回目は「トラブルを適切に対処するための考え方」を解説します。 - 「パラメータースニッフィング」によって、あるタイミングから処理が遅くなった(パフォーマンストラブル)
本連載は、「Microsoft SQL Server」で発生するトラブルを「どんな方法で」「どのように」解決していくか、正しい対処のためのノウハウを紹介します。今回は、「あるタイミングで処理遅延が発生し、それが継続して発生するようになってしまった場合の対処例.2」を解説します。 - I/Oボトルネックの病巣はこれで究明できる