Restore Database

martedì 20 giugno 2006 - 13.13

fedecheller Profilo | Junior Member

Sto cercando effettuare il restore da applicativo (c#, framework 1.1) del db sqlserver 2000 da un file.bak.

la query è la seguente:
use master Restore Database MioDB from DISK = 'C:\MioDB.bak'

l'errore è:
System.Data.OleDb.OleDbException: Interruzione anomala di RESTORE DATABASE in corso.
Il database è in uso. Impossibile ottenere l'accesso esclusivo.

Sembra che il db sia già in uso dal processo aspnet_wp.exe????
dal query analizer dopo aver interrotto e riavviato sqlserver la query funziona.
possibili soluzioni per effetuare il restore a caldo da applicativo???
grazie


MUSIC IS FREE, DRINK ARE TO PAY, STAY TILL LATE BUT SLEEP AWAY

alx_81 Profilo | Guru

Ciao!
non è che per caso non chiudi qualche connessione antecedente??
chiedo, perchè basta che una connessione sia appesa da qualche parte e il db non può essere restorato..
Alx81 =)

http://blogs.dotnethell.it/suxstellino

fedecheller Profilo | Junior Member

Il problema è quello: io ho la connessione aperta dal mio applicativo per eseguire la query e non posso tirarla giù.
MUSIC IS FREE, DRINK ARE TO PAY, STAY TILL LATE BUT SLEEP AWAY

lbenaglia Profilo | Guru

>Il problema è quello: io ho la connessione aperta dal mio applicativo
>per eseguire la query e non posso tirarla giù.

Non puoi effettuare il restore di un db se sei già connesso al medesibo database.
Apri una connessione ad un altro database (ad esempio master) ed esegui da lì il restore del tuo database.

Ciao!


--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

fedecheller Profilo | Junior Member

la query dice già di farlo con USE master, ma
anche aprendo la connessione al db master e effettuando il restore da quello, sembra esserci ancora la connessione aperta che non mi permette l'esecuzione. la cosa si risolve se interrompo e riavvio il db (tira giù le connessioni attive?!).
Se eseguo "ALTER DATABASE MioDb SET SINGLE_USER" mi tira giù le connessioni attive??? quale instruzione sql è più adatta?

MUSIC IS FREE, DRINK ARE TO PAY, STAY TILL LATE BUT SLEEP AWAY

lbenaglia Profilo | Guru

>Se eseguo "ALTER DATABASE MioDb SET SINGLE_USER" mi tira giù
>le connessioni attive??? quale instruzione sql è più adatta?

ALTER DATABASE <nome database> SET SINGLE_USER WITH ROLLBACK IMMEDIATE;

Dopo però devi rimetterlo a multi user:

ALTER DATABASE <nome database> SET MULTI_USER;

Ad ogni modo le attività di RESTORE dovrebbero essere eseguite da un DBA utilizzando i classici strumenti a sua disposizione...

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

fedecheller Profilo | Junior Member

il db è in locale.
ma x ora la connessione attiva non riesco ad ucciderla se non stoppando il servizio.
MUSIC IS FREE, DRINK ARE TO PAY, STAY TILL LATE BUT SLEEP AWAY

lbenaglia Profilo | Guru

>ma x ora la connessione attiva non riesco ad ucciderla se non
>stoppando il servizio.

Invece di aprire una connessione al tuo db per poi eseguire USE master, non puoi aprire direttamente una connessione su master ed eseguire il restore direttamente da lì?

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

fedecheller Profilo | Junior Member

come dicevo prima, purtroppo anche aprendo una nuova connessione, l'altra è ancora aperta, dovrei trovare un modo x tirarla giù.
MUSIC IS FREE, DRINK ARE TO PAY, STAY TILL LATE BUT SLEEP AWAY
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5