sqlserver 还原到时间点
今天一不冷静就把sqlserver数据库初始化了,在网上找了半天发现了几篇帖子,受益非浅,记录下
DB2中可以使得数据库回复到指定的时间点,SQL Server数据库的Recovery Model为full 或者Bulk copy的时候,是可以从日志来恢复数据库的。实际上日志中记录的一条一条的transact sql语句,恢复数据库的时候会redo这些sql语句。 前提条件:myBBS是数据库test中的一个表,数据库test的Recovery Model为Full,Auto Close,Auto Shrink两个选项未选中。数据库test的data files和log files均为默认的自动增长状态。
A:2004/10/13,16:00进行数据库备份,backup database test to disk='d:\db\1600.bak' with init
B:2004/10/14,13:00对数据库进行了update,delete等操作;
C:2004/10/15,18:00使用delete mybbs where id>300时,语句误写成delete mybbs,因而删除了表mybbs中的所有数据。
现在在C点,C点对数据库进行了误操作,我们希望数据库能够恢复到C之前的状态,比如恢复到10月15日17:59分的状态。
要恢复数据库B点,使用的是A点备分的数据库1600.bak;而使用的日志备分是最新的备分1820.logs;因而进行如下操作:
--备分日志:
BACKUP LOG test TO DISK='d:\1820.logs' WITH INIT
--恢复数据库1600.bak,使用WITH NORECOVERY参数:
RESTORE DATABASE test from disk='d:\db\1640.bak' WITH NORECOVERY
--使用日志恢复数据库到10月15日17:59分:
RESTORE LOG test from disk='d:\1820.logs' WITH RECOVERY,STOPAT='10/15/2004 17:59'
上面的三条Transact SQL语句的对应过程:
1.恢复数据库到A点;
2.执行A-B之间的log记录,把数据库恢复到B点.
这样就恢复数据库到了指定的时间点。如果恢复不成功,可能的原因是:1.未使用正确的备分数据库;2.数据库选项选中了Auto Shrink.
摘自http://www.bentium.org/ReadNews.asp?NewsID=259
相关文档:
首先,做一点说明。Flex是不能直接连接数据库的,这一点大家需要知道,它只能间接地连接数据库。Flex中提供了三种方式:HttpService,WebService 和RemoteObject。其中HttpService可以直接获取XML中的数据,还可以通过JSP,ASP以及PHP读取数据库中的数据,这个比较简单,而且网上也有很多例子,我就不多说了。WebServi ......
1.SQLServer的创建脚本如下:
USE [master]
GO
/****** Object: Database [test] Script Date: 10/29/2009 17:43:10 ******/
CREATE DATABASE [test] ON PRIMARY
( NAME = N'test', FILENAME = N'D:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\test.mdf' , S ......
经常看见有人问,MSSQL占用了太多的内存,而且还不断的增长;或者说已经设置了使用内存,可是它没有用到那么多,这是怎么一回事儿呢?
首先,我们来看看MSSQL是怎样使用内存的。
最大的开销一般是用于数据缓存,如果内存足够,它会把用过的数据和觉得你会用到的数据统统扔到内存中,直到内存不足的时候 ......
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlC ......
CREATE function fGetPy(@str varchar(500)='')
returns varchar(500)
as
begin
declare @strlen int,@return varchar(500),@ii int
declare @c nchar(1),@chn nchar(1)
select @strlen=len(@str),@retur ......