无法find触发器存储在SQL Server 2008中的位置
我想删除和修改以前创build的触发器,但我无法find他们在数据库中的任何地方。 它们存在的位置以及如何编辑或删除它们
您可以在Table节点下find触发器:
在SSMS(SQL Server Management Studio)中的Tables
节点下,每个表都有一个Triggers
节点。
你可以从那里pipe理你的触发器。
这是一个更好的方法:
select a.[name] as trgname, b.[name] as [tbname] from sys.triggers a join sys.tables b on a.parent_id = b.object_id
只要确保在你认为触发器所在的数据库上运行它。
您还可以通过查询SQL Server Management Studio中的pipe理视图来查找触发器:
SELECT OBJECT_NAME(object_id) 'Table name', * FROM sys.triggers
这给你一个所有触发器的列表,以及它们为当前数据库定义的表。 然后,您可以继续禁用或删除它们。
在前面的答案上扩展一点,在所有最新版本的SQL Server中,您可以右键单击一个触发器,然后select: Script Trigger as… ALTER To… "New Query Editor Window"
这将打开一个SQL脚本的触发器的细节,如果你阅读代码,你会注意到它包含了ALTER语法: ALTER TRIGGER [dbo].triggername ...
这意味着你可以编辑SQL并按下Execute来改变触发器 – 这将覆盖以前的定义。
如果触发器是使用自动化工具构build的,那么您可能会在触发器定义中发现重复的代码,您将要删除它们。
在尝试编辑任何内容之前,首先执行脚本是值得的,它会告诉你触发器定义是否有效。 如果表或列已被重命名,则事情可能不同步。
类似于删除/删除触发器完全select: Script Trigger as… DROP To… "New Query Editor Window"
,然后执行它。