我有一个第三方程序,它将数据导出到SQL Server . 但是,此类程序无法插入,但每次处理时都会删除并重新创建每个表 .

有一个特定的架构 . 每次重新创建时,我都需要在SQL上对这样的表运行修改 .

我一直在尝试在Create上使用DDL触发器,如果它在目标模式中,它只会将表的名称写入LOG:

CREATE TRIGGER [tCREATE_TABLE] ON DATABASE 
                FOR CREATE_TABLE
            AS     
            DECLARE @data XML;
            DECLARE @schema sysname;
            DECLARE @schema_s nvarchar(128);
            DECLARE @object sysname;
            DECLARE @object_s nvarchar(128);
            DECLARE @eventType sysname;    
            SET @data = EVENTDATA();
            SET @eventType = @data.value('(/EVENT_INSTANCE/EventType)[1]',
                                         'sysname');    
            SET @schema    = @data.value('(/EVENT_INSTANCE/SchemaName)[1]','sysname');
            SET @schema_s = CAST(@schema as nvarchar(128));
            SET @object    = @data.value('(/EVENT_INSTANCE/ObjectName)[1]','sysname');
            SET @object_s = CAST(@object as nvarchar(128));   

    -- COMMIT should unlock the table...??
    COMMIT

            IF @schema_s = 'TARGET_SCHEMA'  
                INSERT INTO [TARGET_SCHEMA].[UpdateLOG](TabName,LOAD_UPDATEDATE,LOAD_USER)
                VALUES (@object_s,GETDATE(),CURRENT_USER)
      -- this is the procedure that modifies the target table
        EXEC [ProcessTableProcedure]
              @targettab = @object_s
            GO

这适用于写入日志,但是一旦我添加调用处理过程,它就会返回错误 .

在触发器结束时,修改过程将找不到表 - 因为事务尚未提交 .

我之前放了一个COMMIT,但后来没有任何反应(程序没有运行) . 我假设在COMMIT后触发器结束......?

有帮助吗?