sql - 将触发器从一个数据库复制到另一个数据库

标签 sql sql-server sql-server-2005 triggers

在 MS SQL Server 2005 中执行的脚本中,是否可以将触发器从一个数据库复制到另一个数据库?

我被要求为我的项目正在使用的触发器编写测试脚本。我们的测试结构是创建一个仅包含被测对象的空数据库,然后在该数据库上执行一个脚本,该脚本创建测试所需的所有其他对象,填充它们,运行所需的任何测试,将结果与预期结果进行比较,然后丢弃除被测对象之外的所有内容。

我不能只创建一个除了触发器之外为空的数据库,因为触发器依赖于几个表。我的测试脚本当前在创建所有必需的表后运行 CREATE TRIGGER,但这不会执行,因为测试脚本不允许包含被测对象。

建议是,我不运行 CREATE TRIGGER,而是以某种方式将脚本中那个点的触发器从实时数据库复制到测试数据库。我有一个快速的谷歌,但还没有找到一种方法来做到这一点。因此我的问题 - 这甚至可能吗,如果是这样,我该怎么做?

最佳答案

您可以使用 sp_helptext (triggername) 阅读触发器的文本。

或者您可以选择文本到一个变量中并执行:

declare @sql varchar(8000)


select @sql = object_definition(object_id) 
from sys.triggers
where name = 'testtrigger'

EXEC @sql

关于sql - 将触发器从一个数据库复制到另一个数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1807524/

相关文章:

sql - 加权关键字搜索

sql-server - XML 到 SQL 的映射

sql-server - 计算SQL中两个日期之间出现了多少个月 'January'

sql-server - 如何显示 SQL Server 日志 (2005)

c# - 单元测试下恢复SQL Server时避免恢复卡住

mysql - 在单个 MySQL 列中分隔标签

mysql - 从其他列的 SQL SELECT 中向日期时间添加分钟

sql-server-2005 - 我可以看到电子邮件地址中的空间,但 SQL SERVER 不能?

mysql - 对所有基于文本的字段使用通用 varchar(255) 是否有缺点?

mysql - SQL Server 以外的其他 DBMS 是否使用了模式?