将sql server连接设置为只读?

Posted

技术标签:

【中文标题】将sql server连接设置为只读?【英文标题】:set sql server connection to readonly? 【发布时间】:2010-05-18 08:44:24 【问题描述】:

如何将 SQL 服务器连接设置为只读?我尝试了谷歌搜索,我发现的只是File Mode=Read Only,但它不起作用(不支持文件模式关键字)。参考看起来特定于 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;");

【问题讨论】:

您使用什么类型的身份验证? 你可以开始一个事务,做工作,然后回滚事务。不完全是您想要的,但这将确保不会对数据库进行任何更改。 【参考方案1】:

仅将当前用户的权限设置为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

【讨论】:

我希望有一种方法可以将我的 connection 设置为只读,使用与其他人相同的 SQL Server 身份验证凭据目前使用。类似于我是管理员,UAC 剥夺了这些权利。以及我现在如何成为标准用户,而保护模式剥夺了这些权利。 @IanBoyd ,不幸的是,没有办法在 ms sql 中实现只读连接字符串。这是连接字符串参数列表connectionstrings.com/all-sql-server-connection-string-keywords。【参考方案2】:

在 SQL Server 中更改所用登录名的安全设置。 例如只有 db_datareader。

【讨论】:

【参考方案3】:

真的很简单。

如果您的 db-user 被调用 MyApplicationWebServices_EN

创建一个名为 MyApplicationWebServicesReadOnly_EN 的新登录名,默认语言为英语(或任何您需要的语言),仅作为服务器角色“public”的成员(默认)。

在您希望用户有权访问的数据库中,创建一个名为 MyApplicationWebServicesReadOnly_EN 的新用户,并将其映射到登录 MyApplicationWebServicesReadOnly_EN。

右键单击数据库中的用户,然后选择属性 -> 常规 在“数据库角色中的成员”的选择框列表中,仅选择 db_datareader(确保未选中所有其他选项)。

现在在您的连接字符串中使用 MyApplicationWebServicesReadOnly_EN 作为“用户 ID”,并且您拥有只读模式..

当然,如果你的整个数据库应该是只读的,那么

ALTER DATABASE your_database_name SET READ_ONLY

正如 hgulyan 所说,会很好。

【讨论】:

虽然您的回答似乎最接近原始问题的真正解决方案,但我认为“非常简单”在这里必须是“非常相对”;p【参考方案4】:

如果你想以只读模式访问数据库,你可以为数据库创建一个用户,并且可以启用'READ'权限和禁用'WRITE'权限

您可以在 sqlserver 中看到数据库下的用户选择该用户,如果您愿意,您可以创建新用户,否则您可以在属性中设置权限

另请参阅

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

【讨论】:

【参考方案5】:

在某些情况下,例如在 Azure 中的高可用性实例中,您可能拥有数据库的只读副本。在这种情况下,您添加

;applicationintent=readonly

连接字符串以使该用户访问只读副本。

More at Microsoft...

【讨论】:

以上是关于将sql server连接设置为只读?的主要内容,如果未能解决你的问题,请参考以下文章

高可用性副本 SQL Server 2014 中的只读意图

应用程序意图 = 只读 SQL Server 连接错误

SQL Server 2008 是不是支持表级只读?

sql server 创建只读帐号

尝试更改 SQL Server IP 设置。配置管理器告诉我“指定的文件是只读的”[关闭]

Sql Server 2005导入的数据库为啥是只读,在属性中把数据库为只读修改为False不能成功,