DatabaseProcApplicationCreatedLinks
sybsystemprocssp_sysmon_appmgmt  14 déc. 14Defects Propagation Dependencies

1     
2     /* This stored procedure produces a report describing the scheduling
3     ** of user tasks.
4     **
5     */
6     create or replace procedure sp_sysmon_appmgmt
7     
8         @NumEngines tinyint, /* number of engines online */
9         @NumElapsedMs int, /* for "per Elapsed second" calculations */
10        @NumXacts int, /* for per transactions calculations */
11        @applmon char(14) /* Application monitoring option */
12    as
13    
14        /* --------- declare local variables --------- */
15        declare @i smallint /* loop index to iterate through multi-group 
16        ** counters (engine, disk, & buffer) */
17        declare @tmp_grp varchar(25) /* temp var for building group_names 
18        ** ie. engine_N, disk_N */
19        declare @appl_name varchar(80) /* application name */
20        declare @tmp_int int /* temp var for integer storage */
21        declare @tmp_total int /* temp var for integer storage, totals */
22        declare @sum1line char(80) /* string to delimit total lines without 
23        ** percent calc on printout */
24        declare @sum2line char(67) /* string to delimit total lines with percent 
25        ** calc on printout */
26        declare @blankline char(1) /* to print blank line */
27        declare @psign char(3) /* hold a percent sign (%) for print out */
28        declare @na_str char(3) /* holds 'n/a' for 'not applicable' strings */
29        declare @rptline char(80) /* formatted stats line for print statement */
30        declare @section char(80) /* string to delimit sections on printout */
31        declare @subsection char(80) /* string to delimit sections on printout */
32        declare @applstr char(24) /* application report string	*/
33        /* --------- Setup Environment --------- */
34        set nocount on /* disable row counts being sent to client */
35    
36        select @sum1line = "  -------------------------  ------------  ------------  ----------  ----------"
37        select @sum2line = "  -------------------------  ------------  ------------  ----------"
38        select @blankline = " "
39        select @psign = " %%" /* extra % symbol because '%' is escape char in print statement */
40        select @na_str = "n/a"
41        select @section = "==============================================================================="
42        select @subsection = "-------------------------------------------------------------------------------"
43    
44    
45        /* =========================  Application Management Section ==================== */
46        if not exists (select *
47                from #tempmonitors
48                where group_name = "kernel" and
49                    field_name = "priority_med")
50        begin
51            print @blankline
52            return 0
53        end
54    
55        print @section
56        print @blankline
57        print "Application Management"
58        print "----------------------"
59        print @blankline
60        /*
61        ** ------ 
62        */
63        print "  Application Statistics Summary (All Applications)"
64        print "  -------------------------------------------------"
65        print "  Priority Changes                per sec      per xact       count  %% of total"
66        print @sum1line
67        select @tmp_total = sum(value)
68        from #tempmonitors
69        where group_name like "kernel"
70            and field_name in ("priority_high", "priority_med", "priority_low")
71    
72        if @tmp_total = 0 /* Avoid divide by zero errors - just print zero's */
73        begin
74            select @rptline = "  Total Priority Changes              0.0           0.0           0       n/a"
75            print @rptline
76            print @blankline
77        end
78        else
79        begin
80    
81            select @tmp_int = value
82            from #tempmonitors
83            where group_name = "kernel" and
84                field_name = "priority_high"
85    
86            select @rptline = "    To High Priority" + space(9) +
87                str(@tmp_int / (@NumElapsedMs / 1000.0), 12, 1) +
88                space(2) +
89                str(@tmp_int / convert(real, @NumXacts), 12, 1) +
90                space(2) +
91                str(@tmp_int, 10) + space(5) +
92                str(100.0 * @tmp_int / @tmp_total, 5, 1) +
93                @psign
94            print @rptline
95            select @tmp_int = value
96            from #tempmonitors
97            where group_name = "kernel" and
98                field_name = "priority_med"
99    
100           select @rptline = "    To Medium Priority" + space(7) +
101               str(@tmp_int / (@NumElapsedMs / 1000.0), 12, 1) +
102               space(2) +
103               str(@tmp_int / convert(real, @NumXacts), 12, 1) +
104               space(2) +
105               str(@tmp_int, 10) + space(5) +
106               str(100.0 * @tmp_int / @tmp_total, 5, 1) +
107               @psign
108           print @rptline
109           select @tmp_int = value
110           from #tempmonitors
111           where group_name = "kernel" and
112               field_name = "priority_low"
113   
114           select @rptline = "    To Low Priority" + space(10) +
115               str(@tmp_int / (@NumElapsedMs / 1000.0), 12, 1) +
116               space(2) +
117               str(@tmp_int / convert(real, @NumXacts), 12, 1) +
118               space(2) +
119               str(@tmp_int, 10) + space(5) +
120               str(100.0 * @tmp_int / @tmp_total, 5, 1) +
121               @psign
122   
123           print @rptline
124   
125           print @sum2line
126           select @rptline = "  Total Priority Changes" + space(5) +
127               str(@tmp_total / (@NumElapsedMs / 1000.0), 12, 1) +
128               space(2) +
129               str(@tmp_total / convert(real, @NumXacts), 12, 1) +
130               space(2) +
131               str(@tmp_total, 10)
132           print @rptline
133           print @blankline
134       end
135   
136       select @tmp_total = sum(value)
137       from #tempmonitors
138       where group_name like "kernel"
139           and field_name in ("tslice_high", "tslice_med", "tslice_low")
140   
141       print "  Allotted Slices Exhausted       per sec      per xact       count  %% of total"
142       print @sum1line
143       if @tmp_total = 0 /* Avoid divide by zero errors - just print zero's */
144       begin
145           select @rptline = "  Total Slices Exhausted              0.0           0.0           0       n/a"
146           print @rptline
147       end
148       else
149       begin
150           select @tmp_int = value
151           from #tempmonitors
152           where group_name = "kernel" and
153               field_name = "tslice_high"
154   
155           select @rptline = "    High Priority" + space(12) +
156               str(@tmp_int / (@NumElapsedMs / 1000.0), 12, 1) +
157               space(2) +
158               str(@tmp_int / convert(real, @NumXacts), 12, 1) +
159               space(2) +
160               str(@tmp_int, 10) + space(5) +
161               str(100.0 * @tmp_int / @tmp_total, 5, 1) +
162               @psign
163           print @rptline
164           select @tmp_int = value
165           from #tempmonitors
166           where group_name = "kernel" and
167               field_name = "tslice_med"
168   
169           select @rptline = "    Medium Priority" + space(10) +
170               str(@tmp_int / (@NumElapsedMs / 1000.0), 12, 1) +
171               space(2) +
172               str(@tmp_int / convert(real, @NumXacts), 12, 1) +
173               space(2) +
174               str(@tmp_int, 10) + space(5) +
175               str(100.0 * @tmp_int / @tmp_total, 5, 1) +
176               @psign
177           print @rptline
178           select @tmp_int = value
179           from #tempmonitors
180           where group_name = "kernel" and
181               field_name = "tslice_low"
182   
183           select @rptline = "    Low Priority" + space(13) +
184               str(@tmp_int / (@NumElapsedMs / 1000.0), 12, 1) +
185               space(2) +
186               str(@tmp_int / convert(real, @NumXacts), 12, 1) +
187               space(2) +
188               str(@tmp_int, 10) + space(5) +
189               str(100.0 * @tmp_int / @tmp_total, 5, 1) +
190               @psign
191           print @rptline
192   
193           print @sum2line
194           select @rptline = "  Total Slices Exhausted  " + space(3) +
195               str(@tmp_total / (@NumElapsedMs / 1000.0), 12, 1) +
196               space(2) +
197               str(@tmp_total / convert(real, @NumXacts), 12, 1) +
198               space(2) +
199               str(@tmp_total, 10)
200           print @rptline
201       end
202       print @blankline
203       print "  Skipped Tasks By Engine         per sec      per xact       count  %% of total"
204       print @sum1line
205   
206       select @tmp_total = SUM(value)
207       from #tempmonitors
208       where group_name like "engine_%" and
209           field_name = "incompatible_engine_task"
210   
211       if @tmp_total = 0 /* Avoid divide by zero errors - just print zero's */
212       begin
213           select @rptline = "  Total Engine Skips                  0.0           0.0           0       n/a"
214           print @rptline
215       end
216       else
217       begin
218           select @i = 0
219           while @i < @NumEngines /* for each engine */
220           begin
221               /* build group_name string */
222               select @tmp_grp = "engine_" + convert(varchar(4), @i)
223   
224               /* If an engine's clock_ticks counter is 0, this means this engine
225               ** is in offline status. We should skip this engine when priting
226               ** the statistic information.
227               */
228               if (select value
229                       from #tempmonitors where field_name = "clock_ticks"
230                           and group_name = @tmp_grp) > 0
231               begin
232                   select @tmp_int = value
233                   from #tempmonitors
234                   where group_name = @tmp_grp and
235                       field_name = "incompatible_engine_task"
236   
237                   select @rptline = "    Engine " + convert(char(4), @i) +
238                       space(14) +
239                       str(@tmp_int / (@NumElapsedMs / 1000.0), 12, 1)
240                       + space(2) +
241                       str(@tmp_int / convert(real, @NumXacts), 12, 1)
242                       + space(2) +
243                       str(@tmp_int, 10) + space(5) +
244                       str(100.0 * @tmp_int / @tmp_total, 5, 1)
245                       + @psign
246                   print @rptline
247               end
248               select @i = @i + 1
249           end
250   
251           if @NumEngines > 1
252           begin
253               print @sum2line
254               select @rptline = "  Total Engine Skips " + space(8) +
255                   str(@tmp_total / (@NumElapsedMs / 1000.0), 12, 1)
256                   + space(2) +
257                   str(@tmp_total / convert(real, @NumXacts), 12, 1)
258                   + space(2) + str(@tmp_total, 10)
259               print @rptline
260           end
261       end
262       print @blankline
263   
264       select @tmp_int = value
265       from #tempmonitors
266       where group_name = "kernel" and
267           field_name = "calls_to_upsetenginemask"
268   
269       select @rptline = "  Engine Scope Changes" + space(7) +
270           str(@tmp_int / (@NumElapsedMs / 1000.0), 12, 1) +
271           space(2) +
272           str(@tmp_int / convert(real, @NumXacts), 12, 1) +
273           space(2) +
274           str(@tmp_int, 10) + space(7) +
275           @na_str
276       print @rptline
277       print @blankline
278   
279       /* 
280       ** If application monitoring was not requested
281       ** return, otherwise, create a temporary table
282       ** of application counters, based on application 
283       ** monitoring option
284       */
285   
286       if (@applmon = "no_appl")
287       begin
288           return 0
289       end
290       else
291       begin
292           select field_name, group_name, value
293           into #tempappl
294           from #tempmonitors
295           where 1 = 2
296   
297           if (@applmon = "appl_only")
298           begin
299               insert into #tempappl
300               select isnull(substring(field_name, 1,
301                           patindex("%->%", field_name) - 1),
302                       "Unknown")
303                   as field_name, group_name, value
304               from #tempmonitors
305               where group_name like "appl_%" and field_name is not null
306   
307               select @applstr = space(2) + "Application: "
308           end
309   
310           else if (@applmon = "appl_and_login")
311           begin
312               insert into #tempappl
313               select field_name, group_name, value
314               from #tempmonitors
315               where group_name like "appl_%" and field_name is not null
316               select @applstr = space(2) + "Application->Login: "
317           end
318       end
319   
320       /*
321       ** Declare cursor for fetching application specific statistics
322       */
323       declare appl_stats cursor for
324       select distinct field_name
325       from #tempappl
326       for read only
327       open appl_stats
328       fetch appl_stats into @appl_name
329   
330       while (@@sqlstatus = 0) /* { */
331       begin
332           print @subsection
333           select @rptline = @applstr + @appl_name
334           print @rptline
335           print @blankline
336           print "  Application Activity            per sec      per xact       count  %% of total"
337           print @sum2line
338   
339           select @tmp_total = sum(value)
340           from #tempappl
341           where group_name like "appl_%_ticks%"
342               and field_name = @appl_name
343   
344           if @tmp_total = 0 /* Avoid divide by zero errors - just print zero's */
345           begin
346               select @rptline = "  Total Activity                      0.0           0.0           0       n/a"
347               print @rptline
348               print @blankline
349           end
350           else
351           begin
352               select @tmp_int = sum(value)
353               from #tempappl
354               where group_name like "appl_cpu_ticks%"
355                   and field_name = @appl_name
356   
357               select @rptline = "    CPU Busy" + space(17) +
358                   str(@tmp_int / (@NumElapsedMs / 1000.0), 12, 1) +
359                   space(2) +
360                   str(@tmp_int / convert(real, @NumXacts), 12, 1) +
361                   space(2) +
362                   str(@tmp_int, 10) + space(5) +
363                   str(100.0 * @tmp_int / @tmp_total, 5, 1) + @psign
364               print @rptline
365               select @tmp_int = sum(value)
366               from #tempappl
367               where group_name like "appl_io_ticks%"
368                   and field_name = @appl_name
369               select @rptline = "    I/O Busy" + space(17) +
370                   str(@tmp_int / (@NumElapsedMs / 1000.0), 12, 1) +
371                   space(2) +
372                   str(@tmp_int / convert(real, @NumXacts), 12, 1) +
373                   space(2) +
374                   str(@tmp_int, 10) + space(5) +
375                   str(100.0 * @tmp_int / @tmp_total, 5, 1) + @psign
376               print @rptline
377               select @tmp_int = sum(value)
378               from #tempappl
379               where group_name like "appl_idle_ticks%"
380                   and field_name = @appl_name
381               select @rptline = "    Idle    " + space(17) +
382                   str(@tmp_int / (@NumElapsedMs / 1000.0), 12, 1) +
383                   space(2) +
384                   str(@tmp_int / convert(real, @NumXacts), 12, 1) +
385                   space(2) +
386                   str(@tmp_int, 10) + space(5) +
387                   str(100.0 * @tmp_int / @tmp_total, 5, 1) + @psign
388               print @rptline
389           end
390   
391           print @blankline
392           select @tmp_int = sum(value)
393           from #tempappl
394           where group_name like "appl_sched_count%"
395               and field_name = @appl_name
396   
397           select @rptline = "    Number of Times Scheduled" +
398               str(@tmp_int / (@NumElapsedMs / 1000.0), 12, 1) +
399               space(2) +
400               str(@tmp_int / convert(real, @NumXacts), 12, 1) +
401               space(2) +
402               str(@tmp_int, 10) + space(7) +
403               @na_str
404           print @rptline
405           print @blankline
406   
407           print "  Application Priority Changes    per sec      per xact       count  %% of total"
408           print @sum1line
409           select @tmp_total = sum(value)
410           from #tempappl
411           where group_name like "appl_%_pri%"
412               and field_name = @appl_name
413   
414           if @tmp_total = 0 /* Avoid divide by zero errors - just print zero's */
415           begin
416               select @rptline = "  Total Priority Changes              0.0           0.0           0       n/a"
417               print @rptline
418               print @blankline
419           end
420           else
421           begin
422   
423               select @tmp_int = value
424               from #tempappl
425               where group_name like "appl_hi_pri%"
426                   and field_name = @appl_name
427   
428               select @rptline = "    To High Priority" + space(9) +
429                   str(@tmp_int / (@NumElapsedMs / 1000.0), 12, 1) +
430                   space(2) +
431                   str(@tmp_int / convert(real, @NumXacts), 12, 1) +
432                   space(2) +
433                   str(@tmp_int, 10) + space(5) +
434                   str(100.0 * @tmp_int / @tmp_total, 5, 1) +
435                   @psign
436               print @rptline
437               select @tmp_int = value
438               from #tempappl
439               where group_name like "appl_med_pri%"
440                   and field_name = @appl_name
441   
442               select @rptline = "    To Medium Priority" + space(7) +
443                   str(@tmp_int / (@NumElapsedMs / 1000.0), 12, 1) +
444                   space(2) +
445                   str(@tmp_int / convert(real, @NumXacts), 12, 1) +
446                   space(2) +
447                   str(@tmp_int, 10) + space(5) +
448                   str(100.0 * @tmp_int / @tmp_total, 5, 1) +
449                   @psign
450               print @rptline
451               select @tmp_int = value
452               from #tempappl
453               where group_name like "appl_low_pri%"
454                   and field_name = @appl_name
455   
456               select @rptline = "    To Low Priority" + space(10) +
457                   str(@tmp_int / (@NumElapsedMs / 1000.0), 12, 1) +
458                   space(2) +
459                   str(@tmp_int / convert(real, @NumXacts), 12, 1) +
460                   space(2) +
461                   str(@tmp_int, 10) + space(5) +
462                   str(100.0 * @tmp_int / @tmp_total, 5, 1) +
463                   @psign
464               print @rptline
465               print @sum2line
466               select @rptline = "  Total Priority Changes" + space(5) +
467                   str(@tmp_total / (@NumElapsedMs / 1000.0), 12, 1) +
468                   space(2) +
469                   str(@tmp_total / convert(real, @NumXacts), 12, 1) +
470                   space(2) +
471                   str(@tmp_total, 10)
472               print @rptline
473               print @blankline
474           end
475   
476           print "  Application I/Os Completed     per sec      per xact       count  %% of total"
477           print @sum1line
478           select @tmp_total = sum(value)
479           from #tempappl
480           where group_name like "appl_%io_count%"
481               and field_name = @appl_name
482   
483           if @tmp_total = 0 /* Avoid divide by zero errors - just print zero's */
484           begin
485               select @rptline = "  Total I/Os Completed                0.0           0.0           0       n/a"
486               print @rptline
487               print @blankline
488           end
489           else
490           begin
491   
492               select @tmp_int = value
493               from #tempappl
494               where group_name like "appl_disk_io_count%"
495                   and field_name = @appl_name
496   
497               select @rptline = "    Disk I/Os Completed" + space(6) +
498                   str(@tmp_int / (@NumElapsedMs / 1000.0), 12, 1) +
499                   space(2) +
500                   str(@tmp_int / convert(real, @NumXacts), 12, 1) +
501                   space(2) +
502                   str(@tmp_int, 10) + space(5) +
503                   str(100.0 * @tmp_int / @tmp_total, 5, 1) +
504                   @psign
505               print @rptline
506               select @tmp_int = value
507               from #tempappl
508               where group_name like "appl_net_io_count%"
509                   and field_name = @appl_name
510   
511               select @rptline = "    Network I/Os Completed" + space(3) +
512                   str(@tmp_int / (@NumElapsedMs / 1000.0), 12, 1) +
513                   space(2) +
514                   str(@tmp_int / convert(real, @NumXacts), 12, 1) +
515                   space(2) +
516                   str(@tmp_int, 10) + space(5) +
517                   str(100.0 * @tmp_int / @tmp_total, 5, 1) +
518                   @psign
519               print @rptline
520               print @sum2line
521               select @rptline = "  Total I/Os Completed" + space(7) +
522                   str(@tmp_total / (@NumElapsedMs / 1000.0), 12, 1) +
523                   space(2) +
524                   str(@tmp_total / convert(real, @NumXacts), 12, 1) +
525                   space(2) +
526                   str(@tmp_total, 10)
527               print @rptline
528               print @blankline
529   
530           end
531   
532   
533           print "  Resource Limits Violated	per sec      per xact       count  %% of total"
534           print @sum1line
535   
536           select @tmp_total = sum(value)
537           from #tempappl
538           where group_name like "%appl_%_lim_xcd%"
539               and field_name = @appl_name
540   
541           if (@tmp_total = 0) or (@tmp_total is null) /* Avoid divide by zero errors - just print zero's */
542           begin
543               select @rptline = "  Total Limits Violated               0.0           0.0           0       n/a"
544               print @rptline
545               print @blankline
546           end
547           else
548           begin
549   
550               select @tmp_int = sum(value)
551               from #tempappl
552               where group_name like "appl_est_io_lim_xcd%"
553                   and field_name = @appl_name
554   
555               select @rptline = "    IO Limit Violations"
556               print @rptline
557               select @rptline = "      Estimated" + space(14) +
558                   str(@tmp_int / (@NumElapsedMs / 1000.0), 12, 1) +
559                   space(2) +
560                   str(@tmp_int / convert(real, @NumXacts), 12, 1) +
561                   space(2) +
562                   str(@tmp_int, 10) + space(5) +
563                   str(100.0 * @tmp_int / @tmp_total, 5, 1) + @psign
564               print @rptline
565   
566   
567               select @tmp_int = sum(value)
568               from #tempappl
569               where group_name like "appl_act_io_lim_xcd%"
570                   and field_name = @appl_name
571   
572               select @rptline = "      Actual" + space(17) +
573                   str(@tmp_int / (@NumElapsedMs / 1000.0), 12, 1) +
574                   space(2) +
575                   str(@tmp_int / convert(real, @NumXacts), 12, 1) +
576                   space(2) +
577                   str(@tmp_int, 10) + space(5) +
578                   str(100.0 * @tmp_int / @tmp_total, 5, 1) + @psign
579               print @rptline
580               print @blankline
581   
582   
583               select @tmp_int = sum(value)
584               from #tempappl
585               where group_name like "appl_batch_et_lim_xcd%"
586                   and field_name = @appl_name
587   
588               select @rptline = "    Time Limit Violations"
589               print @rptline
590   
591               select @rptline = "      Batch" + space(18) +
592                   str(@tmp_int / (@NumElapsedMs / 1000.0), 12, 1) +
593                   space(2) +
594                   str(@tmp_int / convert(real, @NumXacts), 12, 1) +
595                   space(2) +
596                   str(@tmp_int, 10) + space(5) +
597                   str(100.0 * @tmp_int / @tmp_total, 5, 1) + @psign
598               print @rptline
599   
600   
601               select @tmp_int = sum(value)
602               from #tempappl
603               where group_name like "appl_xact_et_lim_xcd%"
604                   and field_name = @appl_name
605   
606               select @rptline = "      Xact" + space(19) +
607                   str(@tmp_int / (@NumElapsedMs / 1000.0), 12, 1) +
608                   space(2) +
609                   str(@tmp_int / convert(real, @NumXacts), 12, 1) +
610                   space(2) +
611                   str(@tmp_int, 10) + space(5) +
612                   str(100.0 * @tmp_int / @tmp_total, 5, 1) + @psign
613               print @rptline
614               print @blankline
615   
616   
617               select @tmp_int = sum(value)
618               from #tempappl
619               where group_name like "appl_rowcount_lim_xcd%"
620                   and field_name = @appl_name
621   
622               select @rptline = "    RowCount Limit Violations" +
623                   str(@tmp_int / (@NumElapsedMs / 1000.0), 12, 1) +
624                   space(2) +
625                   str(@tmp_int / convert(real, @NumXacts), 12, 1) +
626                   space(2) +
627                   str(@tmp_int, 10) + space(5) +
628                   str(100.0 * @tmp_int / @tmp_total, 5, 1) + @psign
629               print @rptline
630   
631               print @sum2line
632               select @rptline = "  Total Limits Violated" + space(6) +
633                   str(@tmp_total / (@NumElapsedMs / 1000.0), 12, 1) +
634                   space(2) +
635                   str(@tmp_total / convert(real, @NumXacts), 12, 1) +
636                   space(2) +
637                   str(@tmp_total, 10)
638               print @rptline
639               print @blankline
640           end
641   
642           fetch appl_stats into @appl_name
643   
644       end
645       return 0
646   

