我有TABLE1
,在进行更改之前我已经对表做了备份:
SELECT * INTO TABLE1BACKUP FROM TABLE1
我已经对表的备份中的数据进行了更改,所以现在我想将备份表数据复制到主表中。如何取回原始数据?我需要截断我的主表并从备份表中复制所有数据。
答案 0 :(得分:4)
您只能SELECT INTO
新表。在您的情况下,您需要:
TRUNCATE TABLE dbo.Table1;
INSERT dbo.Table1 SELECT * FROM dbo.Table1Backup;
或其他选项(例如,如果有外键,上述内容将无效):
DELETE dbo.Table1;
INSERT dbo.Table1 SELECT * FROM dbo.Table1Backup;
如果有外键和子行指向此表,则您还需要先删除或禁用这些约束。
如果没有您需要担心的约束等,那么执行此操作的方法就更少了:
BEGIN TRANSACTION;
EXEC sp_rename 'dbo.Table1', N'Table1Old', OBJECT;
EXEC sp_rename 'dbo.Table1Backup', N'Table1', OBJECT;
COMMIT TRANSACTION;
DROP TABLE dbo.Table1Old;