SQLServerのトリガーの一覧を取得する方法
## 経緯
トリガーを作ったのですが
メンテナンスする事が発生しました
その時に、一覧を取得したり
現在の状況を取得したりする事をしました
## 有効なトリガーの一覧を取得するSQL
```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
```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文字までしか出力しません
クエリーのオプションで
256 → 8000**
に修正してから実行してください
なぜか改行が消えるので・・・一つ一つ出力で対応しました
スクリプトウィザードなどでも出力できると思う
## もっと楽な方法を見つけた
もっと簡単にスクリプトウィザードで出力できた
masalib.hatenablog.com
## 参考URL
http://sql55.com/query/list-all-triggers.php
http://www.projectgroup.info/tips/SQLServer/SQL/SQL000011.html