SQLServer2005数据库没有删除所有其他快照引发的问题及其解决方法
问题重现及其解决方法如下:
--查询FYTEST数据库下TEST表中的内容
SELECT * FROM FYTEST.dbo.TEST;
--创建FYTEST数据库的第一个快照,快照为:FYTEST_DBSS1
CREATE DATABASE FYTEST_DBSS1 ON
(NAME = FYTEST,
FILENAME = 'D:\FYTEST_DBSS1.SS')
AS SNAPSHOT OF FYTEST
GO
如下图:
--更新FYTEST数据库中TEST表的数据
UPDATE FYTEST.dbo.TEST SET levelNO='二级';
--查询更新后的数据
SELECT * FROM FYTEST.dbo.TEST;
--创建FYTEST数据库的第二个快照,快照为FYTEST_DBSS2
CREATE DATABASE FYTEST_DBSS2 ON
(NAME = FYTEST,
FILENAME = 'D:\FYTEST_DBSS2.ss')
AS SNAPSHOT OF FYTEST
GO
--更新FYTEST数据库中TEST表的数据
UPDATE FYTEST.dbo.TEST SET levelNO='三级';
--查询更新后的数据
SELECT * FROM FYTEST.dbo.TEST;
--查看快照1中TEST表的内容
SELECT * FROM FYTEST_DBSS1.dbo.TEST;
--查看快照2中TEST表的内容
SELECT * FROM FYTEST_DBSS2.dbo.TEST;
--查看现在FYTSET数据库中TEST表的内容
SELECT * FROM FYTEST.dbo.TEST;
--从数据库快照中恢复数据库到快照创建的时刻
--使用master数据库
USE master
GO
RESTORE DATABASE FYTEST
FROM DATABASE_SNAPSHOT='FYTEST_DBSS1'
GO
产生错误的原因是没有删除所有其他快照
解决方法:
方法一:手动删除其它快照
数据库快照-->找到要删除的快照-->右键-->删除即可。
方法二:使用代码删除其它快照
DROP DATABASE FYTEST_DBSS2
注意:这里的 FYTEST_DBSS2为要删除的快照名称
删除其他快照后,然后再重新执行下面语句
--从数据库快照中恢复数据库到快照1创建的时刻
--使用master数据库
USE master
GO
RESTORE DATABASE FYTEST
FROM DATABASE_SNAPSHOT='FYTEST_DBSS1'
GO
发现执行成功!
--确认是否恢复了FYTEST数据库下的TEST表的内容
SELECT * FROM FYTEST.DBO.TEST;
可以看到FYTEST数据库下TEST表中的数据恢复了。
--删除数据库快照
DROP DATABASE FYTEST_DBSS