9
votes

En lecture seule des chaînes de connexion DB

Cela semble être une question vraiment idiote, mais j'ai eu une recherche autour de cela et je ne trouve rien à ce sujet.

J'ai une chaîne de connexion DB que je crée dans mon web.config : - xxx

ou xxx

mais j'ai besoin que cette connexion soit en lecture seule. J'ai défini tous mes objets Linq avec uniquement sur leurs propriétés, et aucune de mes classes de référentiel (MVC) n'a de méthodes .SubMitchges (), donc je suis à 99% du système ne peut pas mettre à jour ce dB, mais je Voulez-vous également définir ma connexion de base de données pour être RO si possible. Je me rends compte que, idéalement, cela devrait être fait à la fin du serveur SQL et que l'utilisateur doit être effectué RO, mais que (pour diverses raisons, hors de ma commande) ne peut pas être effectuée, alors je voulais verrouiller ma connexion comme application Ne doit pas écrire sur la base de données.

existe-t-il un paramètre "Readonly" que je peux appliquer à la chaîne de connexion afin de lancer une erreur ou de supprimer les données si des mises à jour ont été tentées?

Juste pour réitérer (la 1ère réponse que j'ai eue, lors de la poser à cela, sur un autre forum était "Changer vos informations d'identification de DB") Je ne peux, en aucune manière, de modifier les informations d'identification d'accès à la DB, celles-ci sont rw et toute tentative de la modification (actuellement) bloque la DB SQL Server. Ce n'est pas mon problème, et je ne peux pas envisager de résoudre ce problème, c'est pourquoi je veux envisager de faire la connexion DB Ro comme absolument, de manière positive de tuer tous les .... Errr, je veux dire absolument, positivement Impossible de modifier les données de base de données.

acclamations

MH


5 commentaires

La première réponse que vous avez eu était correcte.


Je pense que dans ce cas le fait que vous ne puissiez pas modifier les autorisations des informations d'identification que vous utilisez est votre problème, car ce serait la meilleure solution ...


C'est peut-être mon "problème", mais il n'y a absolument rien que je puisse faire à ce sujet, à court de môle pour résoudre le problème SQL Server gratuitement, à l'abri des heures de bureau. C'est l'une de ces questions qui pourraient être résolues, mais cela pourrait ne pas nécessairement impliquer une recharge complète des principaux systèmes informatiques, qui est un travail énorme), alors j'ai besoin de travailler sur l'hypothèse qu'elle ne le fera pas.


Je ne peux que marquer une réponse comme la réponse, je ne peux pas que je ne peux faire que voter les autres utiles)?


Dupliqué possible de Définir la connexion SQL Server à Readonly?


4 Réponses :


7
votes

Non, il n'y a aucun moyen (que je sache). Malheureusement pour vous, la bonne façon de le faire serait de modifier les subventions de l'utilisateur actuel ou de créer un nouvel utilisateur uniquement de sélectionner des privilèges. Je me rends compte que ce n'est pas la réponse que vous recherchez mais que vous avez un serveur SQL qui se bloque lorsque vous essayez de changer les choses qu'il semble être un problème qui vaut vraiment la peine d'être examiné. Est-ce parce que vous utilisez le compte "SA" pour vous connecter? Si oui, vous devez créer un autre utilisateur et accorder les autorisations appropriées au nouvel utilisateur.


2 commentaires

Ce n'est pas un compte SA, et c'est un SEP (problème de quelqu'un d'autre) que je n'ai aucune autorité ni juridiction. Je sais qu'ils essaient de résoudre le problème, mais je pense que c'est un problème fondamental avec SQL Server (2008?) Afin qu'ils puissent ou ne pas être en mesure de le réparer - d'où mon souhait de faire le DB Conn ro.


juste coché et c'est SQL Server 2005



5
votes

Cela dépend vraiment de la base de données et du fournisseur de DB que vous utilisez. Certains permettent d'accéder réadonnement sur la chaîne de connexion, certains ne le font pas.

Par exemple:

SQL Server 2005 CE, lors de l'utilisation du fournisseur de données Frame-Framework .NET Compact pour SQL Server Mobile, a un mode de fichier possible = lecture seule; paramètre. (Voir sur connectionstrings.com ).

SQL Server 2008, Ne pas .

Vous pouvez vérifier plus sur connectionstrings.com .


1 commentaires

Thx, ce site est utile - c'est complet SQL Server 2005, donc je joins à la DB plutôt qu'à un fichier de sorte que ce chose CE ne s'applique pas, malheureusement



1
votes

il n'y a rien que vous pouvez faire au niveau de la chaîne de connexion qui empêche que le changement écrit autre que l'utilisateur -. Que vous avez déjà dit que vous ne pouvez pas faire

Dans ce cas, il vous suffit de faire le maximum dans votre code pour éviter toute écriture; i.e.:

  • toutes les couches publiques ne doit pas exposer la mise à jour / suppression / insertion sémantique ou autre.
  • toutes les classes de la couche de données scellées afin qu'ils ne peuvent pas être surchargée

    Cependant, il n'y a encore rien qui empêche un programmeur de venir le long, déchirant votre chaîne de connexion, et coller à l'intérieur de leur propre connexion pour effectuer les écritures.

    Vous pouvez donc déplacer la chaîne de connexion quelque part ailleurs que seul code interne sait comment l'accès (il va encore être conduit fichier texte, cependant, ne pas utiliser une constante de code!); il est toujours pas arrêter quiconque de l'utiliser -. mais elle rend beaucoup plus difficile

    (ajouté) Je dois expliquer pourquoi il ne protège pas.

    En laissant de côté que la source de la chaîne de connexion elle-même est susceptible d'être accessible, même par la protection avec le cryptage des bibliothèques etc, il n'y a rien qui me empêche réfléchir à votre code et de l'appeler, en dehors des niveaux de confiance. Vous pouvez choisir d'aller toute la route de faux-fuyants pour me empêcher de déconstruire votre code; mais sûrement ce niveau de paranoïa n'est pas nécessaire au sein de votre maison de développement?

    En fin de compte, cependant, parce qu'il est « SEP » (quelqu'un d'autre problème de) comme vous le dites, et vous avez aucun contrôle sur ce que - si quelqu'un vous demande pourquoi, malgré tous vos efforts, vous ne pouvez pas garantie < / i> qu'aucune écriture sera effectuée, vous pouvez sans risque blâmer que « quelqu'un d'autre ».


0 commentaires

6
votes

Ce que vous avez sous votre contrôle est des classes à ACCES CODE (L2S). Je suggère de remplacer dans une classe partielle des soumissions pour votre DataContext afin de ne rien faire (ni même de lancer une erreur!) (Ou implémenter toutes les méthodes d'extensibilité insérables, updateObject ou deleteObject appartenant à votre DataContext)


1 commentaires

Bonne idée, je vais mettre cela dans et tester cela - thx. Pas aussi bon que de rendre le Conn ro, mais une autre couche pour arrêter quoi que ce soit, au moins.