当前位置: 代码迷 >> Sql Server >> 求sql2005中 单表备份的话语
  详细解决方案

求sql2005中 单表备份的话语

热度:44   发布时间:2016-04-27 10:47:37.0
求sql2005中 单表备份的语句
把该表重命名进行全部的备份

------解决方案--------------------
SQL code
IF EXISTS (SELECT * FROM sys.triggers WHERE parent_class = 0 AND name = 'tt')DROP TRIGGER tt ON DATABASE;GOCREATE TRIGGER tt ON DATABASEFOR CREATE_TABLEASBEGIN     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 [email protected]+'_bk'    --替换表名    SELECT  @create_Script=REPLACE(@create_Script,@AffectedTable,@backUpTable)    --执行建表语句    EXEC(@create_Script)    --给创建的表加一个DML触发器    EXEC('        CREATE TRIGGER [email protected]+' ON [email protected]+'        FOR INSERT        AS         BEGIN            INSERT INTO [email protected]+' SELECT * FROM INSERTED        END'    )    SET CONCAT_NULL_YIELDS_NULL OFFEND --> 测试[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    name1    土豆2    水锅*/SELECT * FROM tb_bk/*id    name2    水锅1    土豆*/DROP TABLE tb_bk
  相关解决方案