SQLServer: 用ApexSqlLog2014恢复SqlServer2005数据
发布时间:2020-12-12 13:09:01 所属栏目:MsSql教程 来源:网络整理
导读:LogExplorer最高只支持SQL Server2005, 而且使用也不方便。? 最近发现一款工具非常不错, 那就是 ApexSQLLog, 据说是最高能支持 SQL Server2012。 最新版本是 AplexSQLLog2016, 但试了下非常不好用, 连接都有问题, 还是先用一个稳定版本, 有了稳定的高
LogExplorer最高只支持SQL Server2005, 而且使用也不方便。? 最近发现一款工具非常不错, 那就是 ApexSQLLog, 据说是最高能支持 SQL Server2012。 最新版本是 AplexSQLLog2016, 但试了下非常不好用, 连接都有问题, 还是先用一个稳定版本, 有了稳定的高版本再说。 下载地址:点击打开链接 使用步骤: 测试脚本: /* 以下代码要执行两次: 1. 将数据库恢复模式改为“完整”; 2. 将数据库恢复模式改为“简单”; 每次完成后用 ApexSqlLog 查看是否有相关的记录, 以及是否能生成恢复的脚本。 */ USE test GO --创建测试表 IF OBJECT_ID('dbo.apexTest','U') IS NOT NULL BEGIN DROP TABLE dbo.apexTest END GO CREATE TABLE dbo.apexTest ( [id] BIGINT,[name] NVARCHAR(20),[account] VARCHAR(20),[birthday] DATETIME,[isDeleted] BIT,CONSTRAINT PK_apexTest PRIMARY KEY ( id ASC ) ) GO SET NOCOUNT ON --1. 插入数据 INSERT INTO dbo.apexTest(id,name,account,[birthday],isDeleted) VALUES(1,'王明','ming','2005-01-01',0) INSERT INTO dbo.apexTest(id,isDeleted) VALUES(2,'张华','hua','2006-02-02',isDeleted) VALUES(3,'李梦','meng','2007-03-03',1) INSERT INTO dbo.apexTest(id,isDeleted) VALUES(4,'李小','xiao','2008-04-04',1) --2. 更新数据 UPDATE dbo.apexTest SET [name]='张林' where id=2 --3. 删除数据 DELETE FROM dbo.apexTest WHERE isDeleted=1 /* ---------------------------- 下面是生成的恢复脚本 ---------------------------- -- 生成了两条插入脚本和一条更新脚本, 正好能对应 -- 第一次:完整 (恢复模式) -- DELETE (0000002F:00000094:0004) done at 2016-01-13 14:32:45.770 by dba in transaction 0000:000004DC (Committed) INSERT INTO [dbo].[apexTest] ([id],[name],[account],[isDeleted]) VALUES (4,N'李小' COLLATE Chinese_PRC_CI_AS,N'xiao' COLLATE Chinese_PRC_CI_AS,'20080404 00:00:00.000',1) -- DELETE (0000002F:00000094:0002) done at 2016-01-13 14:32:45.770 by dba in transaction 0000:000004DC (Committed) INSERT INTO [dbo].[apexTest] ([id],[isDeleted]) VALUES (3,N'李梦' COLLATE Chinese_PRC_CI_AS,N'meng' COLLATE Chinese_PRC_CI_AS,'20070303 00:00:00.000',1) GO -- UPDATE (0000002F:0000008F:0002) done at 2016-01-13 14:32:45.766 by dba in transaction 0000:000004DA (Committed) BEGIN TRANSACTION UPDATE [dbo].[apexTest] SET [name] = N'张华' COLLATE Chinese_PRC_CI_AS WHERE [id] = 2 IF @@ROWCOUNT <= 1 COMMIT TRANSACTION ELSE BEGIN ROLLBACK TRANSACTION; PRINT 'ERROR: STATEMENT AFFECTED MORE THAN ONE ROW. ALL THE CHANGES WERE ROLLED BACK.' END GO -- 第二次:简单(恢复模式) -- DELETE (0000002F:0000019A:0004) done at 2016-01-13 17:33:17.630 by dba in transaction 0000:000004F9 (Committed) INSERT INTO [dbo].[apexTest] ([id],1) -- DELETE (0000002F:0000019A:0002) done at 2016-01-13 17:33:17.630 by dba in transaction 0000:000004F9 (Committed) INSERT INTO [dbo].[apexTest] ([id],1) GO -- UPDATE (0000002F:00000199:0002) done at 2016-01-13 17:33:17.630 by dba in transaction 0000:000004F8 (Committed) BEGIN TRANSACTION UPDATE [dbo].[apexTest] SET [name] = N'张华' COLLATE Chinese_PRC_CI_AS WHERE [id] = 2 IF @@ROWCOUNT <= 1 COMMIT TRANSACTION ELSE BEGIN ROLLBACK TRANSACTION; PRINT 'ERROR: STATEMENT AFFECTED MORE THAN ONE ROW. ALL THE CHANGES WERE ROLLED BACK.' END GO */ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读