Summary: Questo blog descrive le soluzioni per risolvere l'errore "Ripristino del database SQL non riuscito, database in uso". Queste soluzioni includono la disconnessione delle connessioni attive (utenti e processi) al database e l'utilizzo del software Stellar Toolkit for MS SQL per ripristinare il database SQL (db) da un file db o di backup (.bak) corrotto. Le soluzioni si applicano a MS SQL Server 2019, 2017, 2016, 2014 e versioni inferiori.
Quando si tenta di ripristinare il database di SQL Server da un backup, è comune ricevere un messaggio di errore che recita come segue:
Ripristino fallito per il server ‘xxx’ (Microsoft.SqlServer.SmoExtended)
Informazioni aggiuntive: System.Data.SqlClient.SqlError: Non è stato possibile ottenere l’accesso esclusivo perché il database è in uso.
Motivi alla base dell’errore “SQL Database Restore Failed, Database in Use”.
Di seguito sono riportati alcuni motivi che potrebbero interferire con il processo di ripristino e generare l’errore “ripristino del database non riuscito perché il database è in uso“:
- Si è connessi al database che si sta cercando di ripristinare.
- Quando si utilizza SQL Server Management Studio (SSMS) per eseguire il ripristino di un database, si ha più di una finestra aperta.
- Gli altri utenti sono collegati al db master.
Ora discuteremo le soluzioni per risolvere l’errore.
Suggerimento: Il database di SQL Server può essere ripristinato dal file di backup (.bak). Tuttavia, l’operazione di ripristino del database può fallire se il file .bak è danneggiato. Utilizzare il software Stellar Toolkit for MS SQL, dotato di un efficiente strumento di estrazione di backup SQL progettato per aiutare gli amministratori di database a ripristinare il database SQL da un file di backup (.BAK) danneggiato. Il software supporta SQL Server 2019, 2017, 2016, 2014, 2012 e versioni precedenti. |
Prima di iniziare
Prima di procedere alla risoluzione dell’errore – non è stato possibile ottenere l’accesso esclusivo perché il database è in uso, assicuratevi di soddisfare i seguenti prerequisiti:
- SQL Server, di qualsiasi versione, deve essere installato sul sistema.
- È necessario che sul computer sia installato SQL Server Management Studio (SSMS).
Come risolvere il problema “Impossibile ripristinare il database SQL perché è in uso”?
Quando si tenta di ripristinare il db di SQL Server, assicurarsi che non vi siano connessioni attive. Se qualcuno sta utilizzando il database, l’operazione di ripristino non riuscirà. Per risolvere il problema, è necessario disconnettere gli utenti attivi. È possibile farlo seguendo uno dei seguenti metodi:
NOTA: Prima di disconnettere gli utenti, utilizzare la stored procedure SQL ‘sp_who’ per controllare tutti gli utenti che stanno utilizzando il db. Se si trovano utenti che svolgono attività importanti, informarli prima di disconnetterli. Per informazioni dettagliate su sp_who, consultare questo link. Se non si desidera notificare gli utenti, passare al metodo 2.
Metodo 1 – Chiudere le connessioni esistenti al database
Per chiudere le connessioni esistenti a SQL db, procedere come segue:
Passo 1: aprire SSMS e collegarsi al db.
Fase 2: Dopo la connessione al database, il pannello Object Explorer apparirà sul lato sinistro della finestra di SSMS.
Fase 3: nel pannello Esplora oggetti, fare clic con il pulsante destro del mouse su Database e selezionare Ripristina database.
Fase 4: nella finestra di dialogo Ripristina database, procedere come segue:
- Selezionare uno dei database da ripristinare.
- Nel pannello di sinistra, fare clic su Opzioni.
Fase 5: nella pagina Opzioni, selezionare la casella di controllo “Chiudi le connessioni esistenti al database di destinazione”.
Una volta chiuse le connessioni a SQL Server, procedere con l’operazione di ripristino.
Metodo 2 – Passaggio dalla modalità utente multiplo alla modalità utente singolo
Se si cambia la modalità utente multiplo in modalità utente singolo, tutti gli utenti connessi verranno disconnessi. Questa opzione può essere utilizzata se si desidera disconnettere tutti gli utenti senza avvisarli.
Per costringere gli utenti ad andare offline (cioè a disconnettersi) da SQL Server, impostate il db dalla modalità multiutente a quella monoutente seguendo i seguenti passaggi:
Passo 1: aprire SSMS, collegarsi al database.
Passo 2: nella finestra Esplora oggetti, selezionare Nuova query. Copiare e incollare il seguente frammento di codice T-SQL nella finestra della query, quindi fare clic su Esegui:
Utilizzare il master;
VAI
ALTER DATABASE AdventureWorks2012
SET SINGLE_USER
CON ROLLBACK IMMEDIATO;
VAI
L’esecuzione del codice sopra riportato cambierà il database in modalità monoutente.
Metodo 3 – Riavviare il servizio SQL Server
È possibile disconnettere gli utenti anche riavviando il servizio SQL. È possibile riavviare il servizio utilizzando SQL Server Configuration Manager, SSMS, la console dei servizi o la riga di comando.
NOTA: utilizzare questo metodo come ultima risorsa. Infatti, potrebbe essere necessario ripristinare solo un singolo database, ma il riavvio del server eliminerà le connessioni a tutti i database.
I passaggi per riavviare il servizio da SQL Server Configuration Manager sono i seguenti:
Passo 1: sfogliare SQL Server Configuration Manager utilizzando uno dei seguenti percorsi:
SQL Server 2019 C:\Windows\SysWOW64\SQLServerManager15.msc
SQL Server 2017 C:\Windows\SysWOW64\SQLServerManager14.msc
SQL Server 2016 C:\Windows\SysWOW64\SQLServerManager13.msc
SQL Server 2014 C:\Windows\SysWOW64\SQLServerManager12.msc
SQL Server 2012 C:\Windows\SysWOW64\SQLServerManager11.msc
Fase 2: nel riquadro sinistro della finestra di SQL Server Configuration Manager, fare clic su SQL Server Services. Nel riquadro di destra, fate clic con il tasto destro del mouse sul servizio SQL Server, quindi arrestatelo e avviatelo.
Fase 3: Fare clic su OK per uscire da SQL Server Configuration Manager.
E se il problema persiste?
Se il problema persiste, è probabile che ci sia un problema con il database o che il file di backup, utilizzato per il ripristino del database, sia corrotto. In questo caso, utilizzare Stellar Toolkit for MS SQL. Il software è in grado di recuperare il database da un SQL Server corrotto. Può anche estrarre un database da file di backup (.bak) corrotti che devono essere ripristinati.
Il software Stellar Toolkit for MS SQL può anche aiutare a ripristinare le password di amministratore e utente di SQL Server perse o dimenticate. Potete leggere la recensione del software fatta da MVP qui.
Per ripristinare il database da un file di backup corrotto di SQL Server (.bak) utilizzando il software, seguite questi passaggi:
Passo 1: Scaricare, installare e avviare il software Stellar Toolkit for MS SQL.
Passo 2: nell’interfaccia utente del software, selezionare Estrai da MS SQL Backup.
Fase 3: nella finestra di Stellar Backup Extractor for MS SQL, fare clic su Seleziona file per scegliere il file .bak.
NOTA: se non si conosce la posizione del file, scegliere l’opzione “Cerca nella cartella”.
Fase 4: Dopo aver selezionato il file .bak, fare clic su Scansione.
Fase 5: viene visualizzata la finestra BackupSet con i dettagli di tutti i backup.
Fase 6: scegliere il file .bak che si desidera ripristinare dall’elenco Tipo di backup, quindi fare clic su Avanti per procedere con il processo di scansione.
Fase 7: Una volta completata la scansione, viene visualizzata una finestra di dialogo che indica il numero di record totali disponibili nel file di backup.
Fase 8: Il software mostra un’anteprima dei record del database.
Fase 9: Per salvare il file .bak recuperato, fare clic su Salva nel menu File.
Passo 10: Nella finestra che si apre, scegliete MSSQL in Salva con nome, quindi fate clic su Sfoglia per selezionare il percorso in cui salvare il file recuperato. Fare clic su OK.
Fase 11: Scegliere Nuovo database o Database live in Opzioni di salvataggio. Quindi, specificare i dettagli richiesti nella sezione Connetti al server e fare clic su Connetti.
Fase 12: fare clic su OK quando viene visualizzato il messaggio “Processo di ripristino completato con successo”.
Il file recuperato verrà salvato nella posizione selezionata.
Potete vedere il video completo qui:
Conclusione
Questo blog spiega come risolvere il problema del ripristino del database SQL non riuscito, database in uso. È possibile scollegare gli utenti attivi chiudendo le connessioni esistenti o passando dalla modalità utente multiplo alla modalità utente singolo. Oppure, disconnettere tutti gli utenti riavviando il servizio SQL Server. Tuttavia, se si riscontrano ancora problemi nel ripristino del db, Stellar SQL Database Toolkit può essere utile. Aiuta a risolvere il problema riparando il db SQL corrotto o ripristinando il file di backup di SQL Server.