J'essaie d'effectuer une maintenance hors ligne (restauration de la base de données de développement à partir d'une sauvegarde en direct) sur ma base de données de développement, mais la commande `` Déconnecter '' via SQL Server Management Studio s'exécute extrêmement lentement - de l'ordre de 30 minutes et plus maintenant. Je suis à peu près à ma fin et je n'arrive pas à trouver de références en ligne sur ce qui pourrait être à l'origine du problème de vitesse, ou comment le résoudre.
Certains sites ont suggéré que les connexions ouvertes à la base de données provoquent ce ralentissement, mais la seule application qui utilise cette base de données est l'instance IIS de ma machine de développement et le service est arrêté - il n'y a plus de connexions ouvertes.
Qu'est-ce qui pourrait être à l'origine de ce ralentissement et que puis-je faire pour l'accélérer?
la source
Il y a très probablement une connexion à la base de données quelque part (un rare exemple: mise à jour statistique asynchrone )
Pour rechercher des connexions, utilisez sys.sysprocesses
Pour forcer les déconnexions, utilisez ROLLBACK IMMEDIATE
la source
ALTER DATABASE failed because a lock could not be placed on database
commandeKILL <SPID>
aideraAvez-vous des fenêtres SQL Server Management Studio ouvertes qui sont connectées à cette base de données?
Mettez-le en mode mono-utilisateur, puis réessayez.
la source
Dans mon cas, après avoir tant attendu qu'il se termine, je n'ai eu aucune patience et j'ai simplement fermé le studio de gestion. Avant de quitter, il a montré le message de réussite, db est hors ligne. Les fichiers étaient disponibles pour renommer.
la source
exécuter la procédure stockée sp_who2
Cela vous permettra de voir s'il y a des verrous de blocage .. tuer leur devrait le réparer.
la source
Dans SSMS: cliquez avec le bouton droit sur l'icône du serveur SQL, Moniteur d'activité. Processus ouverts. Trouvez le connecté connecté. Faites un clic droit sur le processus, Kill.
la source
chaque fois que vous rencontrez ce type de chose, vous devez toujours penser à votre journal des transactions. L'affirmation alter db avec rollback immédiat indique que c'est le cas. Vérifiez ceci: http://msdn.microsoft.com/en-us/library/ms189085.aspx
Bone up sur les points de contrôle, etc. Vous devez décider si les transactions dans votre journal valent la peine d'être sauvegardées, puis choisir le mode d'exécution de votre base de données en conséquence. Il n'y a vraiment aucune raison pour que vous deviez attendre mais également aucune raison pour que vous perdiez des données non plus - vous pouvez avoir les deux.
la source
La fermeture de l'instance de SSMS (SQL Service Manager) à partir de laquelle la demande a été faite a résolu le problème pour moi .....
la source
Dans mon cas, j'avais regardé certaines tables de la base de données avant d'exécuter cette action. Mon compte d'utilisateur détenait une connexion active à cette base de données dans SSMS. Une fois que je me suis déconnecté du serveur dans SSMS (laissant la boîte de dialogue "Mettre la base de données hors ligne" ouverte), l'opération a réussi.
la source
Pour contourner ce problème, j'ai arrêté le site Web qui était connecté à la base de données dans IIS et immédiatement le panneau «gelé» «mettre la base de données hors ligne» est devenu figé.
la source
J'ai essayé toutes les suggestions ci-dessous et rien n'a fonctionné.
Tuer <SPID>
ALTER DATABASE SET SINGLE_USER WITH Rollback Immediate
ALTER DATABASE MISE HORS LIGNE AVEC ROLLBACK IMMEDIATE
Résultat: les deux commandes ci-dessus ont également été bloquées.
4. Cliquez avec le bouton droit sur la base de données -> Propriétés -> Options Définir la base de données en lecture seule sur True Cliquez sur 'Oui' dans la boîte de dialogue avertissant que SQL Server fermera toutes les connexions à la base de données.
Résultat: la fenêtre était bloquée lors de l'exécution.
En dernier recours, j'ai redémarré le service SQL Server à partir du gestionnaire de configuration, puis j'ai exécuté ALTER DATABASE SET OFFLINE WITH ROLLBACK IMMEDIATE. Ça a marché comme sur des roulettes
la source
Fermez également toutes les fenêtres de requête ouvertes qui sont connectées à la base de données en question;)
la source
Dans SSMS, définissez la base de données en lecture seule, puis revenez. Les connexions seront fermées, ce qui libère les serrures.
Dans mon cas, il y avait un site Web qui avait des connexions ouvertes avec la base de données. Cette méthode était assez simple:
Database Read-Only
sur Truela source
Pour moi, je devais simplement aller dans le Job Activity Monitor et arrêter deux choses en cours de traitement. Ensuite, il s'est immédiatement déconnecté. Dans mon cas, cependant, je savais quels étaient ces 2 processus et qu'il était acceptable de les arrêter.
la source
Dans mon cas, la base de données était liée à une ancienne installation de Sharepoint. L'arrêt et la désactivation des services associés dans le gestionnaire de serveur ont "décroché" l'action de mise hors ligne, qui fonctionnait depuis 40 minutes et s'est terminée immédiatement.
Vous voudrez peut-être vérifier si des services utilisent actuellement la base de données.
la source
sp_who2
pour voir quels processus utilisent la base de données et utilisez-leskill <PID>
pour les arrêter.La prochaine fois, dans la boîte de dialogue Déconnecter, n'oubliez pas de cocher la case «Supprimer toutes les connexions actives». J'étais également sur SQL_EXPRESS sur une machine locale sans connexion, mais ce ralentissement s'est produit pour moi, sauf si j'ai coché cette case.
la source
Dans mon cas, j'ai arrêté le serveur Tomcat. puis immédiatement la DB s'est déconnectée.
la source