home *** CD-ROM | disk | FTP | other *** search
/ PC Format Collection 48 / SENT14D.ISO / tech / delphi / disk15 / dbtools.pak / SYBMON.PAS < prev   
Encoding:
Pascal/Delphi Source File  |  1995-08-24  |  3.7 KB  |  134 lines

  1. {
  2.   This application shows a simple way to monitor Sybase SQL Server activity.
  3.   You must have Delphi C/S in order to use this application.
  4. }
  5.  
  6. unit Sybmon;
  7.  
  8. interface
  9.  
  10. uses WinTypes, WinProcs, Classes, Graphics, Forms, Controls, StdCtrls, Tabs,
  11.   Buttons, ExtCtrls, DB, DBTables, Grids, DBGrids;
  12.  
  13. type
  14.   TSybMonitorDialog = class(TForm)
  15.     ButtonPanel: TPanel;
  16.     TabSet: TTabSet;
  17.     ExitBtn: TBitBtn;
  18.     MonitorDb: TDatabase;
  19.     Refresh: TTimer;
  20.     MonitorSource: TDataSource;
  21.     ActivityQuery: TQuery;
  22.     ActivityQueryspid: TSmallintField;
  23.     ActivityQuerystatus: TStringField;
  24.     ActivityQueryloginame: TStringField;
  25.     ActivityQueryhostname: TStringField;
  26.     ActivityQueryblk: TStringField;
  27.     ActivityQuerydbname: TStringField;
  28.     ActivityQuerycmd: TStringField;
  29.     ProcessesQuery: TQuery;
  30.     ProcessesQueryspid: TSmallintField;
  31.     ProcessesQuerykpid: TSmallintField;
  32.     ProcessesQuerystatus: TStringField;
  33.     ProcessesQuerysuid: TSmallintField;
  34.     ProcessesQueryhostprocess: TStringField;
  35.     ProcessesQuerycmd: TStringField;
  36.     ProcessesQuerycpu: TIntegerField;
  37.     ProcessesQueryphysical_io: TIntegerField;
  38.     ProcessesQuerymemusage: TIntegerField;
  39.     ProcessesQueryblocked: TSmallintField;
  40.     ProcessesQuerydbid: TSmallintField;
  41.     ProcessesQueryuid: TSmallintField;
  42.     LocksQuery: TQuery;
  43.     MonitorGrid: TDBGrid;
  44.     OptionsBtn: TBitBtn;
  45.     LocksQueryspid: TSmallintField;
  46.     LocksQuerylocktype: TStringField;
  47.     LocksQuerytable_id: TIntegerField;
  48.     LocksQuerypage: TIntegerField;
  49.     LocksQuerydbname: TStringField;
  50.     procedure TabSetClick(Sender: TObject);
  51.     procedure ExitBtnClick(Sender: TObject);
  52.     procedure RefreshTimer(Sender: TObject);
  53.     procedure OptionsBtnClick(Sender: TObject);
  54.     procedure FormShow(Sender: TObject);
  55.   private
  56.     MonitorQueries: array [0..3] of TQuery;
  57.   public
  58.     { Public declarations }
  59.   end;
  60.  
  61. var
  62.   SybMonitorDialog: TSybMonitorDialog;
  63.  
  64. implementation
  65.  
  66. {$R *.DFM}
  67.  
  68. uses OpenDb, Options, SysUtils;
  69.  
  70. procedure TSybMonitorDialog.TabSetClick(Sender: TObject);
  71. begin
  72.   MonitorSource.Dataset.Active := False;
  73.   MonitorSource.Dataset := MonitorQueries [TabSet.TabIndex];
  74.   MonitorSource.Dataset.Active := True;
  75. end;
  76.  
  77. procedure TSybMonitorDialog.ExitBtnClick(Sender: TObject);
  78. begin
  79.   Close;
  80. end;
  81.  
  82. procedure TSybMonitorDialog.RefreshTimer(Sender: TObject);
  83. var
  84.    Bookmark: TBookmark;
  85. begin
  86.   if MonitorSource.Dataset.Active then
  87.   begin
  88.      MonitorSource.Enabled := False;
  89.      Bookmark := MonitorSource.Dataset.GetBookmark;
  90.      try
  91.         MonitorSource.Dataset.Active := False;
  92.         MonitorSource.Dataset.Active := True;
  93.         MonitorSource.Dataset.GotoBookmark (Bookmark)
  94.      finally
  95.         MonitorSource.Dataset.FreeBookmark (Bookmark)
  96.      end;
  97.      MonitorSource.Enabled := True
  98.   end
  99. end;
  100.  
  101. procedure TSybMonitorDialog.OptionsBtnClick(Sender: TObject);
  102. begin
  103.   OptionsDlg.ShowModal;
  104. end;
  105.  
  106. procedure TSybMonitorDialog.FormShow(Sender: TObject);
  107. var
  108.    MR: TModalResult;
  109. begin
  110.   MR := OpenDbDlg.ShowModal;
  111.   if MR = mrOk then
  112.   try
  113.      if CompareText (OpenDbDlg.AliasType, 'SYBASE') <> 0 then
  114.         raise Exception.Create ('Must specify a Sybase alias');
  115.  
  116.      Caption := Caption + ' - ' + OpenDbDlg.AliasName;
  117.      MonitorDb.AliasName := OpenDbDlg.AliasName;
  118.      MonitorDb.Connected := True;
  119.      MonitorSource.Dataset := ActivityQuery;
  120.      ActivityQuery.Active := True;
  121.      MonitorQueries [0] := ActivityQuery;
  122.      MonitorQueries [1] := ProcessesQuery;
  123.      MonitorQueries [2] := LocksQuery;
  124.      Refresh.Enabled := True
  125.   except
  126.      Application.HandleException (Self);
  127.      MR := mrCancel
  128.   end;
  129.  
  130.   if MR <> mrOk then Close
  131. end;
  132.  
  133. end.
  134.