Explorar o código

Updated Stored procedure spGetPerfCountersFromPowerShell to handle named instance

Parikshit %!s(int64=8) %!d(string=hai) anos
pai
achega
3885b1a74f
Modificáronse 1 ficheiros con 46 adicións e 27 borrados
  1. 46 27
      SQL-Performance-Baseline/CREATEOBJECTS.sql

+ 46 - 27
SQL-Performance-Baseline/CREATEOBJECTS.sql

@@ -531,38 +531,57 @@ IF  NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[spGetPe
 -- Author:		Adrian Sullivan, [email protected]
 -- Author:		Adrian Sullivan, [email protected]
 -- Create date: 2016/12/12
 -- Create date: 2016/12/12
 -- Description:	Taking away the need for PS1 files and script folder
 -- Description:	Taking away the need for PS1 files and script folder
+-- Update: Guilaumme Kierfer
+-- Update date: 2017/04/18
+-- Description: Update to handle named instance 
 -- =============================================
 -- =============================================
-CREATE PROCEDURE spGetPerfCountersFromPowerShell
+CREATE PROCEDURE [dbo].[spGetPerfCountersFromPowerShell]
 AS
 AS
 BEGIN
 BEGIN
-
-	DECLARE @syscounters NVARCHAR(4000)
-	SET @syscounters=STUFF((SELECT DISTINCT '''''','''''' +LTRIM([counter_name])
-	FROM [dba_local].[dbo].[PerformanceCounterList]
-	WHERE [is_captured_ind] = 1 FOR XML PATH('''')), 1, 2, '''')+'''''''' 
-
-	DECLARE @cmd NVARCHAR(4000)
-	DECLARE @syscountertable TABLE (id INT IDENTITY(1,1), [output] VARCHAR(500))
-	DECLARE @syscountervaluestable TABLE (id INT IDENTITY(1,1), [value] VARCHAR(500))
-
-	SET @cmd = ''C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe "& get-counter -counter ''+ @syscounters +'' | Select-Object -ExpandProperty Readings"''
-	INSERT @syscountertable
-	EXEC master..xp_cmdshell @cmd; 
-
-	INSERT [dba_local].[dbo].[PerformanceCounter] (CounterName, CounterValue, DateSampled)
-	SELECT  REPLACE(REPLACE(REPLACE(ct.[output],''\\''+@@SERVERNAME+''\'',''''),'' :'',''''),''sqlserver:'','''')[CounterName] , CONVERT(MONEY,ct2.[output]) [CounterValue], GETDATE() [DateSampled]
-	FROM @syscountertable ct
-	LEFT OUTER JOIN (
-	SELECT id - 1 [id], [output]
-	FROM @syscountertable
-	WHERE PATINDEX(''%[0-9]%'', LEFT([output],1)) > 0  
-	) ct2 ON ct.id = ct2.id
-	WHERE  ct.[output] LIKE ''\\%''
-	ORDER BY [CounterName] ASC
+DECLARE @syscounters NVARCHAR(4000)
+SET @syscounters=STUFF((SELECT DISTINCT ''',''' +LTRIM([counter_name])
+FROM [dba_local].[dbo].[PerformanceCounterList]
+WHERE [is_captured_ind] = 1 FOR XML PATH('')), 1, 2, '')+'''' 
+
+DECLARE @cmd NVARCHAR(4000)
+DECLARE @syscountertable TABLE (id INT IDENTITY(1,1), [output] VARCHAR(500))
+DECLARE @syscountervaluestable TABLE (id INT IDENTITY(1,1), [value] VARCHAR(500))
+
+SET @cmd = 'C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe "& get-counter -counter '+ @syscounters +' | Select-Object -ExpandProperty Readings"'
+INSERT @syscountertable
+EXEC master..xp_cmdshell @cmd
+
+declare @sqlnamedinstance sysname
+declare @networkname sysname
+if (select CHARINDEX('\',@@SERVERNAME)) = 0
+begin
+INSERT [dba_local].[dbo].[PerformanceCounter] (CounterName, CounterValue, DateSampled)
+SELECT  REPLACE(REPLACE(REPLACE(ct.[output],'\\'+@@SERVERNAME+'\',''),' :',''),'sqlserver:','')[CounterName] , CONVERT(varchar(20),ct2.[output]) [CounterValue], GETDATE() [DateSampled]
+FROM @syscountertable ct
+LEFT OUTER JOIN (
+SELECT id - 1 [id], [output]
+FROM @syscountertable
+WHERE PATINDEX('%[0-9]%', LEFT([output],1)) > 0  
+) ct2 ON ct.id = ct2.id
+WHERE  ct.[output] LIKE '\\%'
+ORDER BY [CounterName] ASC
+end
+else
+begin
+select @networkname=RTRIM(left(@@SERVERNAME, CHARINDEX('\', @@SERVERNAME) - 1))
+select @sqlnamedinstance=RIGHT(@@SERVERNAME,CHARINDEX('\',REVERSE(@@SERVERNAME))-1)
+INSERT [dba_local].[dbo].[PerformanceCounter] (CounterName, CounterValue, DateSampled)
+SELECT  REPLACE(REPLACE(REPLACE(ct.[output],'\\'+@networkname+'\',''),' :',''),'mssql$'+@sqlnamedinstance+':','')[CounterName] , CONVERT(varchar(20),ct2.[output]) [CounterValue], GETDATE() [DateSampled]
+FROM @syscountertable ct
+LEFT OUTER JOIN (
+SELECT id - 1 [id], [output]
+FROM @syscountertable
+WHERE PATINDEX('%[0-9]%', LEFT([output],1)) > 0  
+) ct2 ON ct.id = ct2.id
+WHERE  ct.[output] LIKE '\\%'
+ORDER BY [CounterName] ASC
 END
 END
 ';
 ';
 			PRINT 'Procedure spGetPerfCountersFromPowerShell created on server ' + CAST(SERVERPROPERTY('ServerName') AS VARCHAR(100)) + ' '
 			PRINT 'Procedure spGetPerfCountersFromPowerShell created on server ' + CAST(SERVERPROPERTY('ServerName') AS VARCHAR(100)) + ' '
 		END
 		END
 GO
 GO
-
-