164 votes

Impossible d'ouvrir le périphérique de sauvegarde. Erreur du système d'exploitation 5

Vous trouverez ci-dessous la requête que j'utilise pour sauvegarder (créer une .bak ) ma base de données.

Cependant, chaque fois que je l'exécute, j'obtiens toujours ce message d'erreur :

Msg 3201, Niveau 16, Etat 1, Ligne 1
Impossible d'ouvrir le périphérique de sauvegarde ' C:\Users\Me\Desktop\Backup\MyDB.Bak '. Erreur du système d'exploitation 5(Accès refusé.).

Msg 3013, Niveau 16, Etat 1, Ligne 1
BACKUP DATABASE se termine anormalement.

Voici ma question :

BACKUP DATABASE AcinsoftDB
TO DISK = 'C:\Users\Me\Desktop\Backup\MyDB.Bak'
WITH FORMAT,
MEDIANAME = 'C_SQLServerBackups',
NAME = 'Full Backup of MyDB';

0 votes

Le message d'erreur est assez clair, n'est-ce pas ? Sous quel utilisateur le programme s'exécute-t-il ? Le fichier bak existe-t-il ? Pouvez-vous y accéder manuellement ?

1 votes

Devons-nous supposer que c'est pour SQL Server à partir du chemin du fichier, puisque vous n'avez pas mis le produit dans les balises ou le titre ?

0 votes

J'ai pu exécuter cette requête avant de reformater mon ordinateur portable, si cela peut vous aider. Il s'agit de SQL Server 2008 et je fonctionne en tant qu'administrateur. Le fichier bak n'existe pas puisque je suis en train de le créer avec cette requête.

267voto

Robin Vessey Points 919

Oui, je viens d'acheter celui-là.

Regardez dans les services Windows. Démarrer > Administration > Services

Trouvez le service dans la liste appelée : SQL Server (MSSQLSERVER) recherchez la colonne "Log On As" (il faut l'ajouter si elle n'existe pas dans la liste).

C'est le compte dont vous avez besoin pour donner des permissions au répertoire, cliquez droit dans l'explorateur > propriétés > partages (et sécurité).

NOTE : N'oubliez pas de donner des permissions au répertoire réel ET au partage si vous passez par le réseau.

Appliquez et attendez que les permissions se propagent, essayez à nouveau la sauvegarde.

NOTE 2 Si vous sauvegardez à travers le réseau et que votre SQL est exécuté en tant que "Service local", vous avez des problèmes... vous pouvez essayer d'attribuer des permissions ou il peut être plus facile de sauvegarder localement et de copier à travers en dehors de SQL Server (une heure plus tard).

NOTE 3 : Si vous utilisez un service réseau, il arrive parfois que la machine distante ne reconnaisse pas le service réseau de votre serveur SQL. Si c'est le cas, vous devez ajouter des permissions pour l'ordinateur lui-même, par exemple MyServer$.

25 votes

Les permissions/add/advanced n'ont pas trouvé l'utilisateur dans la liste, mais j'ai collé dans "Service NT". \MSSQLSERVER "et ça a marché comme sur des roulettes.

4 votes

L'ajout de l'autorisation "tout le monde" à un dossier couvre-t-il ce problème ?

3 votes

Cela dépend, s'il s'agit de la version publique non authentifiée, alors oui. S'il s'agit du "tout authentifié", alors le SERVICE LOCAL sur une machine distante n'est généralement pas admissible... mais voulez-vous vraiment donner l'accès à tout le monde, pour nous c'est un délit presque passible de licenciement.

18voto

Abuleen Points 71

Allez dans le dossier SQL Server dans le menu démarrer et cliquez sur outils de configuration. Sélectionnez SQL Server configuration manager Sur les services du serveur SQL, sur l'instance désirée, changer le (Log On as) en système local.

7voto

Martin Smith Points 174101

Le compte de service SQL Server n'a pas le droit d'écrire dans le dossier C:\Users\Kimpoy\Desktop\Backup\

27 votes

Comment donner au compte de service SQL Server les droits d'accès à ce dossier ? :)

6voto

Jason Points 51

J'ai également eu ce problème récemment, mais j'exécutais la tâche de sauvegarde à partir du serveur A, mais la base de données à sauvegarder se trouvait sur le serveur B et était partagée en fichiers sur le serveur C. Lorsque l'agent du serveur A demande au serveur B d'exécuter une commande de sauvegarde t-sql, c'est en fait le compte de service sous lequel sql est exécuté sur le SERVEUR B qui tente d'écrire la sauvegarde sur le serveur C.

N'oubliez pas que c'est le compte de service du serveur sql qui exécute la commande BACKUP DATABASE qui a besoin de privilèges sur le système de fichiers, pas l'agent.

4voto

DNK Points 21

J'étais en train de vivre ça moi-même. Je m'étais assuré que mon utilisateur de connexion MSSQLSERVER avait full access mais ça causait toujours des problèmes. Cela n'a fonctionné qu'une fois que j'ai déplacé la destination vers la racine de C. Plus important encore, hors d'un dossier utilisateur (même si j'avais un partage avec des permissions complètes - j'ai même essayé "Tout le monde" comme test).

Je ne sais pas si je considère mon problème comme "réglé", mais il "fonctionne".

Juste un FYI pour tous les autres utilisateurs qui tombent sur ce fil.

1 votes

Je pense que cela est dû à des domaines d'entreprise dans lesquels les chemins d'accès des utilisateurs résident sur des lecteurs réseau, de sorte qu'ils sont accessibles par l'utilisateur de manière transparente, quelle que soit la machine sur laquelle il se connecte. Comme dans cette situation : superuser.com/a/730519

0 votes

@Bon Merci ! Cela a résolu le problème pour moi. Le chemin sur lequel j'avais le fichier de sauvegarde était en fait un chemin réseau.

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