微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQLServer: 用ApexSqlLog2014恢复SqlServer2005数据

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
*/

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