⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 11.3.3 数据库部分还原示例.sql

📁 很好的sql 文档,可能邦你成为sql 高手
💻 SQL
字号:
--下面的示例创建名为db的示例数据库,并在该数据库中演示部分还原操作。db使用的是完全恢复模型。示例中演示了把文件组db_fg1还原为数据库db_a。

USE master

--创建测试数据库
CREATE DATABASE db
ON PRIMARY(
	NAME='db_data',
	FILENAME= 'c:\db_data.mdf'),
FILEGROUP db_fg1(
	NAME = 'db_fg1_data',
	FILENAME = 'c:\db_fg1_data.ndf'),
FILEGROUP db_fg2(
	NAME = 'db_fg2_data',
	FILENAME = 'c:\db_fg2_data.ndf')
LOG ON(
	NAME='db_log',
	FILENAME ='c:\db.ldf')
GO

--备份数据库
BACKUP DATABASE db TO DISK='c:\db.bak' WITH FORMAT
GO

--在文件组 db_fg1 上创建表 ta
CREATE TABLE db.dbo.ta(id int) ON db_fg1
--在文件组 db_fg2 上创建表 tb
CREATE TABLE db.dbo.tb(id int) ON db_fg2
GO

--备份事务日志
BACKUP LOG db TO DISK ='c:\db_log.bak' WITH FORMAT
GO

--如果因为某些要求只还原ta表,则使用RESTORE DATABASE语句配合WITH PARTIAL和NORECOVERY选项以另一个名称还原数据库和文件组db_fg1,另外,还将主文件和文件组primary、事务日志和已还原的文件组中的所有文件移到新位置。日志即得到恢复
RESTORE DATABASE db_a 
	FILEGROUP='db_fg1' 
	FROM DISK='c:\db.bak' 
	WITH NORECOVERY,PARTIAL,
	MOVE 'db_data' TO 'c:\db_data_a.mdf',
	MOVE 'db_log' TO 'c:\db_log_a.ldf',
	MOVE 'db_fg1_data' TO 'c:\db_fg1_data_a.ndf'

--恢复日志
RESTORE LOG db_a FROM DISK='c:\db_log.bak' WITH RECOVERY
--显示恢复结果
SELECT COUNT(*) FROM db_a.dbo.ta
/*--结果
----------- 
0

(所影响的行数为 1 行)
--*/
GO

--因为只恢复了文件组db_fg1,位于文件组db_fg2上的表tb无法被访问
SELECT COUNT(*) FROM db_a.dbo.tb
/*--将收到错误信息
警告: 查询处理器无法生成计划,因为表 'db_a.dbo.tb' 已标记为 OFFLINE。
--*/
GO

--删除测试
DROP DATABASE db,db_a

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -