forked from himadanreddy/SQL-DBA-SCRIPTS
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path010.tbl CHECKDB_Parms.sql
More file actions
132 lines (115 loc) · 4.63 KB
/
010.tbl CHECKDB_Parms.sql
File metadata and controls
132 lines (115 loc) · 4.63 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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
USE [DBAdmin]
GO
IF dbo.fn_SQLVersion() >= 9
BEGIN
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[CHECKDB_Parms]') AND type in (N'U'))
BEGIN
PRINT 'Dropping table [CHECKDB_Parms] - SQL 2005'
DROP TABLE [dbo].[CHECKDB_Parms]
END
END
IF dbo.fn_SQLVersion() < 9
BEGIN
PRINT 'DBAdmin CheckDB processing is not written for SQL 2000. Use the Standard Maintenance Plan processing.'
PRINT '*** Processing of this script is being aborted ***'
RAISERROR ('DBAdmin CheckDB processing is not written for SQL 2000', 20, 1) WITH LOG
END
GO
CREATE TABLE [dbo].[CHECKDB_Parms](
[ScheduleID] [int] IDENTITY(1,1) NOT NULL,
[DBGroup] [varchar](16) NULL,
[IncludeDBs] [varchar](2048) NULL,
[ExcludeDBs] [varchar](2048) NULL,
[SplitOverDays] [tinyint] NULL,
[CycleStartsOnDayOfWeek] [tinyint] NULL,
[CycleStartsOnDayOfMonth] [tinyint] NULL,
CONSTRAINT [PK_CHECKDB_Parms] PRIMARY KEY CLUSTERED
(
[ScheduleID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[CHECKDB_Parms] WITH CHECK ADD CONSTRAINT [CK_CHECKDB_Parms_DBGroup] CHECK (([DBGroup]='All' OR [DBGroup]='System' OR [DBGroup]='User'))
GO
ALTER TABLE [dbo].[CHECKDB_Parms] CHECK CONSTRAINT [CK_CHECKDB_Parms_DBGroup]
GO
ALTER TABLE [dbo].[CHECKDB_Parms] WITH CHECK ADD CONSTRAINT [CK_CHECKDB_Parms_DBGroup_or_IncludeDBs] CHECK (([DBGroup] IS NOT NULL OR [IncludeDBs] IS NOT NULL))
GO
ALTER TABLE [dbo].[CHECKDB_Parms] CHECK CONSTRAINT [CK_CHECKDB_Parms_DBGroup_or_IncludeDBs]
GO
CREATE TRIGGER [dbo].[tiu_CHECKDB_Parms]
ON [dbo].[CHECKDB_Parms]
AFTER INSERT, UPDATE
AS
BEGIN
SET NOCOUNT ON;
UPDATE dbo.CHECKDB_Parms
SET SplitOverDays = 1
WHERE ScheduleID IN (SELECT ScheduleID
FROM inserted
WHERE SplitOverDays IS NULL or
SplitOverDays < 1)
UPDATE dbo.CHECKDB_Parms
SET SplitOverDays = 14
WHERE ScheduleID IN (SELECT ScheduleID
FROM inserted
WHERE SplitOverDays > 14)
-- CycleStartsOnDayOfWeek: 1 = Sunday.
UPDATE dbo.CHECKDB_Parms
SET CycleStartsOnDayOfWeek = 1
WHERE ScheduleID IN (SELECT ScheduleID
FROM inserted
WHERE CycleStartsOnDayOfWeek < 1)
UPDATE dbo.CHECKDB_Parms
SET CycleStartsOnDayOfWeek = 7
WHERE ScheduleID IN (SELECT ScheduleID
FROM inserted
WHERE CycleStartsOnDayOfWeek > 7)
-- If BOTH CycleStartsOnDayOfWeek and CycleStartsOnDayOfMonth are specified, this becomes
-- the CycleStartsOnDayOfWeek of the CycleStartsOnDayOfMonth Week, so
-- CycleStartsOnDayOfWeek = 1 / CycleStartsOnDayOfMonth = 2 is the Sunday of the Second Week of the Month
DECLARE @DayOfWeek_DayOfMonth TABLE (
ScheduleID INT,
CycleStartsOnDayOfWeek TINYINT,
CycleStartsOnDayOfMonth TINYINT)
INSERT @DayOfWeek_DayOfMonth
SELECT ScheduleID,
CycleStartsOnDayOfWeek,
CycleStartsOnDayOfMonth
FROM inserted
WHERE (CycleStartsOnDayOfWeek IS NOT NULL)
AND (CycleStartsOnDayOfMonth IS NOT NULL AND
(CycleStartsOnDayOfMonth < 1 OR CycleStartsOnDayOfMonth > 4))
UPDATE dbo.CHECKDB_Parms
SET CycleStartsOnDayOfMonth = 1
WHERE ScheduleID IN (SELECT ScheduleID
FROM @DayOfWeek_DayOfMonth
WHERE CycleStartsOnDayOfMonth < 1)
UPDATE dbo.CHECKDB_Parms
SET CycleStartsOnDayOfMonth = 4
WHERE ScheduleID IN (SELECT ScheduleID
FROM @DayOfWeek_DayOfMonth
WHERE CycleStartsOnDayOfMonth > 4)
END
GO
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[CHECKDB_Parms]') AND type in (N'U'))
BEGIN
PRINT 'Table [CHECKDB_Parms] created - SQL 2005'
END
GO
INSERT [dbo].[CHECKDB_Parms](
[DBGroup],
[SplitOverDays],
[CycleStartsOnDayOfWeek])
SELECT 'System',
1,
1
UNION
SELECT 'User',
1,
7
GO
IF EXISTS (SELECT * FROM [DBAdmin].[dbo].[CHECKDB_Parms])
BEGIN
PRINT 'Table [CHECKDB_Parms] seeded with System and User schedules.'
END