热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SQLServer2005数据库快照的使用与管理

本文介绍了如何在SQLServer2005中创建和使用数据库快照,包括创建数据库、数据表、插入数据、创建快照、查询快照数据以及使用快照进行数据恢复等操作。

-------------------------------------------创建数据库 DemoDB
CREATE DATABASE DemoDB
ON PRIMARY
(NAME='DemoDB_data', FILENAME='C:\SQLData\DemoDB_data.mdf', SIZE=5MB, MAXSIZE=10MB)
LOG ON
(NAME='DemoDB_log', FILENAME='C:\SQLData\DemoDB_log.ldf', SIZE=2MB, MAXSIZE=10MB)
GO
--------------------------------------------在 DemoDB 中创建数据表 T1 和 T2
USE DemoDB
CREATE TABLE T1 (ID INT, Name CHAR(8), Address CHAR(13))
GO
CREATE TABLE T2 (ID INT, Name CHAR(8), Address CHAR(13))
GO
--------------------------------------------在 DemoDB 的 T1 和 T2 表中插入数据
USE DemoDB
INSERT INTO T1 VALUES (1, 'Jacky', 'Suzhou')
INSERT INTO T1 VALUES (2, 'Hellen', 'Shanghai')
INSERT INTO T2 VALUES (1, 'Tom', 'Beijing')
INSERT INTO T2 VALUES (2, 'Alice', 'Hangzhou')
GO
--------------------------------------------为 DemoDB 数据库创建数据库快照 DemoDB_dbsnapshot_200510201600
CREATE DATABASE DemoDB_dbsnapshot_200510201600
ON
(NAME='DemoDB_data', FILENAME='C:\SQLSnapshot\DemoDB_dbsnapshot_200510201600.mdf')
AS SNAPSHOT OF DemoDB
GO
---------------------------------------------在数据库快照和原数据库中查询 T1 和 T2 表
USE DemoDB_dbsnapshot_200510201600
SELECT * FROM dbo.T1
SELECT * FROM dbo.T2
GO
USE DemoDB
SELECT * FROM dbo.T1
SELECT * FROM dbo.T2
GO
--------------------------------------------------
USE DemoDB
UPDATE T1 SET Name='Tony' WHERE ID=1 --在 DemoDB 中更新数据
GO
DELETE FROM T1 WHERE ID=2 --在 DemoDB 中删除数据
GO
DROP TABLE T2 --删除 T2 表
GO
--------------------------------------------------在数据库快照和原数据库中查询 T1 和 T2 表
USE DemoDB_dbsnapshot_200510201600
SELECT * FROM T1
SELECT * FROM T2
GO
USE DemoDB
SELECT * FROM T1
SELECT * FROM T2
GO
-------------------------------------------------使用数据库快照还原 DemoDB 数据库中 T1 表误删除和更新的数据
UPDATE DemoDB.dbo.T1
SET Name=(SELECT Name FROM DemoDB_dbsnapshot_200510201600.dbo.T1 WHERE ID=1) WHERE ID=1
GO
INSERT INTO DemoDB.dbo.T1
SELECT * FROM DemoDB_dbsnapshot_200510201600.dbo.T1 WHERE ID=2
GO
-----------------------------------------------------------使用数据库快照还原 DemoDB 数据库中误删除的 T2 表
USE DemoDB
CREATE TABLE T2 (ID INT, Name CHAR(8), Address CHAR(13)) --重新创建 T2 表
GO
INSERT INTO DemoDB.dbo.T2 SELECT * FROM DemoDB_dbsnapshot_200510201600.dbo.T2
GO
-----------------------------------------------------------在数据库快照和原数据库中查询 T1 和 T2 表
USE DemoDB
SELECT * FROM T1
SELECT * FROM T2
GO
USE DemoDB_dbsnapshot_200510201600
SELECT * FROM T1
SELECT * FROM T2
GO
-----------------------------------------------------------
注:如果需要周期性创建快照,可以创建 SQL Server 作业。
-----------------------------------------------------------在 DemoDB 中更新数据
USE DemoDB
UPDATE T1 SET Name='Funny' WHERE ID=1
GO
-----------------------------------------------------------在数据库快照和原数据库中查询 T1 和 T2 表
SELECT * FROM DemoDB.dbo.T1
SELECT * FROM DemoDB_dbsnapshot_200510201600.dbo.T1
SELECT * FROM DemoDB_dbsnapshot_200510201620.dbo.T1
-----------------------------------------------------------在 DemoDB 中更新数据
USE DemoDB
UPDATE T1 SET Name='Bob' WHERE ID=1
GO
-----------------------------------------------------------在数据库快照和原数据库中查询 T1 和 T2 表
SELECT * FROM DemoDB.dbo.T1
SELECT * FROM DemoDB_dbsnapshot_200510201600.dbo.T1
SELECT * FROM DemoDB_dbsnapshot_200510201620.dbo.T1
----------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------删除第一次数据库快照
DROP DATABASE DemoDB_dbsnapshot_200510201600
-------------------------------------------使用数据库快照恢复 DemoDB 数据库
RESTORE DATABASE DemoDB FROM DATABASE_SNAPSHOT='DemoDB_dbsnapshot_200510201620'
-------------------------------------------
SELECT * FROM DemoDB.dbo.T1
SELECT * FROM DemoDB_dbsnapshot_200510201620.dbo.T1
-------------------------------------------
DROP DATABASE DemoDB_dbsnapshot_200510201620 --删除数据库快照
DROP DATABASE DemoDB --删除数据库


