web-dev-qa-db-ja.com

SQL Server 2008でトリガーが保存されている場所が見つかりません

以前に作成したトリガーを削除および変更したいのですが、データベース内のどこでもそれらを見つけることができません。それらが存在する場所とそれらを編集または削除する方法

41
Fraz Sundal

テーブルノードの下にトリガーがあります。

enter image description here

91
šljaker

SSMS(SQL Server Management Studio)のTablesノードの下に、各テーブルにTriggersノードがあります。

そこからトリガーを管理できます。

12
Oded

より良い方法は次のとおりです。

select a.[name] as trgname, b.[name] as [tbname] 
from sys.triggers a join sys.tables b on a.parent_id = b.object_id

トリガーが置かれていると思われるデータベースに対して実行してください。

8
sqlglenn

SQL Server Management Studioの管理ビューにクエリを実行して、トリガーを見つけることもできます。

SELECT
    OBJECT_NAME(object_id) 'Table name', *
FROM 
    sys.triggers

これにより、すべてのトリガーのリストと、現在のデータベースに対して定義されているテーブルが表示されます。次に、それらを無効にするか、ドロップします。

5
marc_s

以前の回答を少し拡大するには、SQL Serverのすべての最近のバージョンで、トリガーを右クリックして選択します:Script Trigger as… ALTER To… "New Query Editor Window"

これにより、トリガーの詳細を含むSQLスクリプトが開きます。コードを読むと、ALTER構文が含まれていることがわかります。ALTER TRIGGER [dbo].triggername ...

これは、SQLを編集し、実行を押してトリガーを変更できることを意味します。これにより、以前の定義が上書きされます。

自動化されたツールを使用してトリガーが作成されている場合、トリガー定義に重複するコードがあり、削除することがあります。

何かを編集しようとする前に、最初にスクリプトを実行してみる価値があります。トリガー定義が有効であるかどうかがわかります。テーブルまたは列の名前が変更された場合、同期が取れなくなる可能性があります。

トリガーの削除/ドロップと同様に、完全に選択します:Script Trigger as… DROP To… "New Query Editor Window"そして、それを実行します。

2
ss64