Skip to content

Commit 26e0a4b

Browse files
committed
Merge pull request #882 from VasuBalakrishnan/master
Fixed SQL Server Plugin issues #881
2 parents fd26bbb + c356e56 commit 26e0a4b

File tree

2 files changed

+72
-26
lines changed

2 files changed

+72
-26
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
- [#707](https://github.com/influxdata/telegraf/pull/707): Improved prometheus plugin. Thanks @titilambert!
66
- [#878](https://github.com/influxdata/telegraf/pull/878): Added json serializer. Thanks @ch3lo!
77
- [#880](https://github.com/influxdata/telegraf/pull/880): Add the ability to specify the bearer token to the prometheus plugin. Thanks @jchauncey!
8+
- [#882](https://github.com/influxdata/telegraf/pull/882): Fixed SQL Server Plugin issues
89

910
### Bugfixes
1011

plugins/inputs/sqlserver/sqlserver.go

Lines changed: 71 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -283,30 +283,75 @@ EXEC sp_executesql @DynamicPivotQuery;
283283
const sqlMemoryClerk string = `SET NOCOUNT ON;
284284
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
285285
286-
DECLARE @w TABLE (ClerkCategory nvarchar(64) NOT NULL, UsedPercent decimal(9,2), UsedBytes bigint)
287-
INSERT @w (ClerkCategory, UsedPercent, UsedBytes)
288-
SELECT ClerkCategory
289-
, UsedPercent = SUM(UsedPercent)
290-
, UsedBytes = SUM(UsedBytes)
291-
FROM
292-
(
293-
SELECT ClerkCategory = CASE MC.[type]
294-
WHEN 'MEMORYCLERK_SQLBUFFERPOOL' THEN 'Buffer pool'
295-
WHEN 'CACHESTORE_SQLCP' THEN 'Cache (sql plans)'
296-
WHEN 'CACHESTORE_OBJCP' THEN 'Cache (objects)'
297-
ELSE 'Other' END
298-
, SUM(pages_kb * 1024) AS UsedBytes
299-
, Cast(100 * Sum(pages_kb)*1.0/(Select Sum(pages_kb) From sys.dm_os_memory_clerks) as Decimal(7, 4)) UsedPercent
300-
FROM sys.dm_os_memory_clerks MC
301-
WHERE pages_kb > 0
302-
GROUP BY CASE MC.[type]
303-
WHEN 'MEMORYCLERK_SQLBUFFERPOOL' THEN 'Buffer pool'
304-
WHEN 'CACHESTORE_SQLCP' THEN 'Cache (sql plans)'
305-
WHEN 'CACHESTORE_OBJCP' THEN 'Cache (objects)'
306-
ELSE 'Other' END
307-
) as T
308-
GROUP BY ClerkCategory
286+
DECLARE @sqlVers numeric(4,2)
287+
SELECT @sqlVers = LEFT(CAST(SERVERPROPERTY('productversion') as varchar), 4)
288+
289+
IF OBJECT_ID('tempdb..#clerk') IS NOT NULL
290+
DROP TABLE #clerk;
291+
292+
CREATE TABLE #clerk (
293+
ClerkCategory nvarchar(64) NOT NULL,
294+
UsedPercent decimal(9,2),
295+
UsedBytes bigint
296+
);
309297
298+
DECLARE @DynamicClerkQuery AS NVARCHAR(MAX)
299+
300+
IF @sqlVers < 11
301+
BEGIN
302+
SET @DynamicClerkQuery = N'
303+
INSERT #clerk (ClerkCategory, UsedPercent, UsedBytes)
304+
SELECT ClerkCategory
305+
, UsedPercent = SUM(UsedPercent)
306+
, UsedBytes = SUM(UsedBytes)
307+
FROM
308+
(
309+
SELECT ClerkCategory = CASE MC.[type]
310+
WHEN ''MEMORYCLERK_SQLBUFFERPOOL'' THEN ''Buffer pool''
311+
WHEN ''CACHESTORE_SQLCP'' THEN ''Cache (sql plans)''
312+
WHEN ''CACHESTORE_OBJCP'' THEN ''Cache (objects)''
313+
ELSE ''Other'' END
314+
, SUM((single_pages_kb + multi_pages_kb) * 1024) AS UsedBytes
315+
, Cast(100 * Sum((single_pages_kb + multi_pages_kb))*1.0/(Select Sum((single_pages_kb + multi_pages_kb)) From sys.dm_os_memory_clerks) as Decimal(7, 4)) UsedPercent
316+
FROM sys.dm_os_memory_clerks MC
317+
WHERE (single_pages_kb + multi_pages_kb) > 0
318+
GROUP BY CASE MC.[type]
319+
WHEN ''MEMORYCLERK_SQLBUFFERPOOL'' THEN ''Buffer pool''
320+
WHEN ''CACHESTORE_SQLCP'' THEN ''Cache (sql plans)''
321+
WHEN ''CACHESTORE_OBJCP'' THEN ''Cache (objects)''
322+
ELSE ''Other'' END
323+
) as T
324+
GROUP BY ClerkCategory;
325+
'
326+
END
327+
ELSE
328+
BEGIN
329+
SET @DynamicClerkQuery = N'
330+
INSERT #clerk (ClerkCategory, UsedPercent, UsedBytes)
331+
SELECT ClerkCategory
332+
, UsedPercent = SUM(UsedPercent)
333+
, UsedBytes = SUM(UsedBytes)
334+
FROM
335+
(
336+
SELECT ClerkCategory = CASE MC.[type]
337+
WHEN ''MEMORYCLERK_SQLBUFFERPOOL'' THEN ''Buffer pool''
338+
WHEN ''CACHESTORE_SQLCP'' THEN ''Cache (sql plans)''
339+
WHEN ''CACHESTORE_OBJCP'' THEN ''Cache (objects)''
340+
ELSE ''Other'' END
341+
, SUM(pages_kb * 1024) AS UsedBytes
342+
, Cast(100 * Sum(pages_kb)*1.0/(Select Sum(pages_kb) From sys.dm_os_memory_clerks) as Decimal(7, 4)) UsedPercent
343+
FROM sys.dm_os_memory_clerks MC
344+
WHERE pages_kb > 0
345+
GROUP BY CASE MC.[type]
346+
WHEN ''MEMORYCLERK_SQLBUFFERPOOL'' THEN ''Buffer pool''
347+
WHEN ''CACHESTORE_SQLCP'' THEN ''Cache (sql plans)''
348+
WHEN ''CACHESTORE_OBJCP'' THEN ''Cache (objects)''
349+
ELSE ''Other'' END
350+
) as T
351+
GROUP BY ClerkCategory;
352+
'
353+
END
354+
EXEC sp_executesql @DynamicClerkQuery;
310355
SELECT
311356
-- measurement
312357
measurement
@@ -325,7 +370,7 @@ SELECT measurement = 'Memory breakdown (%)'
325370
, [Cache (objects)] = ISNULL(ROUND([Cache (objects)], 1), 0)
326371
, [Cache (sql plans)] = ISNULL(ROUND([Cache (sql plans)], 1), 0)
327372
, [Other] = ISNULL(ROUND([Other], 1), 0)
328-
FROM (SELECT ClerkCategory, UsedPercent FROM @w) as G1
373+
FROM (SELECT ClerkCategory, UsedPercent FROM #clerk) as G1
329374
PIVOT
330375
(
331376
SUM(UsedPercent)
@@ -339,7 +384,7 @@ SELECT measurement = 'Memory breakdown (bytes)'
339384
, [Cache (objects)] = ISNULL(ROUND([Cache (objects)], 1), 0)
340385
, [Cache (sql plans)] = ISNULL(ROUND([Cache (sql plans)], 1), 0)
341386
, [Other] = ISNULL(ROUND([Other], 1), 0)
342-
FROM (SELECT ClerkCategory, UsedBytes FROM @w) as G2
387+
FROM (SELECT ClerkCategory, UsedBytes FROM #clerk) as G2
343388
PIVOT
344389
(
345390
SUM(UsedBytes)
@@ -698,7 +743,7 @@ IF OBJECT_ID('tempdb..#Databases') IS NOT NULL
698743
CREATE TABLE #Databases
699744
(
700745
Measurement nvarchar(64) NOT NULL,
701-
DatabaseName nvarchar(64) NOT NULL,
746+
DatabaseName nvarchar(128) NOT NULL,
702747
Value tinyint NOT NULL
703748
Primary Key(DatabaseName, Measurement)
704749
);

0 commit comments

Comments
 (0)