推荐阅读
  • MySQL锁机制详解
    本文深入探讨了MySQL中的锁机制,包括表级锁、行级锁以及元数据锁,通过实例详细解释了各种锁的工作原理及其应用场景。同时,文章还介绍了如何通过锁来优化数据库性能,避免常见的并发问题。 ... [详细]
  • sqlserver动态分区方案例子
    sqlserver动态分区方案例子当我们存储的数据量比较大时,比如超过千万,上亿级别时单纯的使用索引可能效果不明显了,此时我们可以考虑采 ... [详细]
  • 包含phppdoerrorcode的词条 ... [详细]
  • 本文详细介绍了MySQL中的存储过程,包括其定义、优势与劣势,并提供了创建、调用及删除存储过程的具体示例,旨在帮助开发者更好地利用这一数据库特性。 ... [详细]
  • 请看|间隔时间_Postgresql 主从复制 ... [详细]
  • 当面临数据库清理任务时,若无删除或重建数据库的权限,可以通过编写SQL脚本来实现批量删除用户自定义的数据表和存储过程。本文将详细介绍如何构造这样的SQL脚本。 ... [详细]
  • Oracle性能提升:深入探讨SQL优化与类型转换的影响
    本文详细分析了在Oracle数据库中如何通过正确的数据类型匹配来避免不必要的类型转换,从而提高SQL查询效率。 ... [详细]
  • 前言无论是对于刚入行工作还是已经工作几年的java开发者来说,面试求职始终是你需要直面的一件事情。首先梳理自己的知识体系,针对性准备,会有事半功倍的效果。我们往往会把重点放在技术上 ... [详细]
  • 本文探讨了Web开发与游戏开发之间的主要区别,旨在帮助开发者更好地理解两种开发领域的特性和需求。文章基于作者的实际经验和网络资料整理而成。 ... [详细]
  • 本文探讨了如何利用 Hibernate 进行高效的批量更新和删除操作,包括直接使用 Hibernate API 的方法及其局限性,以及如何通过 JDBC 或存储过程实现更优的性能。 ... [详细]
  • 本文总结了MySQL的一些实用技巧,包括查询版本、修改字段属性、添加自动增长字段、备份与恢复数据库等操作,并提供了一些常见的SQL语句示例。 ... [详细]
  • 深入理解Java MySQL数据库连接池实现
    尽管利用Apache Commons DBCP等工具可以轻松构建数据库连接池,但本文详细解析了数据库连接池的工作机制,提供了详尽的注释,帮助开发者深入理解其内部运作。这不仅有助于提高数据库操作的效率,还能增强应用程序的稳定性和性能。 ... [详细]
  • ODBC介绍:开放式数据库连接详解
    本文详细介绍了ODBC(开放式数据库连接),这是一种允许应用程序访问多种数据库系统的标准API。自1992年由微软与Simba合作推出以来,ODBC已成为跨平台数据访问的重要标准。 ... [详细]
  • 本文作为《WM平台上使用Sybase Anywhere 11》系列的第二篇,将继续探讨在Windows Mobile (WM) 系统中如何高效地操作Sybase Anywhere 11数据库。继上一篇关于安装与基本测试的文章之后,本篇将深入讲解数据库的具体操作方法。 ... [详细]
  • 本指南详细介绍了在Linux环境中高效连接MySQL数据库的方法。用户可以通过安装并使用`mysql`客户端工具来实现本地连接,具体命令为:`mysql -u 用户名 -p 密码 -h 主机`。例如,使用管理员账户连接本地MySQL服务器的命令为:`mysql -u root -p pass`。此外,还提供了多种配置优化建议,以确保连接过程更加稳定和高效。 ... [详细]
author-avatar
sfktrd
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有