Announcement

Collapse
No announcement yet.

MSDE über Delphi steuern

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

  • MSDE über Delphi steuern

    Hallo zusammen, ich habe zwei kleine Fragen:

    1. Wie läßt sich die MSDE vernünftig über Delphi steuern?
    Ich habe die Typdeklarationsunit importiert und benutze Start, Stop, Pause
    und Continue um dem Server zu steuern. Über Get_Status lassen sich die
    jeweiligen Stati abfragen, jedoch erst nachdem der Server über Delphi ge-
    startet wurde. Wurde der Server manuell gestartet, folgt eine Ausnahme mit
    der Meldung "kann keine zweite Instanz aktivieren...". Wie lassen sich die
    Stati flexibel und möglichst stabil abfragen (nicht nur SQLDMOSvc_Start, ..Stop und ..Pause, sondern auch SQLDMOSvc_Starting, ..Stoping und ..Pausing)?

    2. Von Zeit zu Zeit bekomme ich einen Timeout vom SQL-Server, auch wenn
    dieser lokal installiert ist. Wie kann ich diesen Fehler umgehen?

    Naja, die Fragen waren woll doch nicht so kurz Für eine kurze Antwort
    wäre ich jedoch sehr dankbar!

  • #2
    Hallo,

    beseitige die folgende Vorgehensweise das Problem?
    <pre>
    uses
    ComObj, ActiveX;

    var
    aSrv : Variant;

    procedure TForm1.ButtonStartClick(Sender: TObject);
    begin
    aSrv := CreateOleObject('SQLDMO.SQLServer');
    aSrv.LoginTimeout := 20;
    try
    aSrv.Start(True, '(local)', 'sa', '');
    except
    try
    aSrv.Connect('(local)', 'sa', '');
    except
    raise
    end;
    end;
    ADOConnection1.Connected := True;
    ADOQuery1.Active := True;
    end;
    </pre&gt

    Comment


    • #3
      Danke für die schnelle Antwort!

      Das Starten funktioniert sehr gut, wie kann ich allerdings die Fehler "RPC-Server nicht gefunden" und "Datei nicht gefunden" (!!!) umgehen, die beim Stoppen des Servers auftreten (z. B. wenn der Server bereits aktiv ist, aSrv wurde jedoch initialisert)?
      Irgendeine Idee

      Comment


      • #4
        Hallo,

        wenn der MSDE bereit lief (also <i>Start</i> fehlgeschlagen ist, <i>Connect</i> aber erfolgreich war), würde ich im Programm den Server <b>nicht</b> stoppen. Denn in diesem Fall hat entweder <br>
        a) der Benutzer, oder <br>
        b) eine andere Anwendung <br>
        die MSDE hochgefahren, so das der Server mit hoher Wahrscheinlichkeit bereits von anderen Programmen genutzt wird. Im eigenen Programm muss also nur noch eine Hilfsvariable nachgerüstet werden, die mitprotokolliert, ob der Server erfolgreich gestartet werden konnte. Nur dann würde ich den Stop-Aufruf abschicken

        Comment

        Working...
        X