仅使用脚本向导为触发器生成脚本

Dev*_*Dev 7 sql-server sql-server-2008-r2

我有SQL Server 2008 R2.我在数据库中有大约150个表,并且每个表我最近创建了触发器.它在我当地的环境中运行良好.

现在我想在我的实时环境中部署它们.问题是我想只部署触发器.我试过了,Generate Script wizard但是它创建的脚本包含表模式以及触发器,仅限NOT触发器.

反正有没有生成所有触发器drop和创建类型脚本?

pkm*_*iec 10

忘记向导.我想你必须弄脏代码.下面的脚本打印所有触发器代码并将其存储到表中.只需复制脚本的打印输出或从#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
Run Code Online (Sandbox Code Playgroud)