Dun*_*amb 4 sql-server-2008 backup restore
我有一个任务:我创建了一个lamb
包含几个表的文件组的数据库。
我需要将 csv 提取到命名的文件组中的表中lamb
并备份该文件组。
然后再次提取另一个 csv 文件并再次备份。
但我需要能够恢复第一个备份。
什么是备份和恢复方法?是否可以仅恢复lamb
文件组?
什么是备份和恢复方法? 它被称为Piece Meal Restore,未恢复的文件组可以在以后恢复。
是否可以仅恢复 Lamb 文件组? 是的,可以只恢复 Lamb 文件组。
下面将向您展示 - 如何做到这一点。
创建一个名为“FGTest”的数据库
create database [FGTest] on primary (
name = N'FGTest'
,FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\DATA\FGTest.mdf'
,SIZE = 3072 KB
,FILEGROWTH = 1024 KB
)
,FILEGROUP [lamb] (
name = N'lamb'
,-- fileGroup1
FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\DATA\FGTest_2.ndf'
,SIZE = 3072 KB
,FILEGROWTH = 1024 KB
)
,FILEGROUP [lamb1] (
name = N'lamb1'
,-- fileGroup2
FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\DATA\FGTest_3.ndf'
,SIZE = 3072 KB
,FILEGROWTH = 1024 KB
) LOG on (
name = N'FGTest_log'
,FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\DATA\FGTest_log.ldf'
,SIZE = 1024 KB
,FILEGROWTH = 10 %
)
Run Code Online (Sandbox Code Playgroud)
走
现在在不同的文件组上创建表 - 羔羊和羔羊1
create table TAB1 (
TAB1_ID int IDENTITY(1, 1)
,TAB1_NAME varchar(100)
,constraint PK_TAB1 primary key (TAB1_ID)
) on lamb -- Filegroup we created.
go
create table TAB1_lamb1 (
TAB1_ID int IDENTITY(1, 1)
,TAB1_NAME varchar(100)
,constraint PK_TAB1_lamb1 primary key (TAB1_ID)
) on lamb1 -- 2nd Filegroup we created.
go
Run Code Online (Sandbox Code Playgroud)进行基本备份
-- Take a base backup
BACKUP DATABASE [FGTest] to
DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\Backup\FGTest_basebackup.bak'
with init, stats = 10
go
Run Code Online (Sandbox Code Playgroud)现在插入一些值....此时您可以加载 CSV
INSERT INTO FGTest..TAB1(TAB1_NAME)
select ('TAB1')
union all
select ('TAB2')
Run Code Online (Sandbox Code Playgroud)备份文件组羊肉 -- 有 2 条记录
-- backup filegroup lamb - with 2 records
BACKUP DATABASE [FGTest] FILEGROUP = N'lamb'
TO DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\Backup\FGTest_2Records.bak'
WITH INIT, NAME = N'FGTest-Full Filegroup Backup',
STATS = 10
GO
-- log backup filegroup lamb - with 2 records
BACKUP LOG [FGTest] TO DISK = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\Backup\FGTest_2records.trn' WITH INIT
Run Code Online (Sandbox Code Playgroud)现在在lamb 和lamb1 文件组中插入更多值
INSERT INTO FGTest..TAB1(TAB1_NAME)
select ('TAB3')
union all
select ('TAB4')
INSERT INTO FGTest..TAB1_lamb1(TAB1_NAME)
select ('TAB3')
union all
select ('TAB4')
Run Code Online (Sandbox Code Playgroud)现在备份lamb和lamb1文件组以及T-logs
-- -- backup filegroup lamb - with 4 records
BACKUP DATABASE [FGTest] FILEGROUP = N'lamb'
TO DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\Backup\FGTest_4Records.bak'
WITH INIT, NAME = N'FGTest-Full Filegroup Backup',
STATS = 10
GO
-- log backup filegroup lamb - with 4 records
BACKUP LOG [FGTest] TO DISK = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\Backup\FGTest_4records.trn' WITH INIT
-- -- backup filegroup lamb1 - with 2 records
BACKUP DATABASE [FGTest] FILEGROUP = N'lamb1'
TO DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\Backup\FGTest_lamb1.bak'
WITH INIT, NAME = N'FGTest-Full Filegroup Backup',
STATS = 10
GO
Run Code Online (Sandbox Code Playgroud)
-- 日志备份文件组lamb1 - 有2条记录
BACKUP LOG [FGTest] TO DISK = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\Backup\FGTest_lamb1_log.trn' WITH INIT
Run Code Online (Sandbox Code Playgroud)使用 PARTIAL 和 NORECOVERY 恢复数据库
use master
go
-- restore the base backup with PARTIAL and NORECOVERY
restore database [FGTest]
filegroup = 'Primary'
from disk = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\Backup\FGTest_basebackup.bak'
with REPLACE, PARTIAL, NORECOVERY
go
Run Code Online (Sandbox Code Playgroud)现在与 T-log 一起恢复 Lamb 文件组
RESTORE DATABASE [FGTest] FILE = N'lamb' FROM
DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\Backup\FGTest_2Records.bak'
WITH FILE = 1, REPLACE, STATS = 10
GO
RESTORE LOG [FGTest] FROM DISK = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\Backup\FGTest_2records.trn'
WITH FILE = 1, NORECOVERY
Run Code Online (Sandbox Code Playgroud)-- 由于您想将数据库恢复到第 1 个备份并且您已经恢复了序列,因此是时候将数据库恢复为 2 条记录了。
使用恢复恢复数据库 [FGTest]
既然你没带其他文件组联机,当您尝试查询TAB1_lamb1驻留在lamb1文件组表,查询处理器将抛出一个错误。