|
@@ -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
|
|
-
|
|
|
|
-
|
|
|