通过日志恢复MSSQL数据例子
这段时间看了关于在SQL server 中通过日志和时间点来恢复数据。也看了一些网上的例子,看如何通过日志来恢复数据。
前提条件:
数据库的故障恢复改为非简单模式,去掉自动关闭和自动收缩两个选项
如果是简单模式: 类似下面的语句操作数据就不会记录到日志中: select * into t from [表名]
这时为保证数据的完整要将数据库的恢复模式改成“完整”
测试环境:
1,建立数据库和测试表
create database zp
create table [zping.com](
id int,
name varchar(20)
)
插入测试数据:
insert into [zping.com](id,name)
values(1,'zping.com1')
insert into [zping.com](id,name)
values(2,'zping.com2')
insert into [zping.com](id,name)
values(3,'zping.com3')
insert into [zping.com](id,name)
values(4,'zping.com4')
备份数据库,可以通过sql server的可视化操作,下面是生成的代码:
BACKUP DATABASE [zp] TO DISK = N'C:\k.bak' WITH NOFORMAT, NOINIT,
NAME = N'zp-完整 数据库 备份', SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
查看数据:
注意:这时我们做一个完整备份
这时可能一不小心删除了一些数据。我们模拟一下:(假定删除了1,2的数据)
delete from [zping.com] where (id=1 or id =2)
注意:要记住大体的删除时间
这时发现删除错误了,怎么把数据找回来啊。方法有两个:
1,通过Log Explorer 查找进行恢复数据(我网站有此工具)
2,另一种方法通过恢复日志(指定时间点恢复)来恢复数据。
相关文档:
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。
2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:
select id from t where num is null
可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:
select id ......
Ms sql 2000
drivername=com.microsoft.jdbc.sqlserver.SQLServerDriver
url=jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=books
username=sa
password=sa
MySQL
drivername=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost/books
username=root
password=root
Oracle
drivername=orac ......
@echo off
:dosmenu
REM 选择菜单
echo Windows 服务启动或关闭 By hope 2008年2月7日
echo.
echo [1]启动Sql Server2005 [2]关闭Sql Server2005
echo [3]启动Oracle9i [4]关闭Oracle9i
echo.
echo ......
How is MSSQL using memory?
http://www.sqlhacks.com/Administration/Memory-Usage
Memory is one the most important factor affecting MSSQL performance.
As an administrator, you should be monitoring the memory
regularly. When Microsoft SQL Server runs out of memory, it will use
virtual memory: ie: ......
如何创建链接服务器
IF EXISTS (SELECT srv.name from sys.servers srv WHERE srv.server_id != 0 AND srv.name = N'链接服务器名')
EXEC master.dbo.sp_dropserver @server=N'链接服务器名'', @droplogins='droplogins'
GO
EXEC master.dbo.sp_addlinkedserver
@server = N'链接服务器名'', @srvproduct= ......