2010-05-18 4 views
8

Comment définir une connexion SQL Server à readonly? J'ai essayé Google et tout ce que j'ai trouvé était File Mode=Read Only, mais cela n'a pas fonctionné (mot-clé en mode fichier non pris en charge). La référence semblait spécifique à SQL CE.définir la connexion du serveur sql à readonly?

Pas de chance avec SQLite Read Only=True non plus.

-edit-

Ma chaîne de connexion est ci-dessous. Je n'ai aucune idée quand il s'agit de configurer les tables. Je ne sais pas comment faire des utilisateurs/permissions.

rdconn = new SqlConnection(@"(wrong)Read Only=True;Server=.\SQLExpress;AttachDbFilename=test2.mdf;Database=dbo;Integrated Security=SSPI;User Instance=True;"); 
+0

Quel type d'authentification utilisez-vous? – hgulyan

+1

Vous pouvez commencer une transaction, faire un travail, puis annuler une transaction. Pas tout à fait ce que vous voulez, mais cela permettrait de s'assurer qu'aucune modification n'a été apportée à la base de données. –

Répondre

7

Réglez simplement sur les autorisations de l'utilisateur actuel sur SELECT uniquement.

Est-ce ce que vous voulez?

Cliquez sur la base de données actuelle dans SQL Server Management Studio, après avoir cliqué sur Sécurité-> Utilisateurs. Trouvez votre utilisateur, faites un clic droit sur lui -> properties-> Securable. Marquez simplement SELECT, ne marquez pas tous les autres.

liens Here're sur la gestion des autorisations

http://www.databasejournal.com/features/mssql/article.php/2246271/Managing-Users-Permissions-on-SQL-Server.htm

http://www.mssqlcity.com/Articles/Adm/manage_users_permissions.htm

Je viens de trouver un outil gratuit pour la gestion des autorisations. Cela peut aussi être utile. Vérifiez le lien

http://www.idera.com/Products/Free-Tools/SQL-permissions/

MISE À JOUR:

Si vous voulez que la DB à lecture seule à tout utilisateur:

ALTER DATABASE database-name SET READ_ONLY 

ou lire ici pour plus d'informations

http://www.sqlservercurry.com/2009/03/set-database-to-read-only-mode-using.html

http://www.blackwasp.co.uk/SQLReadOnly.aspx

+0

Comment je fais ça? –

+0

@ acidzombie24 lire les mises à jour – hgulyan

+4

J'espérais qu'il y avait, comme l'affiche originale espérait, un moyen de définir ma * connexion * pour être en lecture seule, en utilisant les mêmes informations d'authentification SQL Server que d'autres utilisent actuellement. Semblable à je suis un administrateur, et l'UAC supprime ces droits. Et comment je suis maintenant utilisateur standard, et le mode protégé supprime ces droits. –

0

Si vous souhaitez accéder à la base de données en mode lecture seule, vous pouvez créer un utilisateur pour la base de données et peut permettre à « lire » les droits et les droits d'écriture "désactiver

vous pouvez voir les utilisateurs sous base de données SQLServer sélectionnez cela et si vous voulez, vous pouvez créer un nouvel utilisateur autre que vous pouvez définir les droits dans des propriétés

se référer également

http://www.zimbio.com/SQL/articles/-jf4iDK7qWQ/Set+database+read+only+mode+using+SQL+Server

2

Modifiez les paramètres de sécurité pour la connexion utilisée dans le serveur SQL.
Par exemple seulement db_datareader.

0

C'est vraiment simple.

Si votre db utilisateur est appelé MyApplicationWebServices_EN

Créer une nouvelle connexion appelée MyApplicationWebServicesReadOnly_EN, avec la langue par défaut anglais (ou tout ce que vous avez besoin), qui est membre du serveur rôle « public » uniquement (par défaut) .

Dans la base de données à laquelle vous souhaitez que l'utilisateur puisse accéder, créez un nouvel utilisateur appelé MyApplicationWebServicesReadOnly_EN et mappez-le pour vous connecter à MyApplicationWebServicesReadOnly_EN. Cliquez avec le bouton droit de la souris sur l'utilisateur dans la base de données et sélectionnez Propriétés -> Généralités Dans la liste de sélection "Adhésion aux rôles de base de données", sélectionnez db_datareader uniquement (assurez-vous que toutes les autres options ne sont pas cochées).

utiliser maintenant MyApplicationWebServicesReadOnly_EN dans votre chaîne de connexion comme « id utilisateur », et vous avez votre mode lecture seule ..

Bien sûr, si l'ensemble de votre db doit être en lecture seule, puis

ALTER DATABASE your_database_name SET READ_ONLY 

fera très bien, comme l'a dit hgulyan.

+3

Tandis que votre réponse semble la plus proche d'une vraie solution à la question originale, je pense que «vraiment simple» doit être «vraiment relatif» ici; p –

Questions connexes