今回は、SQLServerに関する話です。
稼働中のシステムを改修し、本番環境へ反映する際に、
プログラムの入替のみではなく、
データベースの更新作業が必要なことがあります。
あまり考えたくありませんが、
例えば、テーブルやビューにフィールドの追加や
新しく作成したストアドプロシージャやユーザー関数を追加などです。
確実なのは、作業リストを作成し、
改修した機能について、どのテーブル・ビューなどが改修されたか記録を取ることでしょう。
ただし、改修に時間が掛かったり、
複数の機能改修をまとめて反映する際には、
記録漏れが出ることも有ります。
これを回避するため、
DB内のテーブル・ビュー・ユーザー関数を更新された順に取得したいと思います。
該当のDBに対し、以下のSQLを実行します。
SELECT name, modify_date
FROM sys.objects
WHERE type in ('V', 'U', 'FN', 'P')
ORDER BY modify_date desc
sys.objects はデータベース内のオブジェクトを管理しているテーブルです。
SELECT句にはオブジェクト名(name), 更新日(modify_date)を指定します。
WHERE句には抽出する条件を指定します。
今回は、新しく更新された順に、
テーブル名・ビュー名・関数名・ストアドプロシージャが取得できればよいので、
U:テーブル(ユーザー定義)
V:ビュー
FN:スカラー関数
P:ストアドプロシージャ
の4文字をtypeに指定します。
ORDER BYにて、変更日の降順に出力すれば、
変更日が新しい順に更新したテーブル等が確認できる、ということになります。
typeはこれ以外にもありますが、
改修時に変更の頻度が高いのは上記の4つかな、と思いましたので、
この様に記述しています。
sys.objectsについて、詳しくはこちらに記述が有ります。
sys.objects(Transact-SQL)