281 votes

Temps d’attente extrême lorsque vous prenez une base de données SQL Server en mode hors connexion

Je suis tente d'effectuer une maintenance hors ligne (dev restauration de base de données à partir de live backup) sur mon dev base de données, mais le " Prendre Hors ligne de commande via SQL Server Management Studio effectue très lentement - de l'ordre de 30 minutes, plus maintenant. Je suis à peu près à mon esprit fin et je n'arrive pas à trouver des références en ligne de ce qui pourrait être à l'origine du problème de vitesse, ou comment résoudre le problème.

Certains sites ont suggéré que les connexions à la base de données de la cause de ce ralentissement, mais la seule application qui utilise cette base de données est ma machine de dev IIS de l'instance, et le service est arrêté, il n'y a plus de connexions ouvertes.

Ce qui pourrait être à l'origine de ce ralentissement, et ce que je peux faire pour l'accélérer?

419voto

BrightUmbra Points 13844

Après quelques recherches supplémentaires (nouveaux termes de recherche inspirés par la réponse de gbn et le commentaire de u07ch sur la réponse de KMike), j'ai trouvé ceci, qui s'est terminé avec succès en 2 secondes:

 ALTER DATABASE <dbname> SET OFFLINE WITH ROLLBACK IMMEDIATE
 

Merci beaucoup les gars - j'apprécie l'aide. =)

130voto

gbn Points 197263

Il est plus probable une connexion à la DB, à partir de quelque part (un rare exemple: asynchrone statistique de mise à jour)

Pour trouver des liens, utiliser sys.sysprocesses

USE master
SELECT * FROM sys.sysprocesses WHERE dbid = DB_ID('MyDB')

Pour forcer la déconnexion, l'utilisation de la fonction RESTAURATION IMMÉDIATE

USE master
ALTER DATABASE MyDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE

31voto

KM. Points 51800

avez-vous des fenêtres de studio de gestion SQL Server ouvertes qui sont connectées à cette base de données?

mettez-le en mode mono-utilisateur, puis réessayez.

17voto

Rudy Points 907

Dans mon cas, après avoir tant attendu pour que ça finisse je n'avais pas de patience et simplement fermé le studio de gestion. Avant de quitter, il a montré le message de succès, db est hors ligne. Les fichiers étaient disponibles pour renommer.

4voto

yetanotherdave Points 224

chaque fois que vous exécutez dans ce type de chose que vous devez toujours penser à votre journal des transactions. L'alter db déclaration de reprise immédiate indique que c'est le cas. Check this out: http://msdn.microsoft.com/en-us/library/ms189085.aspx

Os sur les points de contrôle, etc. Vous devrez décider si les transactions dans votre journal est utile d'enregistrer ou non et ensuite choisir le mode d'exécution de votre db en conséquence. Il n'y a vraiment aucune raison pour que vous ayez à attendre, mais aussi aucune raison pour vous de perdre des données - vous pouvez avoir les deux.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X