-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathHotFix10.0.38-SysRowVersion.sql
65 lines (48 loc) · 2.23 KB
/
HotFix10.0.38-SysRowVersion.sql
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
DECLARE @KernelTables TABLE (
TableName NVARCHAR(200),
TableNumber Int);
DECLARE @ResultKernelTables TABLE (
TableNumber Int);
-- List of all Kernel Tables, with a unique TableNumber
INSERT INTO @KernelTables(TableName, TableNumber) VALUES('SQLDICTIONARY',1)
INSERT INTO @KernelTables(TableName, TableNumber) VALUES('SYSCONFIG',2)
INSERT INTO @KernelTables(TableName, TableNumber) VALUES('USERINFO',3)
INSERT INTO @KernelTables(TableName, TableNumber) VALUES('SECURITYROLE',4)
INSERT INTO @KernelTables(TableName, TableNumber) VALUES('DATABASELOG',5)
INSERT INTO @KernelTables(TableName, TableNumber) VALUES('AOSDUPLICATEKEYEXCEPTIONMESSAGE',6)
INSERT INTO @KernelTables(TableName, TableNumber) VALUES('TIMEZONESLIST',7)
INSERT INTO @KernelTables(TableName, TableNumber) VALUES('TIMEZONESRULESDATA',8)
-- get the KernelTable names
DECLARE KernelTableName_cursor CURSOR LOCAL FOR
SELECT TableName, TableNumber
FROM @KernelTables
-- (-1) : Exception happened
-- 0 : Dropped no column
-- 1 : Dropped atleast one Kernel Table column
DECLARE @Result INT = 0;
DECLARE @KernelTableName NVARCHAR(200);
DECLARE @KernelTableNumber INT;
DECLARE @SqlCmd NVARCHAR(500);
BEGIN TRY
BEGIN TRANSACTION T1
OPEN KernelTableName_cursor;
FETCH NEXT FROM KernelTableName_cursor INTO @KernelTableName, @KernelTableNumber;
WHILE @@FETCH_STATUS = 0
BEGIN
IF COL_LENGTH(@KernelTableName, 'SYSROWVERSIONNUMBER') IS NOT NULL
BEGIN
SET @SqlCmd = 'ALTER TABLE dbo.' + @KernelTableName + ' DROP COLUMN SYSROWVERSIONNUMBER';
EXEC sp_executesql @SqlCmd;
SET @Result = 1;
INSERT INTO @ResultKernelTables(TableNumber) VALUES(@KernelTableNumber);
END
FETCH NEXT FROM KernelTableName_cursor INTO @KernelTableName, @KernelTableNumber;
END
COMMIT TRANSACTION T1
SELECT @Result AS Result, TableNumber AS KernelTableNumber, 0 AS Error, '' AS ErrorMessage
FROM @ResultKernelTables;
END TRY
BEGIN CATCH
SELECT -1 AS Result, -1 AS KernelTableNumber, ERROR_NUMBER() as Error, ERROR_MESSAGE() as ErrorMessage
ROLLBACK TRANSACTION T1
END CATCH