Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Kann nicht auf unmittelbar vorher erzeugte DB connecten (https://www.delphipraxis.net/108690-kann-nicht-auf-unmittelbar-vorher-erzeugte-db-connecten.html)

daniel71 17. Feb 2008 22:08

Datenbank: MSSQL • Version: 2005 • Zugriff über: ADOConnection

Kann nicht auf unmittelbar vorher erzeugte DB connecten
 
Hallo

Im FormShow Ereigniss meines Programms prüfe ich zuerst ob es die DB "AM7_6" existiert, wenn nicht erzeuge ich sie mit hilfe von ADOCnnection1 (ADOQuery1). Dannach verbinde ich mich mit ADOConnection2 auf die eben erzeugte DB.

Delphi-Quellcode:
  ADOConnection2.ConnectionString:= 'Provider=SQLOLEDB.1;Integrated Security=SSPI;' +
  'Persist Security Info=False;Initial Catalog=' + DBAM + ';Data Source=' + ServerNameIni + ';';
try
  ADOConnection2.Connected:= True;
 except
  on E:Exception do
  begin
   with ADOQuery1 do Begin // DB AM erstellen
    close;
    SQL.Text:= 'CREATE DATABASE AM7_6';
    ExecSQL;
   end;
   newAMDB:= true;
  end;
 end;

 if newAMDB = true then
 begin

  try
   ADOConnection2.Connected:= True;
  except
   on E:Exception do
   begin
    E.Message:= 'Fehler beim Verbinden mit der Datenbank';
    raise;
   end;
  end;
...
Die DB "AM7_6" wird auch auf dem Server erzeugt, ADOConnection2 fällt aber immer ins Exception. Wenn ich es ohne try/except mache mit folgender Fehlermeldung: cannot open database "AM7_6" requested by the login. The login failed.

Jetzt kommt das, was ich überhaupt nicht begreife:
Wenn ich zwischen dem Erzeugen von "AM7_6" und "ADOConnection2.Connected:= True;" einen Haltepunkt setze und danach das Programm sofort wieder mit "F9" vortsetzte, funktioniert es. :gruebel:

Kann mir da jemand weiterhelfen?

Daniel

sx2008 17. Feb 2008 22:56

Re: Kann nicht auf unmittelbar vorher erzeugte DB connecten
 
1.) versuchen mit deiner DB zu verbinden
2.) bei Fehler die Connection ändern mit Initial Catalog=master und erneut verbinden
Die Datenbank "master" ist immer vohanden

2b) jetzt deinen CREATE Database ... absetzen und zwar direct über ADOConnection.Execute()
2c) SQL Befehl 'USE '+DBAM absetzen -> jetzt hast du von "master" in deine DB gewechselt


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz