把该表重命名进行全部的备份

解决方案 »

  1.   

    select * into tb2 from tb1
      

  2.   

    create trigger  触发器名 on databasefor carete_tableas接下来该怎么写呢??
      

  3.   

    IF EXISTS (SELECT * FROM sys.triggers WHERE parent_class = 0 AND name = 'tt')
    DROP TRIGGER tt ON DATABASE;
    GO
    CREATE TRIGGER tt ON DATABASE
    FOR CREATE_TABLE
    AS
    BEGIN 
    SET CONCAT_NULL_YIELDS_NULL ON
    DECLARE @AffectedTable nvarchar(255),@backUpTable nvarchar(255),@create_Script nvarchar(max)
    --获取建表的语句
    SELECT  @create_Script=EVENTDATA().value('(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]','nvarchar(max)')
    --获取表的名称
    SELECT  @AffectedTable = EVENTDATA().value('(/EVENT_INSTANCE/ObjectName)[1]','nvarchar(255)')
    --定义一个备份的表名称
    SELECT  @backUpTable =@AffectedTable+'_bk'
    --替换表名
    SELECT  @create_Script=REPLACE(@create_Script,@AffectedTable,@backUpTable)
    --执行建表语句
    EXEC(@create_Script)
    --给创建的表加一个DML触发器
    EXEC('
    CREATE TRIGGER tt_'+@AffectedTable+' ON '+@AffectedTable+'
    FOR INSERT
    AS 
    BEGIN
    INSERT INTO '+@backUpTable+' SELECT * FROM INSERTED
    END'
    )
    SET CONCAT_NULL_YIELDS_NULL OFF
    END --> 测试[tb]
    IF OBJECT_ID('[tb]') IS NOT NULL DROP TABLE [tb]
    GO 
    CREATE TABLE [tb]([id] INT,[name] VARCHAR(4))
    GO INSERT [tb]
    SELECT 1,'土豆' UNION ALL 
    SELECT 2,'水锅'SELECT * FROM tb
    /*
    id name
    1 土豆
    2 水锅
    */
    SELECT * FROM tb_bk
    /*
    id name
    2 水锅
    1 土豆
    */DROP TABLE tb_bk
      

  4.   

    +1 备份到本数据库就这样
    触发器的话:在SqlServer Management Studio 里面点表前面的那个加号 右键触发器 新建 执行语句把这个贴进去