2010-05-18 15 views
8

Jak ustawić połączenie serwera SQL z serwerem tylko do odczytu? Próbowałem Googling i wszystko, co znalazłem, było File Mode=Read Only, ale nie działało (słowo kluczowe Tryb Plik nie jest obsługiwane). Odniesienie wyglądało na specyficzne dla SQL CE.ustawić połączenie serwera sql do readonly?

Żadnego szczęścia z SQLite Read Only=True.

-edit-

Mój ciąg połączenia znajduje się poniżej. Nie mam pojęcia, jeśli chodzi o konfigurowanie tabel. Nie wiem, jak tworzyć użytkowników/uprawnienia.

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

Jakiego typu uwierzytelniania używasz? – hgulyan

+1

Można rozpocząć transakcję, wykonać pracę, a następnie wycofać transakcję. Nie do końca to, czego chcesz, ale to zapewniłoby, że nie wprowadzono żadnych zmian w bazie danych. –

Odpowiedz

7

Ustaw tylko uprawnienia bieżącego użytkownika na WYBIERZ tylko.

Czy tego chcesz?

Kliknij bieżącą bazę danych w programie SQL Server Management Studio, po kliknięciu opcji Zabezpieczenia-> Użytkownicy. Znajdź swojego użytkownika, kliknij prawym przyciskiem myszy na niego -> właściwości-> Zabezpieczony. Zaznacz SELECT, odznacz wszystkie pozostałe.

Here're linki na zarządzaniu uprawnieniami

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

prostu znaleźć bezpłatne narzędzie do zarządzania uprawnieniami. Może być również użyteczny. Sprawdzić przewody połączeniowe

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

UPDATE:

Jeśli chcesz DB być tylko do odczytu dla każdego użytkownika:

ALTER DATABASE database-name SET READ_ONLY 

lub przeczytać tutaj, aby uzyskać więcej informacji

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

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

+0

Jak to zrobić? –

+0

@ acidzombie24 czytać aktualizacje – hgulyan

+4

Miałem nadzieję, że istnieje, jak pierwotny plakat miał nadzieję, sposób, aby moje * połączenie * było tylko do odczytu, używając tych samych poświadczeń uwierzytelnienia serwera SQL, z których inni obecnie korzystają. Podobnie jak ja jestem administratorem, a UAC usuwa te prawa. I jak jestem teraz standardowym użytkownikiem, a tryb chroniony rozbiera te prawa. –

2

Zmień ustawienia zabezpieczeń dla używanego logowania na serwerze SQL.
Na przykład tylko db_datareader.

0

To naprawdę proste.

Jeśli db-user nazywa MyApplicationWebServices_EN

Utwórz nowy login nazwie MyApplicationWebServicesReadOnly_EN z domyślnym języku angielskim (lub cokolwiek chcesz), który jest członkiem serwera roli „publiczne” tylko (domyślnie) .

W DB, do którego użytkownik ma mieć dostęp, utwórz nowego użytkownika o nazwie MyApplicationWebServicesReadOnly_EN i zamapuj go, aby zalogować się MyApplicationWebServicesReadOnly_EN.

Kliknij prawym przyciskiem myszy użytkownika w bazie danych i wybierz właściwości -> ogólne Na liście Select-box dla "Członkostwo w rolach bazy danych" wybierz tylko db_datareader (upewnij się, że wszystkie pozostałe opcje są odznaczone).

Teraz użyj MyApplicationWebServicesReadOnly_EN w ciągu połączenia jako „User ID” i masz trybie tylko do odczytu ..

oczywiście, jeśli cała db powinny być tylko do odczytu, a następnie

ALTER DATABASE your_database_name SET READ_ONLY 

będzie dobrze, jak powiedział hgulyan.

+3

Podczas gdy twoja odpowiedź wydaje się być najbliższa rzeczywistemu rozwiązaniu pierwotnego pytania, myślę, że "naprawdę prosty" musi być tutaj "naprawdę względny"; p –

Powiązane problemy