Le fichier .bak n'apparaît dans aucun répertoire de SSMS

46

J'ai un fichier .bak créé aujourd'hui par quelqu'un d'autre, créé manuellement via SSMS 2008 R2. J'essaie de restaurer manuellement la base de données, malheureusement le fichier n'apparaît pas lorsque je vais le parcourir.

Je peux créer un script pour le processus de restauration, mais j'ai déjà vu ce problème et je ne sais pas ce qui pourrait empêcher le .bak de s'afficher.

Sean Long
la source
Je vais écrire un script pour la restauration, je veux juste savoir ce qui le cause. C'est vraiment un .bak, pas un .bak.txt ou quoi que ce soit.
Sean Long
Vous êtes donc en mesure de parcourir le dossier dans lequel vous savez que le fichier est, et il n'apparaît pas? Ou êtes-vous incapable de naviguer dans le dossier?
Aaron Bertrand
Je peux naviguer dans le dossier, mais ne voir aucun fichier .bak. J'ai vérifié les autorisations de l'utilisateur avec lequel j'exécute SSMS, il s'agit d'un administrateur local et le fichier n'est pas marqué comme "caché" ou quoi que ce soit.
Sean Long
Pouvez-vous poster une capture d'écran quelque part, montrant la vue de l'explorateur Windows du dossier et celle de SSMS? Expliquez également dans la question le processus que vous utilisez pour atteindre cette étape.
Aaron Bertrand
1
(Notez également que le compte de service SQL Server doit également disposer d'autorisations, et pas uniquement de l'utilisateur SSMS. Cela ne devrait toutefois pas empêcher les fichiers .bak de s'afficher dans la liste avant que vous ne fassiez quoi que ce soit avec eux.)
Aaron Bertrand

Réponses:

39

Nous avons eu le même problème aujourd'hui. Cela s'est avéré être un problème d'autorisations, comme illustré dans certaines des autres réponses. La différence est que le compte que nous devions ajouter était NT SERVICE\MSSQLSERVER.

Capture d'écran

J'ai identifié le compte en comparant les autorisations des autorisations de dossier de sauvegarde SQL par défaut sur le dossier contenant le fichier de sauvegarde.

L'ajout du compte de service n'est pas aussi simple qu'il y paraît. Voici ce qui a fonctionné pour moi. (Server 2012 R2)

  1. Connectez-vous au serveur. (La modification doit être effectuée sur le serveur actuel, et non par un partage réseau.)
  2. Remplacez les emplacements par le nom du serveur local.
  3. Tapez dans NT SERVICE\MSSQLSERVERla case Nom. (Ne cliquez pas sur Vérifier les noms)
  4. Cliquez sur OK. Vous verrez alors une liste des comptes de service correspondants. Sélectionnez MSSQLSERVER, puis cliquez sur OK pour accepter la sélection.

entrez la description de l'image ici

entrez la description de l'image ici

Le compte de service doit apparaître dans les paramètres de sécurité et vous pouvez ajuster les autorisations en conséquence.

Après avoir ajouté des autorisations (j'ai ajouté Contrôle total, pour correspondre au dossier de sauvegarde SQL par défaut.) Et redémarré la console de gestion SQL Server, j'ai été en mesure de sélectionner et de restaurer mon fichier de sauvegarde.

Astuces Adams
la source
superuser.com/questions/248315/… nous explique comment répertorier les comptes d'utilisateurs sur un ordinateur. Pour tout service nommé s, il existe un compte virtuel nommé NT Service\s, même si le service ne s'exécute pas sous ce compte.
Tahir Hassan
2
Le compte que j'ai dû ajouter était NT Service\MSSQL$SQLSERVER2014peut-être parce que j'ai nommé mon instanceSQLSERVER2014
thinkOfaNumber,
16

Je l'ai eu aujourd'hui.

J'ai désactivé le partage de fichiers, l'indexation et effacé toutes les sessions ouvertes (personnes connectées pour copier des sauvegardes), mais le problème n'a pas disparu.

Je suis allé dans l'explorateur Windows, j'ai copié les sauvegardes dans un autre dossier et j'ai accédé à celui-ci par le biais de Management Studio.

Supprimé le dossier d'origine et le recréé, copié le contenu en arrière et parcouru les .bakfichiers et il était revenu à la normale.

J'espère que ça aide quelqu'un.

utilisateur27816
la source
1
cela a aidé! :)
Peter PitLock
5

J'ai rencontré ce problème plusieurs fois. Le problème ne concerne pas SQL Server, mais l'autorisation Windows du dossier. Vous devez ajouter l'autorisation appropriée au dossier dans lequel vous avez copié le fichier .bak (je pense System Networkrôle).

La solution la plus simple consiste à déplacer le fichier dans le dossier de sauvegarde par défaut dans Program Files. Il a toutes les autorisations nécessaires. Pour SQL Server 2012, c'est

D:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup
Jackofall
la source
C'est une excellente solution car on n'ouvre pas de failles de sécurité potentielles dans leur ordinateur pour simplement restaurer un fichier.
Michael Potter
fonctionne très bien pas besoin de politiques et de choses
Marin
3

J'ai aussi rencontré le même problème aujourd'hui. On m'a donné un fichier de sauvegarde à restaurer, mais il n'était pas visible pour moi pendant la navigation. Cependant, j'ai pu accéder au système de fichiers in mais à l'assistant de restauration à l'aide de SQL Server management Studio.

Après avoir dépensé une partie, j'ai découvert qu'il s'agissait d'un problème d'autorisations. Le service SQL Server est en cours d'exécution avec, Network Servicemais le Network Servicecompte ne dispose pas des autorisations nécessaires pour accéder au dossier. Après avoir accordé les autorisations à Network Service. Le fichier de sauvegarde était visible pour la restauration.

Pour plus de détails s'il vous plaît vérifier par Blog .

Scorpion
la source
2

Si vous pouvez le trouver dans l'Explorateur Windows, alors vous devriez écrire une RESTORE DATABASEcommande au lieu de vous fier à l'interface graphique maladroite pour la trouver pour vous. Qui sait quel code se trouve là-dedans et pourquoi il pourrait ne pas être capable de trouver le fichier - désolé, je n'ai qu'une solution de contournement et pas une solution.

Assurez-vous également que le fichier correspond à quelque chose.bak et non à quelque chose.bak.txt (Windows peut "utilement" vous cacher l'extension. Je déteste ce comportement par défaut.)

Aaron Bertrand
la source
1

Cela m'est arrivé aujourd'hui sur ma boîte de dev. Dans mon cas, le compte de service disposait d'autorisations sur le dossier, mais mon compte d'utilisateur n'en avait pas. Une fois que j'ai autorisé le compte à accéder au dossier, j'ai pu voir les fichiers .BAK.

Chef de restauration
la source