Summary: Deze blog geeft een overzicht van wat u kunt doen om SQL Database Error 924 op te lossen. U kunt deze fout oplossen met T-SQL-query's, SSMS of SQL-herstelsoftware.
SQL fout 924, “Database ‘%.*ls’ is al geopend en kan maar één gebruiker tegelijk hebben”, is een fout met niveau 14. Niveau 14 behoort tot fouten op beveiligingsniveau, zoals een fout met geweigerde rechten. Het betekent dat je een database niet kunt openen omdat iemand hem gebruikt. De 924-fout treedt meestal op als u een SQL-database probeert te openen die is ingesteld op de SINGLE_USER-modus.
Zo ziet de volledige foutmelding eruit:
Er is een uitzondering opgetreden tijdens het uitvoeren van een Transact-SQL statement of batch. (Microsoft.SqlServer.ConnectionInfo)
Msg 924, Level 14, State 1, Line 1
Database ‘db_name’ is al geopend en kan maar één gebruiker tegelijk hebben.
Wat moeten we doen?
Aangezien de foutmelding 924 wordt geassocieerd met een verbindingsprobleem met één gebruiker, moet u eerst controleren of de database die u probeert te openen al dan niet in SINGLE_USER-modus staat. Start hiervoor SQL Server Management Studio (SSMS) en maak verbinding met een serverinstantie. Klik met de rechtermuisknop op de database, klik op Opties en navigeer vervolgens naar de sectie Status om de status van de database te controleren. Als deze is ingesteld op SINGLE_USER-modus, moet u alle processen die de database gebruiken vinden en beëindigen. Je kunt dit doen door een van deze opties te gebruiken:
- Stored Procedures van het systeem gebruiken
Gebruik de officieel gedocumenteerde sp_who of ongedocumenteerde sp_who2 opgeslagen procedure om alle momenteel draaiende processen of sessies te vinden.
EXEC sp_who |
Deze opdracht geeft sessie-id (spid) van actieve verbinding in een instantie van SQL Server.
EXEC sp_who2 |
Dit commando toont meer details dan sp_who, inclusief alle draaiende systeem- en gebruikersprocessen.
- SQL Profiler gebruiken
Een andere optie is om de activiteit te controleren met SQL Profiler, maar houd er rekening mee dat SQL Profiler in toekomstige versies niet meer gebruikt zal worden.
Als een ander proces de database gebruikt, gebruik dan het commando KILL om dat proces te doden.
Nog steeds geen toegang tot de database?
Als je nog steeds de foutmelding krijgt en geen toegang kunt krijgen tot de database en gegevens, probeer dan de volgende oplossingen.
Oplossing 1: Controleer SQL Server-services
Soms kan het simpelweg opnieuw opstarten van de SQL Server-service het probleem oplossen. Als dit niet werkt, probeer dan de volgende oplossing.
Oplossing 2: Herstel de database vanaf een back-up
Herstel de database met behulp van een back-up. Maar zorg ervoor dat je een bijgewerkte werkende back-up hebt. Als de back-up niet werkt of verouderd is, repareer de database dan.
Oplossing 3: DBCC CHECKDB herstelopties
Probeer de database te repareren met een van deze DBCC CHECKDB reparatieopties om weer toegang te krijgen tot de gegevens:
DBCC CHECKDB(‘xyz’,REPAIR_REBUILD)
Als het niet werkt, probeer dan het volgende:
DBCC CHECKDB(‘xyz’,REPAIR_ALLOW_DATA_LOSS)
Vervang ‘xyz’ door de naam van de database die je wilt repareren.
Het gebruik van de optie ‘REPAIR_ALLOW_DATA_LOSS’ kan, zoals de naam al aangeeft, leiden tot gegevensverlies. Overweeg in plaats daarvan het gebruik van een SQL recovery tool om de database te repareren met behoud van gegevensintegriteit.
Oplossing 4: Gebruik SQL Database Herstelsoftware
Stellar Repair for MS SQL is een geavanceerd SQL-herstelprogramma dat het MDF-bestand van de database repareert en de gegevens herstelt naar een nieuwe of bestaande SQL-database. De software helpt ook bij het herstellen van alle onderdelen van het herstelde bestand, inclusief tabellen, verwijderde records, sleutels, indexen, triggers, opgeslagen procedures, enz.
Bekijk deze video om te begrijpen hoe de software werkt:
Conclusie
SQL Database Error 924 verschijnt als u of een andere gebruiker een database probeert te openen in SINGLE_USER-modus. Omdat slechts één gebruiker toegang heeft tot de database, krijgt u de foutmelding “Database is al geopend en kan slechts één gebruiker tegelijk hebben”.
Om de database weer toegankelijk te maken, moet je elk proces, sessie of login-id met de database controleren en doden, zoals besproken in deze blog. Als de database ontoegankelijk blijft, herstart u de server om te controleren of het probleem is opgelost. Zo niet, dan moet u de database mogelijk herstellen vanaf een gezonde en bijgewerkte back-up. Of anders moet u de database repareren met DBCC CHECKDB-reparatieopties of Stellar Repair for MS SQL-software.