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

Raw*_*ing 5 sql sql-server triggers sql-server-2005

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

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

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

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

edo*_*oft 2

您可以使用以下命令读取触发器的文本sp_helptext (triggername)

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

declare @sql varchar(8000)


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

EXEC @sql
Run Code Online (Sandbox Code Playgroud)