-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRestoreOnlySomeFilegroups.sql
More file actions
98 lines (78 loc) · 2.85 KB
/
RestoreOnlySomeFilegroups.sql
File metadata and controls
98 lines (78 loc) · 2.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
USE [master]
GO
IF EXISTS (SELECT name FROM sys.databases WHERE name = N'RestoreOnlySomeFilegroups')
DROP DATABASE [RestoreOnlySomeFilegroups]
GO
CREATE DATABASE [RestoreOnlySomeFilegroups]
ALTER DATABASE [RestoreOnlySomeFilegroups] SET RECOVERY SIMPLE
GO
ALTER DATABASE [RestoreOnlySomeFilegroups] ADD FILEGROUP [FGReadOnly]
ALTER DATABASE [RestoreOnlySomeFilegroups] ADD FILEGROUP [FGReadWrite]
GO
DECLARE @DefaultDataDir NVARCHAR(4000)
DECLARE @Query NVARCHAR(4000)
EXEC xp_instance_regread N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultData', @DefaultDataDir OUTPUT
IF RIGHT(@DefaultDataDir, 1) <> '\'
SET @DefaultDataDir += '\'
SET @Query = CONCAT('ALTER DATABASE [RestoreOnlySomeFilegroups] ADD FILE ( NAME = N''FReadOnly'', FILENAME = N''', @DefaultDataDir,'FReadOnly.ndf'') TO FILEGROUP [FGReadOnly]')
EXEC(@query)
SET @Query = CONCAT('ALTER DATABASE [RestoreOnlySomeFilegroups] ADD FILE ( NAME = N''FReadWrite'', FILENAME = N''', @DefaultDataDir,'FReadWrite.ndf'') TO FILEGROUP [FGReadWrite]')
EXEC(@query)
GO
USE [RestoreOnlySomeFilegroups]
GO
CREATE PARTITION FUNCTION [PFMixed] (BIT) AS RANGE RIGHT FOR VALUES (1)
GO
CREATE PARTITION SCHEME [PSMixed] AS PARTITION [PFMixed] TO ([FGReadWrite], [FGReadOnly])
GO
CREATE TABLE [TblMixed]
(
ID INT NOT NULL,
Archived BIT NOT NULL,
PRIMARY KEY
(
ID,
Archived
) ON [PSMixed](Archived)
)
GO
INSERT INTO dbo.TblMixed (ID, Archived)
SELECT *
FROM (VALUES (1,1),(2,1),(3,1),(4,1),(5,1),(100,0),(101,0)) Tst (ID, Archived)
GO
ALTER DATABASE [RestoreOnlySomeFilegroups] MODIFY FILEGROUP [FGReadOnly] READONLY
GO
BACKUP DATABASE [RestoreOnlySomeFilegroups] FILEGROUP = 'FGReadOnly' TO DISK = 'RestoreOnlySomeFilegroupsReadOnly.bak' WITH INIT
GO
BACKUP DATABASE [RestoreOnlySomeFilegroups] READ_WRITE_FILEGROUPS TO DISK = 'RestoreOnlySomeFilegroupsReadWrite.bak' WITH INIT
GO
INSERT INTO dbo.TblMixed (ID, Archived) VALUES (200,0)
GO
SELECT * FROM dbo.TblMixed
GO
USE [master]
GO
RESTORE DATABASE [RestoreOnlySomeFilegroups] READ_WRITE_FILEGROUPS FROM DISK = 'RestoreOnlySomeFilegroupsReadWrite.bak' WITH PARTIAL, RECOVERY
GO
RESTORE DATABASE [RestoreOnlySomeFilegroups] FILEGROUP = 'FGReadOnly' WITH RECOVERY
GO
USE [RestoreOnlySomeFilegroups]
GO
INSERT INTO dbo.TblMixed (ID, Archived) VALUES (300,0)
GO
SELECT * FROM dbo.TblMixed
GO
USE [master]
GO
DROP DATABASE [RestoreOnlySomeFilegroups]
GO
RESTORE DATABASE [RestoreOnlySomeFilegroups] READ_WRITE_FILEGROUPS FROM DISK = 'RestoreOnlySomeFilegroupsReadWrite.bak' WITH PARTIAL, RECOVERY
GO
RESTORE DATABASE [RestoreOnlySomeFilegroups] FILEGROUP = 'FGReadOnly' FROM DISK = 'RestoreOnlySomeFilegroupsReadOnly.bak' WITH RECOVERY
GO
USE [RestoreOnlySomeFilegroups]
GO
INSERT INTO dbo.TblMixed (ID, Archived) VALUES (400,0)
GO
SELECT * FROM dbo.TblMixed
GO