小编Mar*_*Bee的帖子

动态sql错误:'CREATE TRIGGER'必须是查询批处理中的第一个语句

作为一些管理任务的一部分,我们有许多表,每个表都需要创建一个触发器.触发器将在修改对象时在Audit数据库中设置标志和日期.为简单起见,我有一个表,其中包含所有需要触发器创建的对象.

我试图生成一些动态的SQL来为每个对象执行此操作,但我收到此错误:
'CREATE TRIGGER' must be the first statement in a query batch.

这是生成sql的代码.

CREATE PROCEDURE [spCreateTableTriggers]
AS

BEGIN

DECLARE @dbname     varchar(50),
        @schemaname varchar(50),
        @objname    varchar(150),
        @objtype    varchar(150),
        @sql        nvarchar(max),
        @CRLF       varchar(2)

SET     @CRLF = CHAR(13) + CHAR(10);

DECLARE ObjectCursor CURSOR FOR
SELECT  DatabaseName,SchemaName,ObjectName
FROM    Audit.dbo.ObjectUpdates;

SET NOCOUNT ON;

OPEN    ObjectCursor ;

FETCH NEXT FROM ObjectCursor
INTO    @dbname,@schemaname,@objname;

WHILE @@FETCH_STATUS=0
BEGIN

    SET @sql = N'USE '+QUOTENAME(@dbname)+'; '
    SET @sql = @sql + N'IF EXISTS (SELECT * FROM sys.triggers WHERE object_id …
Run Code Online (Sandbox Code Playgroud)

triggers dynamic-sql sql-server-2008

8
推荐指数
1
解决办法
1万
查看次数

标签 统计

dynamic-sql ×1

sql-server-2008 ×1

triggers ×1