none
enlever lecture seul d'une base de donnee RRS feed

  • Question

  • Bonjour

    J'ai une base de données SQL Server.
    J'ai écrit une procédure stockée pour attacher  ma base de données, mais elle est attachée en mode lecture seule comment peut retirer en lecture seule.

    j'ai essayé EXEC sp_dboption 'Gestion_Parc', 'read only', 'FALSE' mais elle produit des erreurs

     

    Msg 5120, Niveau 16, État 101, Ligne 1
    Impossible d'ouvrir le fichier physique "C:\Gestion_Parc.mdf". Erreur du système d'exploitation 5 : "5(Accès refusé.)".
    Msg 5120, Niveau 16, État 101, Ligne 1
    Impossible d'ouvrir le fichier physique "C:\Gestion_Parc_log.ldf". Erreur du système d'exploitation 5 : "5(Accès refusé.)".
    Msg 945, Niveau 14, État 2, Ligne 1
    La base de données 'Gestion_Parc' ne peut pas être ouverte, car des fichiers sont inaccessibles, ou la mémoire ou l'espace disque sont insuffisants. Pour plus d'informations, consultez le journal des erreurs de SQL Server.
    Msg 5120, Niveau 16, État 101, Ligne 1
    Impossible d'ouvrir le fichier physique "C:\Gestion_Parc.mdf". Erreur du système d'exploitation 5 : "5(Accès refusé.)".
    Msg 5120, Niveau 16, État 101, Ligne 1
    Impossible d'ouvrir le fichier physique "C:\Gestion_Parc_log.ldf". Erreur du système d'exploitation 5 : "5(Accès refusé.)".
    Msg 5069, Niveau 16, État 1, Ligne 1
    Échec de l'instruction ALTER DATABASE.
    Échec de la commande sp_dboption.

    Merci pour l'aide ^ ^

    vendredi 26 août 2011 17:32

Réponses

  • Je réécris ce que j'ai mis plus haut...

    D'après la copie des messages d'erreur mis ci-dessus, les fichiers MDF et LDF ont été mis sur la racine du disque C ("C:\Gestion_Parc.mdf")

    Or il se trouve que depuis Vista et Windows Server 2008 cet espace a des droits très particuliers, seul les admin ont le droit d'y copier des fichiers. Ce qui est vraisemblablement le cas ici.
    Mais SQL Server, en fonction de la manière dont il a été installé, a très probablement un compte de service qui a des droits d'utilisateur simple (NetworkService n'est pas admin), or ce type de compte n'a pas accès en écriture sur la racine du disque système, donc les fichiers de base de données ne peuvent pas être attachés.

    Il ne faut pas chercher plus loin, il faut créer un nouveau répertoire, y copier les fichier, et les attacher depuis là.

    Bonne journée


    Christian Robert - MVP SQL Server - Microsoft Certified Master - SQL Server 2008
    Blog : http://blogs.codes-sources.com/christian/
    Groupe des Utilisateurs Francophone de SQL Server : http://www.guss.fr
    lundi 29 août 2011 22:31
  • Bonjour Christian,

    http://social.msdn.microsoft.com/Forums/en-US/sqldataaccess/thread/577ba01d-e31c-4690-9e0c-4cdd7c43b787

    ce fil ( en anglais ) parle d'un sujet similaire et donne les mêmes conseils que vous ( notamment sur les droits d'accès sur les fichiers .mdf/.ldf ). Par contre, mettre les fichiers SQL Server directement dans la racine du disque système est une erreur.

    Il faudrait détacher la base de données,supprimer les fichiers .mdf/.ldf et recopier ces mêmes fichiers dans un nouveau répertoire classique .Vérifier que les fichiers ne sont pas en read-only avant d'attacher la base à l'instance SQL Server.

    Par contre, le créateur de ce fil pourrait dire si ces fichiers ne viendraient pas d'un snapshot de base ( donc non modifiable )

    Bonne journée

     


    Mark Post as helpful if it provides any help.Otherwise,leave it as it is.
    mardi 30 août 2011 19:21

