?? 11.3.3 數(shù)據(jù)庫部分還原示例.sql
字號:
--下面的示例創(chuàng)建名為db的示例數(shù)據(jù)庫,并在該數(shù)據(jù)庫中演示部分還原操作。db使用的是完全恢復(fù)模型。示例中演示了把文件組db_fg1還原為數(shù)據(jù)庫db_a。
USE master
--創(chuàng)建測試數(shù)據(jù)庫
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
--備份數(shù)據(jù)庫
BACKUP DATABASE db TO DISK='c:\db.bak' WITH FORMAT
GO
--在文件組 db_fg1 上創(chuàng)建表 ta
CREATE TABLE db.dbo.ta(id int) ON db_fg1
--在文件組 db_fg2 上創(chuàng)建表 tb
CREATE TABLE db.dbo.tb(id int) ON db_fg2
GO
--備份事務(wù)日志
BACKUP LOG db TO DISK ='c:\db_log.bak' WITH FORMAT
GO
--如果因為某些要求只還原ta表,則使用RESTORE DATABASE語句配合WITH PARTIAL和NORECOVERY選項以另一個名稱還原數(shù)據(jù)庫和文件組db_fg1,另外,還將主文件和文件組primary、事務(wù)日志和已還原的文件組中的所有文件移到新位置。日志即得到恢復(fù)
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'
--恢復(fù)日志
RESTORE LOG db_a FROM DISK='c:\db_log.bak' WITH RECOVERY
--顯示恢復(fù)結(jié)果
SELECT COUNT(*) FROM db_a.dbo.ta
/*--結(jié)果
-----------
0
(所影響的行數(shù)為 1 行)
--*/
GO
--因為只恢復(fù)了文件組db_fg1,位于文件組db_fg2上的表tb無法被訪問
SELECT COUNT(*) FROM db_a.dbo.tb
/*--將收到錯誤信息
警告: 查詢處理器無法生成計劃,因為表 'db_a.dbo.tb' 已標(biāo)記為 OFFLINE。
--*/
GO
--刪除測試
DROP DATABASE db,db_a
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -