将SQL Server连接设置为只读?

13
我如何将SQL服务器连接设置为只读?我尝试了谷歌搜索,所有我找到的是File Mode=Read Only,但它没有起作用(File Mode关键字不受支持)。参考资料似乎只适用于SQL CE。
SQLite也无法使用Read Only=True
-编辑-
我的连接字符串如下。我对配置表格一无所知。我不知道如何创建用户/权限。
rdconn = new SqlConnection(@"(wrong)Read Only=True;Server=.\SQLExpress;AttachDbFilename=test2.mdf;Database=dbo;Integrated Security=SSPI;User Instance=True;");

你使用哪种类型的身份验证? - hgulyan
1
你可以开始一个事务,做一些工作,然后回滚事务。虽然不完全符合您的要求,但这将确保数据库没有进行任何更改。 - Chad Schouggins
5个回答

7

只需将当前用户的权限设置为仅允许SELECT

这是你想要的吗?

在SQL Server Management Studio中单击当前数据库,然后单击“安全性”→“用户”。找到您的用户,右键单击他 -> 属性 -> 可保护。只需标记SELECT,取消所有其他标记。

以下是管理权限的链接

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

刚刚发现了一个免费的管理权限工具,它也可能很有用。请检查链接

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

更新:

如果你希望任何用户都只能读取数据库:

ALTER DATABASE database-name SET READ_ONLY

或者点击此处获取更多信息

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

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


6
我曾希望能够像原帖作者一样,以当前其他用户正在使用的 SQL Server 认证凭据设置我的连接为只读。就像我是管理员,但 UAC 剥夺了这些权限一样。现在我是标准用户,受保护模式也剥夺了这些权限。 - Ian Boyd
1
@IanBoyd,不幸的是,在MS SQL中无法实现只读连接字符串。这里是连接字符串参数列表http://www.connectionstrings.com/all-sql-server-connection-string-keywords/。 - hgulyan

2

更改SQL Server中使用的登录的安全设置。
例如,仅限于db_datareader。


1

这很简单。

如果您的数据库用户名称为MyApplicationWebServices_EN

创建一个名为MyApplicationWebServicesReadOnly_EN的新登录名,使用默认语言英语(或其他需要的语言),仅作为“public”服务器角色的成员(默认设置)。

在您想要让该用户访问的数据库中,创建一个名为MyApplicationWebServicesReadOnly_EN的新用户,并将其映射到登录名MyApplicationWebServicesReadOnly_EN。

在数据库中右键单击该用户,选择属性 -> 一般。在“数据库角色成员身份”下拉列表中,仅选择db_datareader(确保取消选中所有其他选项)。

现在在连接字符串中使用MyApplicationWebServicesReadOnly_EN作为“user id”,即可进入只读模式。

当然,如果您的整个数据库都应该是只读的,则...

ALTER DATABASE your_database_name SET READ_ONLY

会做得很好,就像hgulyan所说的那样。


6
尽管你的回答似乎是对原问题最接近的真正解决方案,但我认为“非常简单”在这里必须是“非常相对”的;p - Darren Ringer

0

0
在某些情况下,例如在 Azure 的高可用性实例中,您可能有一个只读副本的数据库。 在这种情况下,您可以将 ;applicationintent=readonly 添加到连接字符串中,以使用户访问只读副本。 了解更多Microsoft信息...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接