2009-11-04 5 views
2

Je dois effectuer une restauration de base de données à partir de .NET en utilisant SMO.Prior à la restauration J'ai défini la base de données en mode RESTRICTED_USER WITH ROLLBACK IMMEDIATE. Cela fonctionne très bien pendant le test/débogage - tous les utilisateurs sont supprimés. Toutefois, lorsque ce code est exécuté dans le cadre d'un processus automatisé de nuit, parfois, je reçois l'exception suivante:SQL Server: Définition du mode de base de données à RESTRICTED_USER avec ROLLBACK IMMEDIATE ne supprime pas toujours toutes les connexions

Microsoft.SqlServer.Management.Common.ExecutionFailureException: Une exception est survenue lors de l'exécution d'une instruction Transact-SQL ou lot. ---> System.Data.SqlClient.SqlException: L'accès exclusif n'a pas pu être obtenu car la base de données est en cours d'utilisation. RESTORE DATABASE se termine anormalement

Que se passe-t-il ici? Merci!

Répondre

3

Pouvez-vous pas faire;

alter database <db_name> set single_user with rollback immediate 

Ensuite, ajoutez une autre étape TSQL après la sauvegarde:

alter database <db_name> set multi_user 

Sinon, pour savoir ce qui pourrait se passer comme cela est en cours d'exécution dans la nuit, capturer en quelque sorte les résultats de

EXEC sp_who2 

Qui vous montrerait qui est connecté à ce moment-là.