Erreur de restauration SQL Server-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 sur une machine distante sans cette table et j'ai essayé de faire une restauration mais j'ai eu l'erreur suivante:

Système.Données.SqlClient.SqlError: le système d'exploitation a renvoyé le erreur '5(l'Accès est refusé.)' lors de la tentative 'RestoreContainer::ValidateTargetForCreation' sur 'c:Program Fichiers Microsoft SQL ServerMSSQL.1 MSSQL DataLabTables.mdf".

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

127
demandé sur marc_s 2011-08-11 23:35:42

17 réponses

Je viens d'avoir ce problème avec SQL Server 2012.

Il s'avère que tout ce que j'avais à faire était de cocher la case "Déplacer tous les fichiers dans le dossier" dans la section "Fichiers":

entrez la description de l'image ici

(Cliquez pour voir l'image pleine grandeur)

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

387
répondu Exile 2017-04-24 19:43:10

À partir du message d'erreur, il indique qu'il y a une erreur lors de la validation de la cible (c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DataLabTables.mdf) de votre opération de restauration.

Cela ressemble à:

A) Ce fichier existe déjà (parce que 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é que vous avez créé une sauvegarde pour cette table - ce n'est pas ainsi que fonctionnent les sauvegardes SQL Server. Ces sauvegardes sont toujours le tout base de données (ou au moins un ou plusieurs groupes de fichiers de la base de données).

Mon intuition est: vous avez déjà restauré cette base de données précédemment, et maintenant, lors d'une deuxième restauration, vous n'avez pas coché la case "écraser la base de données existante" dans votre assistant de restauration - ainsi 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.

{[1] } est un répertoire protégé-les utilisateurs normaux (non-admin) 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 exemple C:\temp) et restaurez-le à partir de là

29
répondu marc_s 2011-08-11 20:06:14

J'avais le même problème. Il s'est avéré que mes services SQL Server et SQL Server Agent logon as fonctionnaient sous le compte 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 ouvrir une session en tant que Local System Account et cela a résolu le problème.

21
répondu Flea 2013-12-07 10:20:47

Récemment, j'ai fait face à 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 Remplacer

Vous pourriez donner un coup de feu à ce qui précède si les autres solutions ne fonctionnent pas.

9
répondu Devin 2014-01-15 20:13:37

Le créateur de sauvegarde avait MSSQL version 10 installé, donc quand il a pris la sauvegarde, il stocke également le chemin du fichier d'origine (pour pouvoir le restaurer au même endroit), mais j'avais la version 11, donc il n'a pas pu 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.

Source

6
répondu Philluminati 2012-11-12 11:19:57

J'ai eu un problème similaire. J'ai essayé de restaurer un 2005 .fichier bak, et j'ai reçu exactement la même erreur. J'ai également sélectionné l'option d'écrasement en vain.

Ma solution était d'accorder à L'utilisateur SQL l'accès au répertoire en question, en allant dans le dossier et en éditant les droits d'accès via l'écran de propriété.

6
répondu martijn 2014-02-14 09:57:55

A perdu quelques heures à ce problème aussi. Je l'ai bien fait:

"Accès refusé" dans mon cas signifiait vraiment "Accès refusé". le compte d'utilisateur de mssqlstudio sur mon appareil windows N'avait pas le contrôle total du dossier spécifié dans le message d'erreur. je lui ai donné le plein contrôle. l'accès n'a plus été refusé et la restauration a réussi.

Pourquoi le dossier était-il verrouillé pour studio ? qui sait ? j'ai assez de questions à traiter car c'est sans essayer de répondre plus.

2
répondu abraham tio 2015-10-28 18:02:44

Un Autre scénario pourrait être l'existence de plusieurs chemins de base de données. Tout d'abord, Notez le chemin où les nouvelles bases de données sont actuellement stockées. Donc, si vous créez une nouvelle base de données vide, puis faites Tasks/Restore, Assurez-vous que le chemin que la restauration tente d'utiliser est le même répertoire que la base de données vide a été créée. Même si le chemin de restauration est légal, vous obtiendrez toujours l'erreur Accès refusé si ce n'est pas le chemin actuel avec lequel vous travaillez. Très facile à repérer lorsque le chemin n'est pas légal, beaucoup plus difficile à repérer lorsque le chemin est légal, mais pas le chemin actuel.

0
répondu demongolem 2013-09-30 16:44:08

Désolé parce que je ne peux pas commenter...

J'ai eu le même problème. Dans mon cas, le problème était lié à la tentative de restauration dans un ancien dossier sql server (qui existait sur le serveur). Cela est dû à l'ancienne sauvegarde sql server (C'est-à-dire la sauvegarde SQL Server 2012) restaurée dans un nouveau serveur sql (SQL Server 2014). Le vrai problème n'est pas trop différent de la réponse @marc_s. Quoi qu'il en soit, j'ai changé seulement le dossier cible dans le nouveau dossier de données SQL Server.

0
répondu bubi 2014-11-14 08:01:37

Ce n'est peut-être pas la meilleure solution, mais j'essayais de faire la restauration à SQL Server 2005, mais j'ai changé pour SQL Server 2008 et cela a fonctionné.

0
répondu alansiqueira27 2015-08-11 21:17:20

Avez des problème de ce genre. Erreur causée par la compression activée sur les dossiers SQL Server.

0
répondu Arman Hayots 2015-08-20 09:23:11

Frnds... J'ai eu le même problème en restroring la base de données et j'ai essayé toutes les solutions mais nt pourrait être résolu. Ensuite, j'ai essayé de réinstaller SQL 2005 et le problème résolu. La dernière fois que j'ai oublié de vérifier l'option Personnaliser en installant SQL.. Il vient deux fois lors de l'installation et je le vérifie pour ceux seulement..

0
répondu Nishant 2015-08-23 07:37:45

Essayez ceci:

Dans la fenêtre de L'Assistant restaurer la base de données, allez dans L'onglet Fichiers, décochez la case à cocher" déplacer tous les fichiers dans un dossier", puis modifiez la destination de restauration de C: vers un autre lecteur. Ensuite, procédez au processus de restauration régulier. Il sera restauré avec succès.

0
répondu Raja Sekhar 2016-03-11 12:38:34

J'ai eu le MÊME PROBLÈME MAIS j'ai utilisé sql server 2008 r2, vous devez vérifier dans les options et vérifier les chemins où sql va enregistrer les fichiers .mdf et .ldf vous devez sélectionner le chemin d'accès de votre installation sql server. J'ai résolu mon problème avec ça, j'espère que ça vous aidera.

0
répondu Edgar Castillo 2017-09-22 22:41:40

J'ai eu ce problème, je me suis connecté en tant qu'administrateur et cela a résolu le problème.

0
répondu Rob Smith 2017-12-17 13:19:11

Aller à C:\Program fichiers \ Microsoft SQL Server \ MSSQL12.MSSQLSERVER \ MSSQL \ DATA \ et cliquez sur Autoriser l'accès lorsqu'une nouvelle fenêtre apparaît

-1
répondu Azeezat Raheem 2018-04-30 11:59:16

Ensuite, essayez de le déplacer dans un sous-dossier sous le C:, mais vérifiez que l'utilisateur dispose de tous les droits sur le dossier que vous utilisez.

-2
répondu sqlKob 2011-08-12 06:22:04