Attualmente sto cercando di eliminare un database tramite il seguente codiceaffidabile cadere un database in SQL Server 2008 tramite C#
using Microsoft.SqlServer.Management.Smo;
var server = new Server(Server);
server.KillAllProcesses("Db");
server.KillDatabase("Db");
a volte funziona, ma altri ottengo la seguente eccezione:
Microsoft.SqlServer.Management.Smo.FailedOperationException: Kill database non riuscito per Server 'Host1'.
---> Microsoft.SqlServer.Management.Common.ExecutionFailureException: si è verificata un'eccezione durante l'esecuzione di un'istruzione Transact-SQL o di un batch.
---> System.Data.SqlClient.SqlException: le modifiche allo stato o alle opzioni del database 'Db' non possono essere apportate in questo momento. Il database è in modalità utente singolo e un utente è attualmente collegato ad esso.
Qualche idea su come rilasciare il database in modo affidabile tramite codice?
Hai provato ' ALTER DATABASE Db SET MULTI_USER ;, prima? –
Personalmente non userò SMO per questo, principalmente perché non so esattamente cosa facciano quelle funzioni di 'Kill ...()'. Preferirei dire "USE master"; ALTER DATABASE Db SET SINGLE_USER CON ROLLBACK IMMEDIATO; DROP DATABASE Db; ' –
Il database non è impostato come SingleUser per impostazione predefinita, penso che un tentativo fallito sul metodo KillDatabase lo trasformi in un singolo utente e lo lasci in quel modo. – Konstantinos