Toutes les réponses

  • Bonjour,

    Je soupconne plutôt que son emplacement n'est pas correct. Un utilisateur non admin (ce qui est sans doute le cas du compte service SQL Server) ne peut pas écrire sur c:\.

    Voir ce que cela donne en mettant la base ailleurs...


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    vendredi 26 août 2011 17:53
  • j'ai eu des doute moi j'ai essayé avant de poste ma question mais c la même chose :S
    vendredi 26 août 2011 19:21
  • Bonjour

    Le problème viendrait plutôt du fait que vous mettez les fichier à la racine du disque C: (au vu des erreurs) et que cet emplacement sur tous les systèmes depuis Vista et Windows Server 2008 sont restreint au niveau des droits.

    Donc effectivement vous n'avez pas de droits suffisant pour attacher les fichiers. Il suffirait de créer un sous répertoire et de les copier dedans, attention tout de même celà peut aussi provenir du compte de service avec lequel tourne SQL Server (mais j'en doute un peu dans ce cas).

    Bonne journée


    Christian Robert - MVP SQL Server
    Blog : http://blogs.codes-sources.com/christian/
    Groupe des Utilisateurs Francophone de SQL Server : http://www.guss.fr
    samedi 27 août 2011 09:35
  • Le "Accès refusé" me fait tout de même furieusement penser à un problème de droit. Les permissions ont-elles étés vérifiées, y a t'il un attribut en lecture seule sur le fichier mdf ? Cela donne quoi si on crée une nouvelle base en la laissant à l'emplacement par défaut ?


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    lundi 29 août 2011 08:32
  • Bonjour,

    Je pense que ce problème est lié à une copie d'une base de données par l'intermédiaire d'un CD/DVD. Dans ce cas , les fichiers .mdf et .ldf sont copiés en read-only sur le disque dur ( normal, puisqu'ils sont en read-only sur le CD/DVD ).

    Il suffit de détacher la base de données et modifier la propriété read-only avec l'explorateur sur les 2 fichiers .mdf et .ldf.

    on se positionne sur chacun des fichiers avec le poste de travail.Clic droit sur le nom du fichier.Sélectionner Propriétés et décocher la case Lecture seule ( en bas sur la ligne Attributs ).

    Reste à savoir si ces 2 fichiers .mdf et .ldf ne correspondraient pas à des snapshots ( qui sont en read-only par définition )

    Bonne journée

     


    Mark Post as helpful if it provides any help.Otherwise,leave it as it is.
    lundi 29 août 2011 17:57
  • Je réécris ce que j'ai mis plus haut...

    D'après la copie des messages d'erreur mis ci-dessus, les fichiers MDF et LDF ont été mis sur la racine du disque C ("C:\Gestion_Parc.mdf")

    Or il se trouve que depuis Vista et Windows Server 2008 cet espace a des droits très particuliers, seul les admin ont le droit d'y copier des fichiers. Ce qui est vraisemblablement le cas ici.
    Mais SQL Server, en fonction de la manière dont il a été installé, a très probablement un compte de service qui a des droits d'utilisateur simple (NetworkService n'est pas admin), or ce type de compte n'a pas accès en écriture sur la racine du disque système, donc les fichiers de base de données ne peuvent pas être attachés.

    Il ne faut pas chercher plus loin, il faut créer un nouveau répertoire, y copier les fichier, et les attacher depuis là.

    Bonne journée


    Christian Robert - MVP SQL Server - Microsoft Certified Master - SQL Server 2008
    Blog : http://blogs.codes-sources.com/christian/
    Groupe des Utilisateurs Francophone de SQL Server : http://www.guss.fr
    lundi 29 août 2011 22:31
  • Bonjour Christian,

    http://social.msdn.microsoft.com/Forums/en-US/sqldataaccess/thread/577ba01d-e31c-4690-9e0c-4cdd7c43b787

    ce fil ( en anglais ) parle d'un sujet similaire et donne les mêmes conseils que vous ( notamment sur les droits d'accès sur les fichiers .mdf/.ldf ). Par contre, mettre les fichiers SQL Server directement dans la racine du disque système est une erreur.

    Il faudrait détacher la base de données,supprimer les fichiers .mdf/.ldf et recopier ces mêmes fichiers dans un nouveau répertoire classique .Vérifier que les fichiers ne sont pas en read-only avant d'attacher la base à l'instance SQL Server.

    Par contre, le créateur de ce fil pourrait dire si ces fichiers ne viendraient pas d'un snapshot de base ( donc non modifiable )

    Bonne journée

     


    Mark Post as helpful if it provides any help.Otherwise,leave it as it is.
    mardi 30 août 2011 19:21