SQL Server 2008备份大全实战(七)

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介:


这一篇博文探讨下SQL Server 2008 备份的实际操作,事实上SQL Server 2008并不关心数据是备份到物理磁盘上还是磁带上,在SQL Server 2008数据库备份中,预定义的目标位置叫做设备。这里设备是对硬盘,磁带机等备份存储的通称。通俗些讲,SQL Server 2008是把数据备份到备份设备中。当然,SQL Server 2008同样也支持直接把数据备份到物理磁盘的物理文件上。可以通过T-SQLSSMS图形化,SMO等创建备份设备。

为了最大化保证数据的完整性和可用性,这一篇博文的Demo全部在完整恢复模式和100兼容级别下完成,可以通过下面的语句查看当前数据库的恢复模式和兼容级别,比如查看AdventureWorks2008数据库的恢复模式和兼容级别
select  name,recovery_model_desc,compatibility_level  from sys.databases 
where  DB_NAME(database_id) =  'AdventureWorks2008'
 
新创建的用户数据库与model 数据库使用相同的恢复模式。若希望新数据库使用简单恢复模式,请将model 的恢复模式更改为简单。默认master,msdb,tempdb为简单恢复模式,model为完整恢复模式。
当然也可以通过SSMS图形界面查看一个数据库的恢复模式和兼容级别,SSMS->右键单击某个数据库选择属性->选项,如下图:
 
 
如何创建备份设别呢?可以通过 sp_addumpdevice 存储过程,语法如下:
sp_addumpdevice  [ @devtype = ] 'device_type'
        , [ @logicalname = ] 'logical_name'
        @physicalname = 'physical_name'
device_type 表示备份设备的类型,可以使用disk(磁盘)或磁带(tape)2个枚举,disk表示用硬盘文件作为备份设备。tape表示 windows  支持的任何磁带设备。tape在未来版本中可能将不再支持,所以尽量使用disk
logical_name 表示备份设备的逻辑名称。在 BACKUP  RESTORE 语句中将会被使用。
physical_name 表示备份设备的物理名称。
通过磁盘文件来创建备份设备:
use master; 
go 
exec  sp_addumpdevice  'disk''DemoDB2008ToDisk''c:\sql2008trainning\BackupDB\DemoDB2008Device.bak';
 
还可以通过网络共享磁盘文件来创建备份设备:
use master; 
go 
exec  sp_addumpdevice  'disk''DemoDB2008ToDisk''\\192.168.1.159\ShareBakFromLiTao\DemoDB2008Device.bak';
 
当然也可以通过SSMS图形化创建备份设备,因为比较简单,这里就不再演示。
下面就来演示创建各种数据库备份,比如我有一个DemoDB2008这样的数据库,那么使用备份设备DemoDB2008ToDisk创建各种备份的代码如下:
--完整备份数据库到备份设备 
backup  database DemoDB2008 
to DemoDB2008ToDisk --备份设备 
with  name= 'DemoDB2008 完整备份',    
description= 'DemoDB2008 backup' 

--差异备份数据库到备份设备 
backup  database DemoDB2008 
to DemoDB2008ToDisk 
with differential, name= 'DemoDB2008 差异备份' 

--备份事务日志到备份设备 
backup  log DemoDB2008 
to DemoDB2008ToDisk 
with  name =  'DemoDB2008 日志备份' 

--仅拷贝数据库到备份设备 
backup  database DemoDB2008 
to DemoDB2008ToDisk 
with copy_only 

