228 votes

Erreur de restauration du serveur SQL - L'accès est refusé

J'ai créé une base de données sur ma machine locale, puis j'ai fait une sauvegarde appelée tables.bak de la table DataLabTables .

J'ai déplacé cette sauvegarde vers une machine distante sans cette table et j'ai essayé de faire une restauration mais j'ai obtenu l'erreur suivante :

System.Data.SqlClient.SqlError : Le système d'exploitation a renvoyé l'erreur l'erreur '5(Access is denied.)' lors de la tentative de RestoreContainer::ValidateTargetForCreation' sur 'c : \Program Fichiers \Microsoft SQL Server \MSSQL.1\MSSQL\DataLabTables.mdf '.

Comment puis-je réparer mes droits, si tel est le problème ?

727voto

Exile Points 1425

Je viens de rencontrer ce problème avec SQL Server 2012.

Il s'est avéré que tout ce que j'avais à faire était de cocher la case "Relocaliser tous les fichiers dans un dossier" dans la section "Fichiers" :

enter image description here

(Cliquez pour voir l'image en taille réelle)

Cela suppose bien sûr que vous avez installé la bonne version de SQL Server.

34voto

marc_s Points 321990

Le message d'erreur indique qu'une erreur s'est produite lors de la validation de l'adresse IP. objetivo ( c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DataLabTables.mdf ) de votre opération de restauration.

On dirait :

a) ce fichier existe déjà (car vous l'avez déjà restauré précédemment) et est utilisé par SQL Server

ou

b) ce répertoire n'existe pas du tout

Dans votre question, vous avez mentionné avoir créé une sauvegarde pour cette table - ce n'est pas comme ça que les sauvegardes de SQL Server fonctionnent. Ces sauvegardes sont toujours la base de données entière (ou au moins un ou plusieurs groupes de fichiers de cette base de données).

Mon intuition est la suivante : vous avez déjà restauré cette base de données auparavant, et maintenant, lors d'une deuxième restauration, vous n'avez pas coché la case "Ecraser la base de données existante" dans votre assistant de restauration - donc le fichier existant ne peut pas être écrasé et la restauration échoue.

L'utilisateur qui exécute la restauration sur votre serveur distant n'a évidemment pas accès à ce répertoire sur le serveur distant.

C:\program files\.... est un répertoire protégé - les utilisateurs normaux (non-administrateurs) n'ont pas accès à ce répertoire (et à ses sous-répertoires).

Solution la plus simple : essayez de placer votre fichier BAK ailleurs (par ex. C:\temp ) et le restaurer à partir de là

29voto

Flea Points 3308

J'avais le même problème. Il s'est avéré que mon SQL Server y SQL Server Agent services logon as fonctionnaient sous le Network Services qui n'avait pas d'accès en écriture pour effectuer la restauration de la sauvegarde.

J'ai changé ces deux services pour qu'ils se connectent en tant que Local System Account et cela a réglé le problème.

10voto

Devin Points 79

J'ai récemment rencontré ce problème avec SQL 2008 R2 et la solution ci-dessous a fonctionné pour moi :

1) Créez une nouvelle base de données avec le même nom que celle que vous essayez de restaurer. 2) Lors de la restauration, utilisez le même nom que vous avez utilisé ci-dessus et dans les options, cliquez sur l'option d'écrasement.

Vous pouvez essayer les solutions ci-dessus si les autres solutions ne fonctionnent pas.

6voto

Philluminati Points 1006

Le créateur de la sauvegarde avait installé MSSql version 10, donc quand il a pris la sauvegarde, il a également stocké le chemin du fichier original (pour pouvoir le restaurer au même endroit), mais j'avais la version 11, donc il ne pouvait pas trouver le répertoire de destination.

J'ai donc changé le répertoire du fichier de sortie en C:\Program Fichiers \Microsoft SQL Server \MSSQL11.MSSQLSERVER\MSSQL\DATA\ et il a pu restaurer la base de données avec succès.

Fuente

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