AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

drop database

Ein Thema von bernhard_LA · begonnen am 27. Aug 2022 · letzter Beitrag vom 29. Aug 2022
Antwort Antwort
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.138 Beiträge
 
Delphi 11 Alexandria
 
#1

drop database

  Alt 27. Aug 2022, 13:25
Datenbank: MSSQL • Version: 12 • Zugriff über: ADO
wir versuchen während der Ausführung unserer unit tests die benutzen Testdatenbanken zu löschen.
Was wäre die beste Code Erweiterung um sinnvoll auf eine "database in use" Fehlermeldung zu reagieren



Delphi-Quellcode:
   

    SqlStr := ' drop database ' + DatabaseName;
    aDatabaseConnection.Execute('use master');
    aDatabaseConnection.Execute(SqlStr);

Geändert von bernhard_LA (27. Aug 2022 um 13:36 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: drop database

  Alt 27. Aug 2022, 13:53
Den Drop haben wir bei uns nicht drin, da das anlegen der DB(Spaces) + Zuweisung der User mit Berechtigung für unsere App eine Aktion der DB-Admins ist.
Wir setzen erst auf mit Create/drop table
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#3

AW: drop database

  Alt 27. Aug 2022, 13:59
Für Unit-Tests versuche ich die Verwendung zentral genutzter Datenbanken zu vermeiden. Für MS-SQL funktioniert da ganz gut SQL Server Express LocalDB
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#4

AW: drop database

  Alt 27. Aug 2022, 14:43
Es gibt doch bestimmt ein SELECT, um die aktiven Connections zu bekommen und dann zu trennen, vor dem DROP.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
969 Beiträge
 
Delphi 6 Professional
 
#5

AW: drop database

  Alt 27. Aug 2022, 21:03
Hmm...

Setze doch zunächst folgenden SQL ab:

ALTER DATABASE <Databasename> SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO

Damit wird die Datenbank auf SingleUser = Deine aktuelle gesetzt und alle anderen Connections zurück gesetzt und gekickt...
Dann kannst Du die DB löschen da niemand anderes mehr auf der DB sein kann!!

Quick an dirty, aber läuft.

Wenn Du die Sessions anderer Clients auslesen willst dann braucht dein Login-User erweiterte Rechte..
(Ja ich Verwende Delphi 6 Pro und will NICHT wechseln!)
  Mit Zitat antworten Zitat
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.205 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: drop database

  Alt 29. Aug 2022, 08:50
Wie Uwe sagt: besser keine DBs verwenden, wo andere auch dranhängen können. Die werden nämlich keine Freude haben, wenn ihnen wer die DB unterm Hintern wegzieht. :-/
Wir verwenden für Unit-Test - wenn ein definierter DB-Zustand Voraussetzung ist, eine eigene DB je Testlauf. Die BAK-Datei enthält den Datenbestand + der Testlauf zieht sich die DB mit einem eindeutigen Namen hoch + entfernt sie anschließend wieder.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:38 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