将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连接设置为只读?的主要内容,如果未能解决你的问题,请参考以下文章