Gra*_*per 57 sql triggers sql-server-2008
我想生成一个包含SQL的SQL脚本来创建我们数据库中存在的所有触发器.触发器是通过SSMS查询窗格直接添加的,因此,除了数据库本身的触发器之外,当前没有其他源.
我已经尝试过右键单击数据库的方法,选择Tasks->Generate Scripts并使用"脚本整个数据库和所有对象"选项.虽然这确实为表和约束创建了一个SQL脚本,但它不会为触发器生成SQL.
我也明白我可以右键单击数据库中的每个触发器并选择Generate SQL Script选项,但是当前有46个表在审计中(For Insert,Update和Delete).
而是为46个表中的每个表手动生成插入,更新和删除触发器脚本,是否有更简单的方法来执行此操作?或者,我应该开始点击,复制和粘贴?
Kap*_*wal 84
数据库 - >任务 - >生成脚本 - >下一步 - >下一步
在"选择脚本选项" UI上的"表/视图选项标题"下,将" 脚本触发器"设置为"真".


小智 50
我知道答案已被接受,但是想要提供另一种解决方案,因为某些原因SSMS向导无法为触发器生成脚本(在我的例子中是MSSQL2008R2)
这个解决方案基于上面的dana的想法,但是如果超过4000个字符('syscomments'视图的'text'列的限制),则使用'sql_modules'来提供触发器的完整代码
select [definition],'GO' from sys.sql_modules m
inner join sys.objects obj on obj.object_id=m.object_id
where obj.type ='TR'
Run Code Online (Sandbox Code Playgroud)
右键单击结果网格,然后将"将结果另存为..."保存到文件并保留格式
这个怎么样?
select text from syscomments where text like '%CREATE TRIGGER%'
编辑 - 每个jj的评论如下,syscomments已被弃用,将来会被删除.请使用上面列出的基于向导或基于脚本的解决方案继续前进:)