前提
Microsoftが以下に述べているように
非推奨だからといって機能がなくなるというのはなかなかないと思います。
SQL Server 2016 データベース エンジンの非推奨の機能
非推奨の印が付いている場合、それは次のことを意味します。
その機能は保守管理状態にあり、それ以外では利用されていません。 新しい変更は行われません。新しい機能との相互運用性に関する変更もありません。
Microsoft は、アップグレードを容易にする目的で、今後のリリースから非推奨機能を外さないように努めます。 ただし、非推奨機能が将来の技術革新を制限してしまう場合、 SQL Server からそれを永久的に外すことをまれに選択することがあります。
新しい開発作業に非推奨機能を使用することはお勧めしません。
ただ、知らないと結局使ってしまうケースもあるので、調査の仕方を調べてみました。
ちなみに、自社製品は2008R2~2016までをサポートしており、
メインの検証は一番低い2008R2で行っています。
ツール(SSMS)
SSMS(SQLServerManagementStudio)を利用して拡張イベントでチェックします。
開発時やテスト時にイベントが拾ったら確認するという流れを想定しています。
手順
1. SSMSを起動し、新しいセッションを作成する
「管理 > セッション」で右クリックして作成します。(セッション名は適当に入力します)
2. 拡張イベントを登録する
イベントライブラリに「deprecation」と入力してフィルタします。
「deprecation_announcement」と「deprecation_final_support」が表示されるので、右側に移します。
- deprecation_announcement
- SQL Server の今後のバージョンで削除される予定があるが、次回のメジャー リリースでは削除される予定がない機能を使用するときに発生します。
- deprecation_final_support
- SQL Server の次回のメジャー リリースで削除される予定の機能を使用するときに発生します。
3. セッションを開始する
4. 開発を行う
試しに以下のSQLを実行してみます。
create database hoge_db
create table hoge
(
id int
)
--nolockを使用するときはwithヒントが推奨とのこと
select * from hoge(nolock)
今後?
プロファイラでトレースすれば、他のインスタンスに対しても同じSQLが流せるので
各バージョンで拾えるのかなとも思ってたりします。
冒頭でも述べましたが、あくまでチェック観点の1つとして考えています。