Verrouillé Fichiers de Données SQL Server
J'ai une base de données SQL Server où j'ai les données et les fichiers journaux stockés sur un disque USB externe. J'allume le lecteur externe entre mon principal du développement de la machine dans mon bureau et mon ordinateur portable lorsqu'il n'est pas dans mon bureau. Je suis en train d'utiliser sp_detach_db et sp_attach_db lors du déplacement entre les ordinateurs de bureau et ordinateurs portables. Je trouve que cela fonctionne bien sur le bureau et je peux détacher et rattacher la base de données il n'y pas de problèmes. Mais sur le portable, je ne peut pas rattacher la base de données (la base de données a été effectivement créé à l'origine sur l'ordinateur portable et de le détacher qui s'y est passé). Lorsque j'essaie de le remettre sur le portable j'obtiens l'erreur suivante:
Impossible d'ouvrir le fichier physique "p:\SQLData\AppManager.mdf". Erreur du système d'exploitation 5: "5(erreur non trouvée)"
Je trouve beaucoup de références à cette erreur tout en indiquant que c'est un problème d'autorisations. Je suis donc allé dans cette voie et fait en sorte que le compte de service SQL Server dispose des autorisations appropriées. J'ai également créé une nouvelle base de données sur cette même voie et a été en mesure de réussir à se détacher et à remettre en place. Je suis donc persuadé autorisations n'est pas la question.
Une enquête plus approfondie révèle que je ne peux pas renommer, copier ou déplacer les fichiers de données que Windows pense qu'ils sont verrouillés - même lorsque le service SQL Server est arrêté. Process Explorer ne permet pas de montrer les processus de verrouillage de fichiers.
Comment puis-je savoir qu'est-ce que le verrouillage de fichiers et de les déverrouiller.
J'ai vérifié que les bases de données ne s'affichent pas dans SSMS - de sorte que SQL Server ne prend pas en continue de penser qu'ils existent.
Mise à jour 18/09/2008
J'ai essayé toutes les suggestions de réponses à ce jour sans succès. Cependant en essayant ces suggestions ont aidé à clarifier la situation. Je peux vérifier les éléments suivants:
- Je peux réussir à détacher et rattacher la base de données uniquement lorsque le disque dur externe est connecté au serveur qu'une copie de la base de données est restaurée à - effectivement le serveur sur lequel la base de données est "créé" - appelons cela le "Serveur Source".
- Je peux me déplacer, copier ou renommer les données et les fichiers journaux, après le détachement de la base de données, tandis que le disque externe est toujours fixé sur le Serveur Source.
- Dès que je bouge le disque dur externe sur une autre machine, les données et les fichiers journaux sont "verrouillés", bien que les 2 outils que j'ai essayé - Explorateur de Processus et Unlocker, les deux trouver pas de verrouillage des poignées fixées sur les fichiers.
NB. Après le détachement de la base de données j'ai essayé les deux d'arrêter le service SQL Server et d'arrêter le Serveur Source avant de déplacer le lecteur externe - toujours sans succès.
Donc, à ce stade, tout ce que je peux faire pour déplacer des données entre les ordinateurs de bureau et les ordinateurs portables est de faire une sauvegarde des données sur le disque dur externe, déplacer le disque dur externe, de restaurer les données à partir de la sauvegarde. OK mais prend un peu plus de temps que la base de données est d'une taille raisonnable (1 go). De toute façon c'est le seul choix que j'ai à ce stade, même si j'essayais d'éviter d'avoir à aller dans cette voie.
OriginalL'auteur |
Vous devez vous connecter pour publier un commentaire.
Fou que cela puisse paraître, avez-vous essayé manuellement vous accorder permissions sur les fichiers par un clic droit /propriétés /sécurité? Je pense que SQL Server 2005 définir des autorisations sur un fichier indépendant exclusivement à l'entité qui fait la détacher (peut-être votre compte, peut-être que le compte sous lequel le service SQL Server s'exécute) et que personne ne peut manipuler le fichier. Pour contourner ce problème, j'ai eu à accorder manuellement moi-même les autorisations de fichier sur MDF et LDF fichiers avant de les déplacer ou de les supprimer. Voir aussi le post de blog à onupdatecascade.com
OriginalL'auteur
Pouvez vous copier les fichiers? Je serais curieux de savoir si vous pouvez copier les fichiers sur votre ordinateur portable, puis l'attacher. Je suppose qu'il s'agit d'une sorte d'autorisations d'erreur aussi, mais il semble que vous avez fait le travail pour résoudre ce problème.
Sont là des attributs sur le fichier?
Mise à jour: Si vous ne pouvez pas copier les fichiers, alors quelque chose doit fermer. Je voudrais vérifier Unlocker que je n'ai pas essayé, mais ça me paraît un bon point de départ. Vous pouvez également essayer de prendre possession des fichiers dans le fichier des autorisations.
Unlocker est utile, il ne détecte pas de verrou sur le fichier, mais ça m'a permis de déplacer le fichier et donc de restaurer à partir d'une sauvegarde toujours en utilisant les données d'origine, de l'emplacement du fichier.
OriginalL'auteur Bryant
Lorsque vous êtes dans Enterprise Manager ou de SSMS, vous pouvez voir le nom de la base de données que vous êtes en train de parler? Il y a peut être des restes de la base de données dans un funky état. J'avais assurez-vous que vous disposez d'une sauvegarde ou une copie de la mdf dans un endroit sûr. Si c'est le cas, peut-être essayez de laisser tomber la base de données et puis re-attacher.
OriginalL'auteur Charles Graham
Je voudrais essayer la sauvegarde de la base de données sur le bureau, puis voir si il sera de restaurer avec succès sur l'ordinateur portable. N'est pas d'expliquer votre problème, mais au moins vous pouvez aller de l'avant.
OriginalL'auteur tbreffni
Exécuter sqlservr.exe en mode debug avec le commutateur /c et de voir ce qui se passe de démarrage. Une installation de fermeture ou de problème d'autorisations peuvent être mis au lit en faisant une copie du fichier et le transfert de la copie à l'original.
Également vérifier le fichier journal associé (.ldf) .. Si un fichier est manquant ou unavaliable vous ne serez pas en mesure de monter la base de données à toute sane/consistante de l'état sans avoir recours à l'urgence en mode bypass.
OriginalL'auteur
J'ai eu un problème similaire. Rien ne semblait pouvoir les résoudre elle - même tenté de redémarrer l'appareil, le redémarrage de SQL services, etc. ProcMon et ProcessExplorer montraient rien alors j'ai pensé que le "lock" est fait par OS.
Je l'ai résolu en SUPPRIMANT le fichier et de le restaurer à partir du disque, monté sous une autre lettre de lecteur.
PS. Mon fichier de base de données n'était pas sur un lecteur USB, mais sur un TrueCrypt-drive (vous pouvez dire que c'est un "disque amovible")
OriginalL'auteur
Dans Gestionnaire de Configuration SQL Server, regardez dans les Services SQL Server. Pour tous vos instances SQL Server, regardez ce qui compte est sélectionné dans l'Onglet connexion - connexion en tant Que:. J'ai trouvé, par exemple, le changer pour le compte Système Local résout le problème que vous avez eu. C'était la seule chose qui a effectivement travaillé pour moi et certainement pas de pénurie de gens ont eu le même problème.
OriginalL'auteur
C'est un problème de sécurité sur fichier niveau de sécurité - vous avez détaché db avec différents titres de compétences et l'attacher avec d'autres informations d'identification - il suffit de parcourir l'article http://www.sqlservermanagementstudio.net/2013/12/troubleshooting-with-attaching-and.html
Et essayez de le copier-coller vers un autre emplacement.
OriginalL'auteur
J'ai résolu le problème semblable par l'octroi de l'administrateur système pour toutes les autorisations:
group or usernames
cliquez sur modifier.find now
à la liste de toutes les autorisations disponibles.OriginalL'auteur
J'ai eu le même problème. Quelqu'un avait détaché les fichiers et à gauche, et nous avons été incapables de le déplacer vers un autre lecteur. Mais après la prise de possession du fichier (sécurité-->avancé-->prenez possession de votre identifiant de connexion), puis à ajouter votre id de connexion de l'onglet sécurité et donnant accès sur le fichier, était capable de se déplacer.
OriginalL'auteur