Impossible de mettre à jour la base de données becase la base de données est en lecture seule
J'ai créé une application winform et par programme en essayant de joindre la base de données lorsqu'une application s'exécute en premier temps. Malheureusement, dans windows 7, j'ai toujours eu une erreur. Consultez la capture d'écran ci-dessous, il raconte toute l'histoire. Maintenant, ma question est comment puis-je me débarrasser de cette erreur, est-il possible de donner automatiquement droits nécessaires sur le dossier dans lequel l'application s'installe?. Je veux résoudre définitivement cette erreur et ont besoin de douceur en pièce jointe. Quelqu'un s'il vous plaît aider.
Veuillez consulter l'erreur ci-dessous. Merci d'avance
Vous devez vous connecter pour publier un commentaire.
Essayer
ALTER DATABASE MyDatabaseName SET READ_WRITE
Plus d'informations ici sur Ce forum
Modifier
Cela a été demandé par quelqu'un d'autre
icacls mydabase*.* /grant "MYMACHINENAME\Administrator":(F)
. qu'est-Ce que icacls?. Cela devrait aider.Icacls.exe ...
. Je ne sais pas ce que vous utilisez pour installer votre logiciel, mais elle doit prendre en charge l'appel d'un exécutable.Si vous mettez votre base de données dans votre propre sous-répertoire du répertoire renvoyé par la
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData
ensuite, l'utilisateur aura accès en lecture/écriture à elle.Voir De l'environnement.SpecialFolder Énumération pour déterminer si un emplacement différent serait plus approprié, par exemple
ApplicationData
si vous avez besoin de se déplacer ou àCommonApplicationData
si vous avez besoin de tous les utilisateurs de l'ordinateur pour l'utiliser.Edit: j'ai trouvé un peu version plus étendue de cette réponse: Où dois-je conserver mes Données et les Fichiers de Configuration si je Cible Plusieurs Versions de système d'exploitation?, veuillez également consulter les articles des liens vers elle.
Je sais que cette réponse est en quelque sorte la fin, mais je crois que les gens toujours confrontés aux mêmes problèmes, donc mon cas vaut la peine d'être partagé.
tl;dr = Modifier les autorisations des fichiers déployés manuellement ou à l'aide de icacls commande.
En fait j'utilise InstallForge pour l'emballage et le déploiement de mon application(s).
Peu importe ce que le programme d'installation créateur est utilisé, lorsque l'application est installée à un non-système de dossier ( par exemple D:\ ) le programme fonctionne parfaitement et la base de données est accessible en lecture/écriture.
Alors que lorsque l'application est installée dans le dossier [Program Files] ou [Program Files (X86)] dossier, Windows prend de la sécurité préventive de mesure et définit le fichier d'autorisation est à seulement [Lire] et [Lire & Execute].
Je pense que Windows Vista et les versions ultérieures de Windows ont ce comportement.
Vous pouvez le vérifier en clic droit le fichier installé et va propriétés puis de Sécurité onglet.
Les fichiers que j'ai installé sur D:\ a Plein Contrôle autorisation, alors que, comme je l'ai mentionné, ceux qui sont sur C:\ a seulement Lire & Exécuter autorisations.
Vous ne remarquerez pas la différence lorsque vous installez un programme normal sur C:\ car vous ne pourriez pas écrire de données sur un fichier ou une base de données. Mais en cas de déploiement de base de données, le fichier doit être accessible en écriture.
Enfin, la solution pour ce cas a été dit InstallForge pour modifier les autorisations de fichier à la fin de l'installation à l'aide de icacls commandes :
Dans mon cas, c'est bien de donner à chacun le plein contrôle sur les fichiers de base de données, mais vous pourriez avoir besoin d'une solution personnalisée pour votre cas, merci de consulter :
http://ss64.com/nt/icacls.html
Vous pouvez dire à votre installation de créateur pour exécuter ces commandes, ou vous pouvez les mettre ensemble dans un lot de fichier et de l'exécuter après l'installation.