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

masalibの日記

システム開発、運用と猫の写真ブログです

SQLServerのトリガーの一覧を取得する方法

SQLServer その他

経緯

トリガーを作ったのですが メンテナンスする事が発生しました

masalib.hatenablog.com

その時に、一覧を取得したり 現在の状況を取得したりする事をしました

有効なトリガーの一覧を取得するSQL

SELECT   O.name AS ObjectName,
         O.type_desc AS ObjectType,
         TR.name AS TriggerName
FROM     sys.triggers AS TR
            INNER JOIN sys.objects AS O
               ON TR.parent_id = O.object_id;

現在、選択しているDBのトリガー一覧が取得されます

登録されているトリガーの内容を取得するSQL

SELECT sys.triggers.name   ,sys.sql_modules.definition
FROM   sys.triggers
INNER JOIN sys.objects
ON  sys.objects.object_id = sys.triggers.object_id
INNER JOIN sys.schemas
ON  sys.schemas.schema_id = sys.objects.schema_id
INNER JOIN sys.sql_modules
ON  sys.sql_modules.object_id = sys.objects.object_id
-- WHERE  sys.triggers.name = 'トリガー名を指定'   --指定しない場合は全件取得
ORDER BY sys.triggers.name

注意点

SQLServerManagementStudioはデフォルトで256文字までしか出力しません

f:id:masalib:20160216214322j:plain

クエリーのオプションで

f:id:masalib:20160216214342j:plain

256 → 8000

に修正してから実行してください

なぜか改行が消えるので・・・一つ一つ出力で対応しました スクリプトウィザードなどでも出力できると思う

参考URL

http://sql55.com/query/list-all-triggers.php http://www.projectgroup.info/tips/SQLServer/SQL/SQL000011.html