Benutzer mit den meisten Antworten
ALTER DATABASE failed because a lock could not be placed on database

Frage
-
Hallo,
ich habe folgendes Problem. Ich wollte ein Datenbank Offline setzen und bekam folgende Fehlermeldungen.
Cannot drop database "mediatrixdb01" because it is currently in use.
Ich habe das dann versucht das zu lösen mit.
ALTER DATABASE mediatrixdb01 SET SINGLE_USER WITH ROLLBACK IMMEDIATE; DROP DATABASE mediatrixdb01 GO
aber dort bekomme ich auch eine Fehlermeldung.
Msg 5061, Level 16, State 1, Line 1 ALTER DATABASE failed because a lock could not be placed on database 'mediatrixdb01'. Try again later. Msg 5069, Level 16, State 1, Line 1 ALTER DATABASE statement failed. Msg 3702, Level 16, State 4, Line 3 Cannot drop database "mediatrixdb01" because it is currently in use.
Den Versuch die Conncection heraus zu finden habe ich
EXEC sp_who2
ausgeführt, ABER DAS FUNKTIONIERT NICHT :(
Database 'mediatrixdb01' is in transition. Try the statement later.
bekomme ich jedes mal. Kann mir einer verraten, wie ich das lösen kann?
Vielen Dank!
Antworten
-
Hallo,
hast Du zuvor den Datenbankkontext gewechselt - vorzugsweise auf master?
USE master; GO ALTER DATABASE mediatrixdb01 SET SINGLE_USER WITH ROLLBACK IMMEDIATE; GO DROP DATABASE mediatrixdb01; GO
(Der letzte Befehl löscht die Datenbank und setzt sie nicht etwa offline)
Gruß Elmar
- Als Antwort markiert BCCsql Freitag, 25. Oktober 2013 09:06
-
Hallo,
wie Elmar schon sagte, kann der Wechsel auf die master-DB Wunder wirken. Grundsätzlich benutze ich dies so:
use master go --statement-- use master go
Wobei das obere wechseln nur bei CREATE DB oder DROP DB ein wenig Sinn macht.
Das DROP kannst du auch so verwenden (erspart oft lebensmühe):
IF NOT DB_ID('mediatrixdb01') IS NULL DROP DATABASE mediatrixdb01 GO
Dies überprüft dir ob diese überhaupt existiert - damit verhindert man die Fehlermeldung, dass DB nicht gelöscht werden kann. Selbiges kann man, ohne NOT, auch bei CREATE benutzen.
Weiters, DROP löscht die DB - setzt sie aber NICHT offline. Du kannst sie eventuell noch vom Server AUSHÄNGEN:
use master go EXEC sp_detach_db 'mediatrixdb01';
Damit ist die DB nicht mehr am Server Verfügbar aber die .mdf und .ldf File existiert natürlich noch im Stammdatenverzeichnis und kann jederzeit wieder am Server EINGEHÄNGT bzw. angelegt werden. Das kommt dem OFFLINE setzen am nähesten.LG Dave
- Bearbeitet David Stockinger Freitag, 25. Oktober 2013 07:51
- Als Antwort markiert BCCsql Freitag, 25. Oktober 2013 09:06
-
schau doch mal im ActivityMonitor oder mit
USE master select * from sys.dm_tran_locks where resource_database_id = db_id('mediatrixdb01')
wer und was da für ein Lock hält
inwiefern "sp_who nicht funktioniert", wird hieraus leider nicht ersichtlich
Andreas Wolter | Microsoft Certified Master SQL Server
Blog: www.insidesql.org/blogs/andreaswolter
Web: www.andreas-wolter.com | www.SarpedonQualityLab.com
- Bearbeitet Andreas.WolterMicrosoft employee Freitag, 25. Oktober 2013 08:50 db name
- Als Antwort markiert BCCsql Freitag, 25. Oktober 2013 09:06
Alle Antworten
-
Hallo,
hast Du zuvor den Datenbankkontext gewechselt - vorzugsweise auf master?
USE master; GO ALTER DATABASE mediatrixdb01 SET SINGLE_USER WITH ROLLBACK IMMEDIATE; GO DROP DATABASE mediatrixdb01; GO
(Der letzte Befehl löscht die Datenbank und setzt sie nicht etwa offline)
Gruß Elmar
- Als Antwort markiert BCCsql Freitag, 25. Oktober 2013 09:06
-
Hallo,
wie Elmar schon sagte, kann der Wechsel auf die master-DB Wunder wirken. Grundsätzlich benutze ich dies so:
use master go --statement-- use master go
Wobei das obere wechseln nur bei CREATE DB oder DROP DB ein wenig Sinn macht.
Das DROP kannst du auch so verwenden (erspart oft lebensmühe):
IF NOT DB_ID('mediatrixdb01') IS NULL DROP DATABASE mediatrixdb01 GO
Dies überprüft dir ob diese überhaupt existiert - damit verhindert man die Fehlermeldung, dass DB nicht gelöscht werden kann. Selbiges kann man, ohne NOT, auch bei CREATE benutzen.
Weiters, DROP löscht die DB - setzt sie aber NICHT offline. Du kannst sie eventuell noch vom Server AUSHÄNGEN:
use master go EXEC sp_detach_db 'mediatrixdb01';
Damit ist die DB nicht mehr am Server Verfügbar aber die .mdf und .ldf File existiert natürlich noch im Stammdatenverzeichnis und kann jederzeit wieder am Server EINGEHÄNGT bzw. angelegt werden. Das kommt dem OFFLINE setzen am nähesten.LG Dave
- Bearbeitet David Stockinger Freitag, 25. Oktober 2013 07:51
- Als Antwort markiert BCCsql Freitag, 25. Oktober 2013 09:06
-
ja ich benutze den befehl
USE master
hab das nur vergessen einzufügen.
ich möchte die datenbank löschen, das ist schon richtig. Aber es lässt mich nicht.
use master go EXEC sp_detach_db 'mediatrixdb01';
Msg 3703, Level 16, State 2, Line 1
Cannot detach the database 'mediatrixdb01' because it is currently in use.Egal welchen Befehl ich absetze. Das bekomme ich als Meldung.
-
schau doch mal im ActivityMonitor oder mit
USE master select * from sys.dm_tran_locks where resource_database_id = db_id('mediatrixdb01')
wer und was da für ein Lock hält
inwiefern "sp_who nicht funktioniert", wird hieraus leider nicht ersichtlich
Andreas Wolter | Microsoft Certified Master SQL Server
Blog: www.insidesql.org/blogs/andreaswolter
Web: www.andreas-wolter.com | www.SarpedonQualityLab.com
- Bearbeitet Andreas.WolterMicrosoft employee Freitag, 25. Oktober 2013 08:50 db name
- Als Antwort markiert BCCsql Freitag, 25. Oktober 2013 09:06
-
Hallo,
welche SQL Server Version / Service Pack?
Hilft es evtl. wenn Du das SQL Server Management Studio schließt - vereinzelt findet man Probleme, die durchs SSMS verursacht werden. Siehe z. B.: SQL - Error 952 and 8 ways to solve it
Gruß Elmar
-
das mit dem activity monitor habe ich schon versucht und sobald ich die prozesse öffnen will bekomme ich die Meldung
Database 'mediatrixdb01' is in transition. Try the statement later.
Wenn ich folgenden Befehl absetze ist die liste LEER.
USE master select * from sys.dm_tran_locks where resource_database_id = db_id('')
Nix einfach nix. Ich habe keine Ahnung warum....
-
Ja, ein Neustart von SSMS wenn noch nicht geschehen auf jeden Fall mal durchführen.
Schlimmstenfalls auch mal den ganzen Server ...
Andreas Wolter | Microsoft Certified Master SQL Server
Blog: www.insidesql.org/blogs/andreaswolter
Web: www.andreas-wolter.com | www.SarpedonQualityLab.com