--备份数据库
backup database 备份的数据库名
to disk = 'c:\single.bak' --备份路径及文件名
with description = '备份的描述存在于备份文件头中',
format,-- format 初始化媒体 noformat 追加媒体
mediadescription = '备份数据库的媒体集的描述',
medianame = '媒体集的名称',name = '备份集的名称',
stats = 10 --返回备份的百分比
,password =  'iloveyou' --在备份集上设置密码
,noskip --noskip 选项告诉sql server在改写备份集之前要检查媒体集的名称和到期时间
,differential --数据库的差异备份
--修改数据库的备份恢复模型
/*
数据库恢复模型允许你控制事务日志备份的大小和速度,从而简化出现灾难后数据库的恢复工作。
使用sp_helpdb可以确定数据库处在那个恢复模型下。
sp_helpdb single
或者
select databasepropertyex('single','recovery')
简单恢复模型会定时截断事务日志,并把已经提交的事务日志移除。因为事务日志不断被截断,所以
不能对它进行备份。这使得你只能在完全备份和差异备份两种备份策略中选择一种。
这种模型适用于那些仅仅每晚备份一次的数据库,也适用于整天通过差异备份进行备份的数据库。使用
这个选项意味着不能实现精确的时点恢复。
完全恢复模型丢失数据的机会最小,但是会增加管理和空间方面的开销。使用完全恢复模型,只要你经常进行事务日志的
备份,就可以恢复到任意时间的状态。完全恢复模型也会记录任何create index命令。sql server7.0仅仅记录吓创建
索引这个事实,而不会记录索引本身。然而,sql server2000中,索引本身也会被记录下来,这意味着从事务日志恢复
数据库之后,你不必重建索引。
大容量日志记录恢复模型被设计成为完全恢复模型的一种折衷的方法。与完全恢复模型相比,这种模型提供了更好的性
能和空间利用率。这是因为数据库处于这种模型吓,当其中有大容量操作发生时,sql server仅仅记录大容量操作发生
这个事实和它进行的程度。因为大容量操作没有被完全记录下来,所以事务日志要比完全恢复模型下小的多。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnsql2k/html/sql_asphosting.asp
*/
alter database single
set recovery full --simple,bulk_logged
--备份事务日志
backup log 数据库名
to disk = 'c:\databasenamelog.bak' --备份路径及文件名
with noinit,nounload,name = '备份集的名称',
stats = 10,noformat
,no_truncate --这个选项允许你备份事务日志,而且后面不对它进行截断。当你对包含由于物理设备故障引起损坏的
--数据库的事务日志进行备份,这会很方便。指定这个选项后,日志决不会增长很长一段时间。
--截断事务日志
backup log 数据库名
with no_log --truncate_only
/*
DBCC SQLPERF
提供有关所有数据库中的事务日志空间使用情况的统计信息。
语法
DBCC SQLPERF ( LOGSPACE ) 
注释
事务日志积累每个数据库中数据的更改信息。由 DBCC SQLPERF(LOGSPACE) 返回的信息可用于监视使用的空间大小,
并指明何时对事务日志进行备份或截断。
*/
--备份单个文件和文件组
--对于一个带有多个文件组的vldb(非常大的数据库),这是个相当理想的方法。
-- 执行文件或文件组备份时要记住的主要一条是要注意数据库的设计。你不想还原这样一个文件组,它有一个Customers表
-- ,但是在这同一个文件组中却没有Custormer_Detail表。如果发生这种情况,数据就会变得不同步。
-- T-sql中备份文件组,必须加上filegroup参数,然后指定文件组名称。
backup database 数据库名 filegroup = 'Primary'
to disk = '备份路径及文件名'
with noinit , name = '备份集的名称',noskip,stats = 10--backupset表
select database_name,position,backup_size,
datediff(second,backup_start_date,backup_finish_date)
as time,backup_finish_date as last_backup
from msdb..backupset
--优化备份和还原操作
/*
对于一个大型数据库进行备份操作会花费数个小时的时间。你可以使用下面这些技巧来加快备份和还原数据库的速度
1.首先在服务器本地备份文件,然后把它们转移到另外的独立网络或者磁带驱动器上,这样做会快一些。
2.要在非高峰时间进行完全备份。在一些机器上,备份的I/O操作十分频繁,会显著降低服务器的速度。
3.把文件备份到RAID0或者10驱动器.
4.把大型数据库并行地备份到多个备份设备上。sql server将对每个备份设备创建一个备份线程。
5.如果你正在把数据库备份到一个磁带驱动器上,那么尝试把它备份到并行的磁带驱动器上。
6.如果你正从磁带恢复数据库,那么在磁带驱动器上启动硬件压缩可以提高吞吐量。
*/--www.sqlservercentral.com/experienceddba usp_killusers
--数据库的还原
/*
对数据库进行备份的全部意义就在于可以还原它们,你可能会因为下面这些理由而需要还原数据库:
1.硬件故障
2.master数据库出错
3.用户输入错误的数据,需要回滚
4.维护一台备用服务器
任何数据库的还原过程的第一步都是通过完全数据库还原机制来还原基本数据库。这可以将数据库还原到最近
一次完全备份时的状态。
*/
--改写现有数据库和日志文件
--您试图重写现有数据库。请选中“在现有数据库上强制还原”选项以重写现有数据库。