こんにちは、nanoです。SQLServerを扱う案件で登録したストアドプロシージャの更新日付を取得する必要があったのでこの記事にメモとして残します。
ストアドプロシージャの更新日付情報はどこに格納されている?
SQLServerには、個別に作成するテーブルのほかにSQLSever自体が管理しているテーブルが存在します。その中でsysユーザが所有している「sys.objects」という名前のテーブルにSQLServerのオブジェクト(テーブル、プロシージャなど)の情報が登録されています。このテーブルからプロージャの更新日付を取得します。
プロシージャの更新日付取得SQL
saなどのsysにアクセスできる権限ユーザで以下を実行します。
※現場によってはsaの使用を禁止しているとことがあるので、ご自身の現場に応じたユーザで実行してください。
SELECT
name -- 名前
,type -- タイプ:プロシージャは「P」
,create_date -- 作成日付
,modify_Date -- 更新日付 ※ALTERした日付
FROM sys.objects
WHERE type = 'P'
ORDER BY name現在取得できるオブジェクトのタイプ
すべてのオブジェクトを作成していないので、タイプの一覧がわかりませんが以下でオブジェクトのタイプとタイプの説明を出力できます。
SELECT distinct
type -- タイプ
,type_desc -- タイプ説明
FROM sys.objects
ORDER BY typeまとめ
- sys.objectsでオブジェクト(テーブル、プロシージャなど)情報を取得できる
- sys.objectsのtypeでオブジェクトを区別できる
以上
[temp id=4]