DEFECTS
 MLCH 3 Char type with length>30 char(80) 22
 MLCH 3 Char type with length>30 char(67) 24
 MLCH 3 Char type with length>30 char(80) 29
 MLCH 3 Char type with length>30 char(80) 30
 MLCH 3 Char type with length>30 char(80) 31
 MNER 3 No Error Check should check @@error after select into 292
 MNER 3 No Error Check should check @@error after insert 299
 MNER 3 No Error Check should check @@error after insert 312
 MUCO 3 Useless Code Useless Brackets 286
 MUCO 3 Useless Code Useless Brackets 297
 MUCO 3 Useless Code Useless Brackets 310
 MUCO 3 Useless Code Useless Brackets 330
 QAFM 3 Var Assignment from potentially many rows 81
 QAFM 3 Var Assignment from potentially many rows 95
 QAFM 3 Var Assignment from potentially many rows 109
 QAFM 3 Var Assignment from potentially many rows 150
 QAFM 3 Var Assignment from potentially many rows 164
 QAFM 3 Var Assignment from potentially many rows 178
 QAFM 3 Var Assignment from potentially many rows 232
 QAFM 3 Var Assignment from potentially many rows 264
 QAFM 3 Var Assignment from potentially many rows 423
 QAFM 3 Var Assignment from potentially many rows 437
 QAFM 3 Var Assignment from potentially many rows 451
 QAFM 3 Var Assignment from potentially many rows 492
 QAFM 3 Var Assignment from potentially many rows 506
 QCTC 3 Conditional Table Creation 292
 QGWO 3 Group by/Distinct/Union without order by 324
 QPNC 3 No column in condition 295
 CRDO 2 Read Only Cursor Marker (has for read only clause) 324
 MSUB 2 Subquery Marker 46
 MSUB 2 Subquery Marker 228
 MTR1 2 Metrics: Comments Ratio Comments: 8% 6
 MTR2 2 Metrics: Cyclomatic Complexity Cyclo: 47 = 48dec - 3exi + 2 6
 MTR3 2 Metrics: Query Complexity Complexity: 325 6

DEPENDENCIES
PROCS AND TABLES USED
reads table tempdb..#tempmonitors (1) 
read_writes table tempdb..#tempappl (1) 

CALLERS
called by proc sybsystemprocs..sp_sysmon_analyze  
   called by proc sybsystemprocs..sp_sysmon