Генерировать script для триггеров только с помощью мастера script

У меня есть SQL Server 2008 R2. У меня около 150 таблиц в базе данных, и для каждой таблицы я недавно создал триггеры. Он отлично работает в моей местной среде.

Теперь я хочу развернуть их в своей живой среде. Вопрос в том, что я хочу развернуть только триггеры. Я попробовал Generate Script wizard, но он создает script с табличной схемой вместе с триггерами, а не только триггерами.

В любом случае, чтобы сгенерировать все триггеры и создать тип script?

1 ответ

Забудьте мастера. Я думаю, вы должны замарать свои руки кодом. Script ниже печатает весь код триггеров и сохраняет его в таблице. Просто скопируйте вывод печати Script или получите его из #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

licensed under cc by-sa 3.0 with attribution.