home *** CD-ROM | disk | FTP | other *** search
- {
- This application shows a simple way to monitor Sybase SQL Server activity.
- You must have Delphi C/S in order to use this application.
- }
-
- unit Sybmon;
-
- interface
-
- uses WinTypes, WinProcs, Classes, Graphics, Forms, Controls, StdCtrls, Tabs,
- Buttons, ExtCtrls, DB, DBTables, Grids, DBGrids;
-
- type
- TSybMonitorDialog = class(TForm)
- ButtonPanel: TPanel;
- TabSet: TTabSet;
- ExitBtn: TBitBtn;
- MonitorDb: TDatabase;
- Refresh: TTimer;
- MonitorSource: TDataSource;
- ActivityQuery: TQuery;
- ActivityQueryspid: TSmallintField;
- ActivityQuerystatus: TStringField;
- ActivityQueryloginame: TStringField;
- ActivityQueryhostname: TStringField;
- ActivityQueryblk: TStringField;
- ActivityQuerydbname: TStringField;
- ActivityQuerycmd: TStringField;
- ProcessesQuery: TQuery;
- ProcessesQueryspid: TSmallintField;
- ProcessesQuerykpid: TSmallintField;
- ProcessesQuerystatus: TStringField;
- ProcessesQuerysuid: TSmallintField;
- ProcessesQueryhostprocess: TStringField;
- ProcessesQuerycmd: TStringField;
- ProcessesQuerycpu: TIntegerField;
- ProcessesQueryphysical_io: TIntegerField;
- ProcessesQuerymemusage: TIntegerField;
- ProcessesQueryblocked: TSmallintField;
- ProcessesQuerydbid: TSmallintField;
- ProcessesQueryuid: TSmallintField;
- LocksQuery: TQuery;
- MonitorGrid: TDBGrid;
- OptionsBtn: TBitBtn;
- LocksQueryspid: TSmallintField;
- LocksQuerylocktype: TStringField;
- LocksQuerytable_id: TIntegerField;
- LocksQuerypage: TIntegerField;
- LocksQuerydbname: TStringField;
- procedure TabSetClick(Sender: TObject);
- procedure ExitBtnClick(Sender: TObject);
- procedure RefreshTimer(Sender: TObject);
- procedure OptionsBtnClick(Sender: TObject);
- procedure FormShow(Sender: TObject);
- private
- MonitorQueries: array [0..3] of TQuery;
- public
- { Public declarations }
- end;
-
- var
- SybMonitorDialog: TSybMonitorDialog;
-
- implementation
-
- {$R *.DFM}
-
- uses OpenDb, Options, SysUtils;
-
- procedure TSybMonitorDialog.TabSetClick(Sender: TObject);
- begin
- MonitorSource.Dataset.Active := False;
- MonitorSource.Dataset := MonitorQueries [TabSet.TabIndex];
- MonitorSource.Dataset.Active := True;
- end;
-
- procedure TSybMonitorDialog.ExitBtnClick(Sender: TObject);
- begin
- Close;
- end;
-
- procedure TSybMonitorDialog.RefreshTimer(Sender: TObject);
- var
- Bookmark: TBookmark;
- begin
- if MonitorSource.Dataset.Active then
- begin
- MonitorSource.Enabled := False;
- Bookmark := MonitorSource.Dataset.GetBookmark;
- try
- MonitorSource.Dataset.Active := False;
- MonitorSource.Dataset.Active := True;
- MonitorSource.Dataset.GotoBookmark (Bookmark)
- finally
- MonitorSource.Dataset.FreeBookmark (Bookmark)
- end;
- MonitorSource.Enabled := True
- end
- end;
-
- procedure TSybMonitorDialog.OptionsBtnClick(Sender: TObject);
- begin
- OptionsDlg.ShowModal;
- end;
-
- procedure TSybMonitorDialog.FormShow(Sender: TObject);
- var
- MR: TModalResult;
- begin
- MR := OpenDbDlg.ShowModal;
- if MR = mrOk then
- try
- if CompareText (OpenDbDlg.AliasType, 'SYBASE') <> 0 then
- raise Exception.Create ('Must specify a Sybase alias');
-
- Caption := Caption + ' - ' + OpenDbDlg.AliasName;
- MonitorDb.AliasName := OpenDbDlg.AliasName;
- MonitorDb.Connected := True;
- MonitorSource.Dataset := ActivityQuery;
- ActivityQuery.Active := True;
- MonitorQueries [0] := ActivityQuery;
- MonitorQueries [1] := ProcessesQuery;
- MonitorQueries [2] := LocksQuery;
- Refresh.Enabled := True
- except
- Application.HandleException (Self);
- MR := mrCancel
- end;
-
- if MR <> mrOk then Close
- end;
-
- end.
-