@@ -23,74 +23,61 @@ MODIFICATION LOG
23
23
*******************************************************************************/
24
24
SET NOCOUNT ON ;
25
25
26
- -- Declare and initialize variables.
27
- DECLARE @MaxValue INT ,
28
- @SQLCMD VARCHAR (MAX ),
29
- @RegHive VARCHAR (50 ),
30
- @RegKey VARCHAR (100 ),
31
- @DebugLevel TINYINT ;
26
+ DECLARE @MaxValue INT ,
27
+ @SQLCMD VARCHAR (MAX ),
28
+ @RegHive VARCHAR (50 ) = ' HKEY_LOCAL_MACHINE' ,
29
+ @RegKey VARCHAR (100 ) = ' Software\Microsoft\MSSQLSERVER\MSSQLServer\Parameters' ,
30
+ @DebugLevel TINYINT = 1 ;
32
31
33
- -- Registry hive and key for SQL Server startup parameters
34
- SET @RegHive = ' HKEY_LOCAL_MACHINE' ;
35
- SET @RegKey = ' Software\Microsoft\MSSQLSERVER\MSSQLServer\Parameters' ;
36
- -- Set debug level: 0 to execute changes, 1 to only show what will happen
37
- SET @DebugLevel = 1 ;
38
-
39
- -- Add the trace flags that you want to modify here.
40
32
DECLARE @TraceFlags TABLE (
41
- TF INT ,
42
- enable BIT ,
43
- enable_on_startup BIT ,
44
- TF2 AS ' -T' + CONVERT (VARCHAR (15 ), TF)
33
+ TF INT ,
34
+ enable BIT ,
35
+ enable_on_startup BIT ,
36
+ TF2 AS ' -T' + CONVERT (VARCHAR (15 ), TF)
45
37
);
46
38
INSERT INTO @TraceFlags (TF, enable , enable_on_startup)
47
- SELECT 1117 , 1 , 1 UNION ALL
48
- SELECT 1118 , 1 , 1 UNION ALL
49
- SELECT 1204 , 0 , 0 UNION ALL
50
- SELECT 1222 , 0 , 0 ;
39
+ VALUES ( 1117 , 1 , 1 ),
40
+ ( 1118 , 1 , 1 ),
41
+ ( 1204 , 0 , 0 ),
42
+ ( 1222 , 0 , 0 ) ;
51
43
52
- -- Get all arguments/parameters when starting up the service.
53
44
DECLARE @SQLArgs TABLE (
54
- Value VARCHAR (50 ),
55
- Data VARCHAR (500 ),
56
- ArgNum AS CONVERT (INT , REPLACE (Value , ' SQLArg' , ' ' ))
45
+ Value VARCHAR (50 ),
46
+ Data VARCHAR (500 ),
47
+ ArgNum AS CONVERT (INT , REPLACE (Value , ' SQLArg' , ' ' ))
57
48
);
58
49
INSERT INTO @SQLArgs
59
50
EXEC master .sys .xp_instance_regenumvalues @RegHive, @RegKey;
60
51
61
- -- Get the highest argument number that is currently set
62
52
SELECT @MaxValue = MAX (ArgNum) FROM @SQLArgs;
63
53
PRINT ' MaxValue: ' + CAST (@MaxValue AS VARCHAR );
64
54
65
- -- Disable specified trace flags
66
55
SELECT @SQLCMD = ' DBCC TRACEOFF(' +
67
56
STUFF ((SELECT ' ,' + CONVERT (VARCHAR (15 ), TF)
68
57
FROM @TraceFlags
69
58
WHERE enable = 0
70
59
ORDER BY TF
71
- FOR XML PATH (' ' ), TYPE ).value (' .' ,' varchar(max)' ), 1 , 1 , ' ' ) + ' , -1);'
60
+ FOR XML PATH (' ' ), TYPE ).value (' .' ,' varchar(max)' ), 1 , 1 , ' ' ) + ' , -1);';
72
61
IF @DebugLevel = 0 EXEC (@SQLCMD);
73
62
PRINT ' Disable TFs Command: "' + @SQLCMD + ' "' ;
74
63
75
- -- Enable specified trace flags
76
64
SELECT @SQLCMD = ' DBCC TRACEON(' +
77
65
STUFF ((SELECT ' ,' + CONVERT (VARCHAR (15 ), TF)
78
66
FROM @TraceFlags
79
67
WHERE enable = 1
80
68
ORDER BY TF
81
- FOR XML PATH (' ' ), TYPE ).value (' .' ,' varchar(max)' ), 1 , 1 , ' ' ) + ' , -1);'
69
+ FOR XML PATH (' ' ), TYPE ).value (' .' ,' varchar(max)' ), 1 , 1 , ' ' ) + ' , -1);';
82
70
IF @DebugLevel = 0 EXEC (@SQLCMD);
83
71
PRINT ' Enable TFs Command: "' + @SQLCMD + ' "' ;
84
72
85
- -- Prepare to update the registry with new trace flags
86
73
DECLARE cSQLParams CURSOR LOCAL FAST_FORWARD FOR
87
74
WITH cte AS (
88
- SELECT * ,
75
+ SELECT * ,
89
76
ROW_NUMBER () OVER (ORDER BY ISNULL (ArgNum, 999999999 ), TF) - 1 AS RN
90
77
FROM @SQLArgs arg
91
78
FULL OUTER JOIN @TraceFlags tf ON arg .Data = tf .TF2
92
79
), cte2 AS (
93
- SELECT ca .Value , ca .Data ,
80
+ SELECT ca .Value , ca .Data ,
94
81
ROW_NUMBER () OVER (ORDER BY RN) - 1 AS RN2
95
82
FROM cte
96
83
CROSS APPLY (SELECT ISNULL (Value , ' SQLArg' + CONVERT (VARCHAR (15 ), RN)), ISNULL (Data , TF2)) ca(Value , Data )
113
100
CLOSE cSQLParams;
114
101
DEALLOCATE cSQLParams;
115
102
116
- -- Delete extra SQLArg values if more trace flags were removed than added
117
103
WHILE @MaxValue > @MaxRN2
118
104
BEGIN
119
105
SET @Value = ' SQLArg' + CONVERT (VARCHAR (15 ), @MaxValue);
0 commit comments