SHARE
TWEET

Add Deadlock Trace Flags Without Restart

SQLSoldier Dec 8th, 2015 96 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. Declare @TopSQLArg int,
  3.         @NewSQLArg nvarchar(10)
  4. Declare @StartParms Table (ParmID int not null identity(1, 1) primary key,
  5.                                                         ParmValue nvarchar(10) not null,
  6.                                                         ParmData nvarchar(500) not null,
  7.                                                         SQLArg As Cast(Replace(ParmValue, 'SQLArg', '') As Int))
  8. Declare @DBCCStatus Table (TraceFlag int not null primary key,
  9.                                                         TFStatus int not null,
  10.                                                         TFGlobal int not null,
  11.                                                         TFSession int not null)
  12.  
  13. Set Nocount On
  14.  
  15. Insert Into @StartParms (ParmValue, ParmData)
  16. Exec xp_instance_regenumvalues N'HKEY_LOCAL_MACHINE',
  17.                                                  N'Software\Microsoft\MSSQLServer\MSSQLServer\Parameters'
  18.  
  19. Select @TopSQLArg = Max(SQLArg)
  20. From @StartParms
  21.  
  22. If Not Exists (Select 1 From @StartParms
  23.                                 Where ParmData = '-T1204')
  24.   Begin
  25.         Set @TopSQLArg = @TopSQLArg + 1
  26.         Set @NewSQLArg = 'SQLArg' + Cast(@TopSQLArg as nvarchar)
  27.  
  28.         Exec xp_instance_regwrite N'HKEY_LOCAL_MACHINE',
  29.                                                 N'Software\Microsoft\MSSQLServer\MSSQLServer\Parameters',
  30.                                                 @NewSQLArg,
  31.                                                 Reg_Sz,
  32.                                                 N'-T1204'
  33.  
  34.         Delete From @StartParms
  35.  
  36.         Insert Into @StartParms (ParmValue, ParmData)
  37.         Exec xp_instance_regenumvalues N'HKEY_LOCAL_MACHINE',
  38.                                                          N'Software\Microsoft\MSSQLServer\MSSQLServer\Parameters'
  39.  
  40.         If Not Exists (Select 1 From @StartParms
  41.                                         Where ParmData = '-T1204')
  42.           Begin
  43.                 RaisError ('Startup parameter 1204 was not successfully added. Please perform manually.', 1 ,1)
  44.           End
  45.         Else
  46.           Begin
  47.                 Print 'Startup parameter 1204 was successfully added.'
  48.           End
  49.   End
  50. Else
  51.   Begin
  52.         Print 'Startup parameter 1204 already assigned.'
  53.   End
  54.  
  55. If Not Exists (Select 1 From @StartParms
  56.                                 Where ParmData = '-T1222')
  57.   Begin
  58.         Set @TopSQLArg = @TopSQLArg + 1
  59.         Set @NewSQLArg = 'SQLArg' + Cast(@TopSQLArg as nvarchar)
  60.  
  61.         Exec xp_instance_regwrite N'HKEY_LOCAL_MACHINE',
  62.                                                 N'Software\Microsoft\MSSQLServer\MSSQLServer\Parameters',
  63.                                                 @NewSQLArg,
  64.                                                 Reg_Sz,
  65.                                                 N'-T1222'
  66.  
  67.         Delete From @StartParms
  68.  
  69.         Insert Into @StartParms (ParmValue, ParmData)
  70.         Exec xp_instance_regenumvalues N'HKEY_LOCAL_MACHINE',
  71.                                                          N'Software\Microsoft\MSSQLServer\MSSQLServer\Parameters'
  72.  
  73.         If Not Exists (Select 1 From @StartParms
  74.                                 Where ParmData = '-T1222')
  75.           Begin
  76.                 RaisError ('Startup parameter 1222 was not successfully added. Please perform manually.', 1 ,1)
  77.           End
  78.         Else
  79.           Begin
  80.                 Print 'Startup parameter 1222 was successfully added.'
  81.           End
  82.   End
  83. Else
  84.   Begin
  85.         Print 'Startup parameter 1222 already assigned.'
  86.   End
  87.  
  88. Insert Into @DBCCStatus
  89. Exec sp_executesql N'DBCC TraceStatus With No_InfoMsgs'
  90.  
  91. If Not Exists (Select 1 From @DBCCStatus
  92.                                 Where TraceFlag = 1204
  93.                                 And TFGlobal = 1
  94.                                 And TFStatus = 1)
  95.   Begin
  96.         DBCC TraceOn (1204, -1)
  97.   End
  98.  
  99. If Not Exists (Select 1 From @DBCCStatus
  100.                                 Where TraceFlag = 1222
  101.                                 And TFGlobal = 1
  102.                                 And TFStatus = 1)
  103.   Begin
  104.         DBCC TraceOn (1222, -1)
  105.   End
  106.  
  107. Delete From @DBCCStatus
  108.  
  109. Insert Into @DBCCStatus
  110. Exec sp_executesql N'DBCC TraceStatus With No_InfoMsgs'
  111.  
  112. If Not Exists (Select 1 From @DBCCStatus
  113.                                 Where TraceFlag = 1204
  114.                                 And TFGlobal = 1
  115.                                 And TFStatus = 1)
  116.   Begin
  117.         RaisError ('Trace flag 1204 is not running globally.', 1 ,1)
  118.   End
  119. Else
  120.   Begin
  121.         Print 'Trace flag 1204 is running globally.'
  122.   End
  123.  
  124. If Not Exists (Select 1 From @DBCCStatus
  125.                                 Where TraceFlag = 1222
  126.                                 And TFGlobal = 1
  127.                                 And TFStatus = 1)
  128.   Begin
  129.         RaisError ('Trace flag 1222 is not running globally.', 1 ,1)
  130.   End
  131. Else
  132.   Begin
  133.         Print 'Trace flag 1222 is running globally.'
  134.   End
  135.  
  136. Set Nocount Off
RAW Paste Data
Pastebin PRO Summer Special!
Get 40% OFF on Pastebin PRO accounts!
Top