Quantcast
Channel: THWACK: Message List
Viewing all articles
Browse latest Browse all 20490

Re: Custom report: Top SQL per machine

$
0
0

Hi glimbeek,

 

I edited the post above yours to contain the fixed syntax, thanks! I've since then got SQL installed on my local instance and did a little more querying. Is this closer to what you were looking for?

 

IF (SELECT COUNT(*) FROM SYS.OBJECTS WHERE NAME LIKE 'TopSQLforMSSQLMachine') = 1

DROP PROC TopSQLforMSSQLMachine

GO

 

-- TopSQLforMSSQLMachine PROC

--

-- RUN AS THE IGNITE REPO OWNER AND STORE UNDER THE IGNITE REPOS PROGRAMMABILITY STORED PROCS

-- PARMS '@FROM_DATE', '@TO_DATE', '@APPLICATIONSERV, '@MACHINENAME'

-- The @MACHINENAME can be found from the following query: Select CONN_HOST from cond.

-- The @APPLICATIONSERV can also be found from the following query: SELECT * FROM CONM_XX WHERE XX = ID of DBID you are investigating. (DBID = SELECT ID FROM COND)

--

-- EXAMPLE:

--

-- EXEC TopSQLforMSSQLMachine '2014-12-23 00:00','2014-12-30 00:00', 'APPLICATIONSERVERHERE', 'MACHINENAMEHERE'

-- EXEC TopSQLforMSSQLMachine '2014-07-01 00:00','2014-07-19 00:00', 'JSHAULIS-LT', 'JSHAULIS-LT\THEDB'

 

CREATE PROC [TopSQLforMSSQLMachine]

(@FROM_DATE VARCHAR(16), @TO_DATE VARCHAR(16), @APPLICATIONSERV VARCHAR(50), @MACHINENAME VARCHAR(50))

AS

BEGIN

 

DECLARE @HostGatheredCursorData TABLE(

Tablename nvarchar(100),

Hash_or_Name nvarchar(100),

Timesecs nvarchar(100),

Sqltext nvarchar(max)

);

 

DECLARE @ID nvarchar(1000);

 

DECLARE MachineGatherCursor CURSOR FAST_FORWARD FOR

 

SELECT ID FROM COND WITH (NOLOCK)

WHERE CONN_HOST = @MACHINENAME

 

OPEN MachineGatherCursor;

 

FETCH NEXT FROM MachineGatherCursor INTO @ID;

 

DECLARE @SQL NVARCHAR(MAX);

 

WHILE @@FETCH_STATUS = 0

BEGIN

 

SET @SQL =

N'SELECT ' +

  @ID + N',

  ISNULL(N.NAME, SW.IZHO) HASH_OR_NAME,

  SUM(SW.QP/100) TIMESECS,

  ST.ST SQLTEXT ' +

'FROM CONSW_' + @ID + ' SW LEFT OUTER JOIN CON_SQL_NAME N ON SW.IZHO = N.HASH ' +

'LEFT OUTER JOIN CONM_' + @ID + ' MM ON SW.PWMY = MM.ID ' +

'LEFT OUTER JOIN CONST_' + @ID + ' ST ON SW.IZHO = ST.H ' +

'INNER JOIN CONU_' + @ID + ' U ON SW.XCUW = U.ID ' +

'WHERE SW.D BETWEEN ' +

  'CONVERT(DATETIME,' + '''' + @FROM_DATE + '''' + ', 101) AND ' +

  'CONVERT(DATETIME,' + '''' + @TO_DATE + '''' + ', 101) ' +

  ' AND MM.NAME =  ''' + @APPLICATIONSERV + '''' +

  ' GROUP BY N.NAME, SW.IZHO,  ST.ST

  ORDER BY SUM(SW.QP/100) DESC'

 

INSERT INTO @HostGatheredCursorData

 

EXEC (@SQL)

 

FETCH NEXT FROM MachineGatherCursor INTO @ID;

END

CLOSE MachineGatherCursor;

DEALLOCATE MachineGatherCursor;

 

SELECT

  COND.NAME AS "SQLInstance",

  HGCD.Hash_Or_Name,

  HGCD.TimeSecs,

  HGCD.SQLText

FROM @HostGatheredCursorData AS HGCD

INNER JOIN COND ON COND.ID = HGCD.TABLENAME;

 

END


Viewing all articles
Browse latest Browse all 20490

Trending Articles