Sql2008--联机与脱机操作


--脱机与连机数据库
--1、通过T-SQL语句分离与附加数据 要分离复制的数据库,该数据库必须是未发布的数据库
EXEC sp_detach_db 'AdventureWorks','true';
--2、保留全文索引文件和全文索引的元数据
EXEC sp_detach_db @dbname='AdventureWorks',@keepfulltextindexfile='true';
--使用创建数据库的FOR ATTACH附加数据库
use master
go
sp_detach_db mytestdb;--首先使用sp_detach_db分离mytestdb数据库
go
--得到SQL SERVER 的数据路径
DECLARE @data_path nvarchar(256)
set @data_path = (select SUBSTRING(physical_name,1,CHARINDEX(N'master.mdf',lower(physical_name))-1))
from master.sys.master_files
where database_id = 1 and file_id =1);
--执行 CREATE DATABASE FOR ATTCH 语句附加mytestdb数据库。
EXEC ('CREATE DATABASE mytestdb ON (filename = '''+ @data_path +'mytestdb.mdf' ') for attach');
go
--数据库备份和还原数据库
--1、数据库恢复模式
 --1、简单恢复模式:一种开销最小的恢复模式,其不恢复事务日志,所以一旦数据库损害,这种模式会面临很大的风险
 --2、完整恢复模式
 --3、大容量日志恢复模式
--更改数据库的恢复模式

--使用T-SQL语句完整备份数据库
USE AdventureWorks;
GO
BACKUP DATABASE AdventureWorks
TO DISK = 'C:\SQLSserverBackups\AdventureWorks.Bak' 
with format, --使用Format选项创建新的媒体
medianame = 'C_SQLSserverBackups',
name = 'Full Backup of AdventureWorks';
go
--差异数据库备份
--首先创建一个完整数据库备份
BACKUP DATABASE TestDataDB
 TO TestDataDB_1
 WITH INIT
GO
--随着时间的流逝
--创建一个差异数据库备份,追加这个备份
--到包含完整数据库备份的备份设备中
BACKUP DATABASE TestDataDB
 TO TestDataDB_1
 WITH DIFFERENTIAL
GO
--下面演示SalesGroupl文件组的SGrplFi2文件和SalesGroup2文件组的SGrp2Fi2文件创建差异文件备份
BACKUP DATABASE Sales
 FILE = 'SGrplFi2',
 FILE = 'SGrp2Fi2'
 TO DISK = 'G:\SQL Server Backups\Sales\SalesGroupl.bck'
go

--数据库还原
--1、完整模式恢复
--2、简单模式恢复
use master;
go --确定数据库是在简单恢复模式下
ALTER DATABASE AdventureWorks SET RECOVERY SIMPLE;
--完整备份 AdventureWorks 数据库
BACKUP DATABASE AdventureWorks TO DISK = 'C:\DBBackups\AdventureWorks.bak'
 with format;
 go
--创建一个差异数据库备
BACKUP DATABASE AdventureWorks TO DISK = 'C:\DBBackups\AdventureWorks.bak'
 WITH DIFFERENTIAL;
--还原完整数据库备份(从备份集1中)
RESTORE DATABASE AdventureWorks FROM DISK = 'C:\DBBackups\AdventureWorks.bak' 
 with file=1,NORECOVERY;
--还原完整数据库备份(从备份集2中)
RESTORE DATABASE AdventureWorks FROM DISK = 'C:\DBBackups\AdventureWorks.bak' 
 with file=2,NORECOVERY;

--文件还原
--脱机文件
ALTER DATABASE database_name modify file set offline
--备份当前的活动事务日志
BACKUP LOG database_name
 to <tail_log_backup> 
 with norecovery
go
--还原文件
RESTORE DATABASE database_name FILE =<NAME>
 FROM <file_backup_of_file_FILE1>
 WITH NORECOVERY
RESTORE DATABASE database_name FILE =<NAME>....
 FROM <file_backup_of_file_FILE2>
 WITH NORECOVERY
--还原日志备份
RESTORE LOG database_name FROM <log_backup>
 WITH NORECOVERY
RESTORE LOG database_name FROM <log_backup>
 WITH NORECOVERY
RESTORE LOG database_name FROM <tail_log_backup>
 WITH RECOVERY

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值