Announcement

Collapse
No announcement yet.

MSDE automatisch Start und Stop

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • MSDE automatisch Start und Stop

    Hallo,<br>
    <br>
    ich möchte die MSDE nicht immer laufen lassen, <br>
    - ich brauche die Datenbank nicht immer<br>
    - die Datenbank benötigt doch einiges an RAM<br>
    Besteht die Möglichkeit die MSDE per Batch-Datei zu starten und auch wieder zu beenden?<br>
    Oder gibt es ein Kommandozeilen-Programm welches dies mir ermöglicht?<br>
    <br>
    Gruss und Dank<br>
    Dietmar

  • #2
    Hallo,

    über das <i>Distributed Management Object</i> (DMO) stellt die MSDE verschiedene COM-Objekte zur Verfügung, welche unter anderem auch die MSDE starten (Methode <b>Start</b>) oder stoppen (Methode <b>Stop</b>) können. Die Aufrufe können somit aus jeder Umgebung heraus aufgerufen werden, die mit COM-Objekten umgehen kann.

    In dem folgenden Delphi-Beispiel kontrolliert das Programm die MSDE selbst, so dass diese nur während der eigenen Programmlaufzeit aktiv ist:
    <pre>
    <font color="#003399"><i>{ ************************************************** **************
    Typ : Formular-Unit
    Autor : Andreas Kosch
    Erstellt am : 19.09.1999
    Compiler : Delphi 5 Enterprise
    Betriebssystem : Windows 98
    Beschreibung : ADO verwendet MSDE (frühe Bindung)
    Connection String: Provider=SQLOLEDB.1;
    Persist Security Info=False;
    User ID=sa;
    Initial Catalog=OSSISOFT;
    Data Source=(local)
    ************************************************** ************** }</i></font>
    <br>
    <b>unit</b> OpenDBFrm;
    <br>
    <b>interface</b>
    <br>
    <b>uses</b>
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    ExtCtrls, DBCtrls, Grids, DBGrids, Db, ADODB, ComCtrls, StdCtrls,
    SQLDMO_TLB, Mask;
    <br>
    <b>type</b>
    TForm1 = <b>class</b>(TForm)
    ADOConnection1: TADOConnection;
    ADOQuery1: TADOQuery;
    DataSource1: TDataSource;
    DBNavigator1: TDBNavigator;
    Label1: TLabel;
    ButtonStart: TButton;
    Label2: TLabel;
    Label3: TLabel;
    ButtonStop: TButton;
    StatusBar1: TStatusBar;
    ADOQuery1Firma: TStringField;
    ADOQuery1Ort: TStringField;
    ADOQuery1Hinweise: TMemoField;
    ADOQuery1Rekla: TIntegerField;
    Label4: TLabel;
    DBEdit1: TDBEdit;
    Label5: TLabel;
    DBEdit2: TDBEdit;
    Label6: TLabel;
    DBMemo1: TDBMemo;
    Label7: TLabel;
    DBEdit3: TDBEdit;
    <b>procedure</b> ButtonStartClick(Sender: TObject);
    <b>procedure</b> ButtonStopClick(Sender: TObject);
    <b>private</b>
    <font color="#003399"><i>{ Private declarations }</i></font>
    FSrv : _SQLServer;
    <b>public</b>
    <font color="#003399"><i>{ Public declarations }</i></font>
    <b>end</b>;
    <br>
    <b>var</b>
    Form1: TForm1;
    <br>
    <b>implementation</b>
    <br>
    <font color="#003399"><i>{$R *.DFM}</i></font>
    <br>
    <b>uses</b>
    ComObj, ActiveX;
    <br>
    <b>procedure</b> TForm1.ButtonStartClick(Sender: TObject);
    <b>begin</b>
    FSrv := CoSQLServer.Create;
    FSrv.LoginTimeout := 20;
    FSrv.Start(True, <font color="#9933CC">'(local)'</font>, <font color="#9933CC">'sa'</font>, <font color="#9933CC">''</font>);
    ADOConnection1.Connected := True;
    ADOQuery1.Active := True;
    <b>end</b>;
    <br>
    <b>procedure</b> TForm1.ButtonStopClick(Sender: TObject);
    <b>begin</b>
    ADOQuery1.Active := False;
    ADOConnection1.Connected := False;
    FSrv.DisConnect;
    FSrv.Stop;
    <b>end</b>;
    <br>
    <b>end</b>.
    </pre&gt

    Comment


    • #3
      Hallo Dietmar,

      per Batch-Datei geht es auch, natürlich nur auf dem Rechner, auf dem die MSDE läuft.

      <PRE>
      net start "Dienstname"
      net stop "Dienstname"
      </PRE&gt
      Olaf Helper

      <Blog> <Xing>
      * cogito ergo sum * errare humanum est * quote erat demonstrandum *
      Wenn ich denke, ist das ein Fehler und das beweise ich täglich

      Comment

      Working...
      X