SQL SERVER使用事务日志恢复数据的实验
/*
使用事务日志恢复数据的实验
*/
--1.创建测试数据库
CREATE DATABASE Db_test
ON
( NAME = Db_test_DATA,
FILENAME = 'c:\Db_test.mdf' )
LOG ON
( NAME = Db_test_LOG,
FILENAME = 'c:\Db_test.ldf')
GO
--2.故障还原模型设置为full模型,默认的简单模型备份事务日志是没用的
ALTER DATABASE Db_test SET RECOVERY FULL | BULK_LOGGED
--3.创建测试表
CREATE TABLE [dbo].[BackupTabToTxt] (
[TabName] [varchar] (200) ,
)
--4.插入测试数据
insert into BackupTabToTxt(TabName) values('test1')
insert into BackupTabToTxt(TabName) values('test2')
insert into BackupTabToTxt(TabName) values('test3')
select * from BackupTabToTxt
--5.备份数据库
BACKUP DATABASE Db_test TO DISK='c:\test_data.bak'
--6.删除数据,备份日志
delete from BackupTabToTxt where TabName='test3' --17:06
BACKUP LOG Db_test TO DISK='c:\test_log_1706.bak' --备份日志
delete from BackupTabToTxt where TabName='test2' --17:07
BACKUP LOG Db_test TO DISK='c:\test_log_1707.bak' --备份日志
select * from BackupTabToTxt
--7.使用事务日志恢复数据
RESTORE database Db_test from DISK='c:\test_data.bak' WITH NORECOVERY
RESTORE LOG Db_test from DISK='c:\test_log_1706.bak' with stopat='2009-09-24 17:06' ,NORECOVERY
RESTORE LOG Db_test from DISK='c:\test_log_1707.bak' with stopat='2009-09-24 17:07'
select * from BackupTabToTxt
--8.删除测试库
drop database Db_test
相关文档:
select top 每页显示的记录数 * from topic where id not in (select top (当前的页数-1)×每页显示的记录数 id from topic order by id desc) order by id desc
select top 每页显示的记录数 * from topic where id not in (select top (当前的页数-1)×每页显示的记录数 id from topic order by id desc) ......
----start
在SQL语句中应该尽量避免使用OR,因为这样做会影响SQL语句的性能。考虑下面的情况:
CREATE TABLE USER
(
NAME VARCHAR(20) NOT NULL,---姓名
BIRTHDAY DATE---生日
);
现在有这样一个问题:让你查找一下生日是1949-10-1(共和国同龄人)或1978-12-18(十一届三中全会召开时间) ......
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE proc pGetInsertSQL (@TableName varchar(256))
as
begin
set nocount on
declare @sqlstr varchar(4000)
declare @sqlstr1 varchar(4000)
declare @sqlstr2 v ......
计算间隔时间:
select f_date,f_cstime,f_cetime, (((SYSDATE- TO_DATE(f_date||f_cstime,'YYYYMMDDHH24MISS')) * 86400000)-((SYSDATE- TO_DATE(f_date||f_cetime,'YYYYMMDDHH24MISS')) * 86400000))/1000 CURRENT_MILLI from ycsq_t_hauthlog where f_cstime<>'999999'
将字符串转换成日期类:SYSDATE- TO_ ......
----start
前面,我们介绍了 尽量避免在SQL语句的WHERE子句中使用函数,因为这样做会使该字段上的索引失效,影响SQL语句的性能。基于同样的道理,我们也应该避免使用LIKE。考虑下面的情况:
CREATE TABLE USER
(
NAME VARCHAR(20) NOT NULL,---姓名
MYNUMBER VARCHAR(18)---身份证号码
);&nb ......