--尾日志备份-- 
backup  log DemoDB2008 
to DemoDB2008ToDisk 
with  name =  'DemoDB2008 尾日志备份',norecovery
为了演示部分备份和文件备份,这里提供一个合适的数据库,同时假定阅读这篇博文的朋友已经熟悉数据库文件类型和文件组类型,创建数据库的代码如下:
create  database DemoDBForPartial 
on  primary 

   name = N 'demoDB'
   filename = N 'c:\dbFiles\demoDB.mdf'
   size = 3, 
  maxsize = unlimited, 
   filegrowth = 1 
), 

   name = N 'demoDB01'
   filename = N 'c:\dbFiles\demoDB01.ndf'
   size = 5, 
  maxsize = 1000, 
   filegrowth = 2 
), 
filegroup fgJanuary    

   name = N 'demoDB02'
   filename = N 'c:\dbFiles\demoDB02.ndf'
   size = 10, 
  maxsize = 30, 
   filegrowth = 5 
), 
filegroup fgFebruary 

   name = N 'demoDB03'
   filename = N 'c:\dbFiles\demoDB03.ndf'
   size = 25, 
  maxsize = 928, 
   filegrowth = 20 
), 

   name = N 'demoDB04'
   filename = N 'c:\dbFiles\demoDB04.ndf'
   size = 25, 
  maxsize = 1024, 
   filegrowth = 20 
), 
filegroup fgMarch 

   name = N 'demoDB05'
   filename = N 'c:\dbFiles\demoDB05.ndf'
   size = 25, 
  maxsize = 200, 
   filegrowth = 20 
), 

   name = N 'demoDB06'
   filename = N 'c:\dbFiles\demoDB06.ndf'
   size = 25, 
  maxsize = 50, 
   filegrowth = 20 

log  on    

   name = N 'demoDB_log'
   filename = N 'c:\dbFiles\demoDB_log.ldf'
   size = 1, 
  maxsize = 1000, 
   filegrowth = 10% 
)
 
首先创建备份设备DemoDBForPartialToDisk,如下:
use master; 
go 
exec  sp_addumpdevice  'disk''DemoDBForPartialToDisk''c:\sql2008trainning\BackupDB\DemoDBForPartialDevice.bak'
 
部分备份包含主文件组、每个读写文件组以及任何指定(可选)的只读文件组中的所有数据。
第一个 部分备份 演示:由于刚创建的数据库 DemoDBForPartial 没有只读文件组,所以这个备份只包含主文件组和每个读写文件组,代码如下:
backup  database DemoDBForPartial read_write_filegroups 
to DemoDBForPartialToDisk
 
第二个部分备份演示:为了演示备份只读文件组,先修改数据库,代码如下:
alter  database DemoDBForPartial modify filegroup fgJanuary readonly 
alter  database DemoDBForPartial modify filegroup fgMarch readonly
 
接着再次进行部分备份,这次指定一个只读文件组fgMarch,代码如下:

backup  database DemoDBForPartial read_write_filegroups,filegroup =  'fgMarch' 
to DemoDBForPartialToDisk
 
文件备份包含一个或多个文件(或文件组)中的所有数据,文件备份的代码如下:
文件组备份:
backup  database DemoDBForPartial filegroup =  'primary',    filegroup =  'fgFebruary' , filegroup =  'fgmarch'    
to    DemoDBForPartialToDisk    
with  name =  'demodbforpartial-完整文件和文件组备份' 

backup  database DemoDBForPartial  file =  'demodb05',     file =  'demodb03',    filegroup =  'primary'    
to    DemoDBForPartialToDisk    
with  name =  'demodbforpartial-完整文件和文件组备份'
 
文件备份:
backup  database DemoDBForPartial  file =  'demodb03',     file =  'demodb05'    
to    DemoDBForPartialToDisk    
with  name =  'demodbforpartial-完整文件备份'
 
差异文件组备份:
backup  database DemoDBForPartial filegroup =  'primary',    filegroup =  'fgFebruary' , filegroup =  'fgmarch'    
to    DemoDBForPartialToDisk    
with  name =  'demodbforpartial-差异文件组备份',differential
 
如果你不习惯备份到备份设备,也可以直接备份到磁盘文件,代码如下:
--完整备份数据库到磁盘文件 
backup  database DemoDB2008  --备份数据库 
to  disk= 'c:\sql2008trainning\BackupDB\DemoDB2008.bak' 
with  name= 'DemoDB2008 完整备份',    
description= 'DemoDB2008 backup' 

