sql server语言 - 仅使用脚本向导生成触发器脚本



我有SQL Server 2008 R2。我在一个数据库中大约有150个表,我最近为每个表创建了触发器。它在我当地的环境中工作得很好。

现在我想将它们部署到我的活动环境中。问题是我只想部署触发器。我尝试了Generate Script wizard,但它是与触发器一起创建表模式脚本,而不仅仅是触发器。

是否有任何方式来生成所有的触发器drop和创建类型脚本?

忘记向导吧。我认为你必须亲自动手编写代码。下面的脚本打印所有触发器代码并将其存储到表中。只需复制脚本的打印输出或从#triggerFullText获取。

USE YourDatabaseName
GO
SET NOCOUNT ON;
CREATE TABLE #triggerFullText ([TriggerName] VARCHAR(500), [Text] VARCHAR(MAX))
CREATE TABLE #triggerLines ([Text] VARCHAR(MAX))
DECLARE @triggerName VARCHAR(500)
DECLARE @fullText VARCHAR(MAX)
SELECT @triggerName = MIN(name)
FROM sys.triggers
WHILE @triggerName IS NOT NULL
BEGIN
    INSERT INTO #triggerLines 
    EXEC sp_helptext @triggerName
    --sp_helptext gives us one row per trigger line
    --here we join lines into one variable
    SELECT @fullText = ISNULL(@fullText, '') + CHAR(10) + [TEXT]
    FROM #triggerLines
    --adding "GO" for ease of copy paste execution
    SET @fullText = @fullText + CHAR(10) + 'GO' + CHAR(10)
    PRINT @fullText
    --accumulating result for future manipulations
    INSERT INTO #triggerFullText([TriggerName], [Text])
    VALUES(@triggerName, @fullText)
    --iterating over next trigger
    SELECT @triggerName = MIN(name)
    FROM sys.triggers
    WHERE name > @triggerName
    SET @fullText = NULL
    TRUNCATE TABLE #triggerLines
END
DROP TABLE #triggerFullText
DROP TABLE #triggerLines

在生成脚本向导的第二步("设置脚本选项)中按高级按钮=>表/视图选项=比;将"脚本触发器"设置为"True"。看看这个链接或者这个。如果只需要触发器,只需选择一个表进行下一步。

最新更新