--差异备份数据库到磁盘文件 
backup  database DemoDB2008 
to  disk =  'c:\sql2008trainning\BackupDB\DemoDB2008.bak' 
with differential, name= 'DemoDB2008 差异备份' 

--备份事务日志到磁盘文件 
backup  log DemoDB2008 
to  disk =  'c:\sql2008trainning\BackupDB\DemoDB2008.bak' 
with  name =  'DemoDB2008 日志备份' 

--拷贝数据库到磁盘文件 
backup  database DemoDB2008 
to  disk= 'c:\sql2008trainning\BackupDB\DemoDB2008_copy.bak' 
with copy_only



















本文转自terryli51CTO博客,原文链接:http://blog.51cto.com/terryli/485782 ,如需转载请自行联系原作者

 
相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
9天前
|
SQL 人工智能 算法
【SQL server】玩转SQL server数据库:第二章 关系数据库
【SQL server】玩转SQL server数据库:第二章 关系数据库
51 10
|
1月前
|
SQL 数据库 数据安全/隐私保护
Sql Server数据库Sa密码如何修改
Sql Server数据库Sa密码如何修改
|
19天前
|
SQL
启动mysq异常The server quit without updating PID file [FAILED]sql/data/***.pi根本解决方案
启动mysq异常The server quit without updating PID file [FAILED]sql/data/***.pi根本解决方案
16 0
|
9天前
|
SQL 算法 数据库
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
68 6
|
1天前
|
SQL 自然语言处理 数据库
NL2SQL实践系列(2):2024最新模型实战效果(Chat2DB-GLM、书生·浦语2、InternLM2-SQL等)以及工业级案例教学
NL2SQL实践系列(2):2024最新模型实战效果(Chat2DB-GLM、书生·浦语2、InternLM2-SQL等)以及工业级案例教学
NL2SQL实践系列(2):2024最新模型实战效果(Chat2DB-GLM、书生·浦语2、InternLM2-SQL等)以及工业级案例教学
|
4天前
|
SQL 安全 网络安全
IDEA DataGrip连接sqlserver 提示驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接的解决方法
IDEA DataGrip连接sqlserver 提示驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接的解决方法
8 0
|
5天前
|
SQL 数据库
数据库SQL语言实战(二)
数据库SQL语言实战(二)
|
9天前
|
SQL 存储 数据挖掘
数据库数据恢复—RAID5上层Sql Server数据库数据恢复案例
服务器数据恢复环境: 一台安装windows server操作系统的服务器。一组由8块硬盘组建的RAID5,划分LUN供这台服务器使用。 在windows服务器内装有SqlServer数据库。存储空间LUN划分了两个逻辑分区。 服务器故障&初检: 由于未知原因,Sql Server数据库文件丢失,丢失数据涉及到3个库,表的数量有3000左右。数据库文件丢失原因还没有查清楚,也不能确定数据存储位置。 数据库文件丢失后服务器仍处于开机状态,所幸没有大量数据写入。 将raid5中所有磁盘编号后取出,经过硬件工程师检测,没有发现明显的硬件故障。以只读方式将所有磁盘进行扇区级的全盘镜像,镜像完成后将所
数据库数据恢复—RAID5上层Sql Server数据库数据恢复案例
|
12天前
|
SQL 存储 关系型数据库
【MySQL实战笔记】02.一条SQL更新语句是如何执行的-2
【4月更文挑战第5天】两阶段提交是为确保`redo log`和`binlog`逻辑一致,避免数据不一致。若先写`redo log`, crash后数据可能丢失,导致恢复后状态错误;若先写`binlog`,crash则可能导致重复事务,影响数据库一致性。一天一备相较于一周一备,能缩短“最长恢复时间”,但需权衡额外的存储成本。
16 1
|
13天前
|
SQL 数据安全/隐私保护
SQL Server 2016安装教程
SQL Server 2016安装教程
17 1