如何将SQL Server连接设置为只读?我尝试使用谷歌搜索,我找到的只是File Mode=Read Only
,但它不起作用(不支持文件模式关键字)。该引用看起来特定于SQL CE。
SQLite Read Only=True
也没有运气。
-edit -
我的连接字符串如下。在配置表时我不知道。我不知道如何设置用户/权限。
rdconn = new SqlConnection(@"(wrong)Read Only=True;Server=.\SQLExpress;AttachDbFilename=test2.mdf;Database=dbo;Integrated Security=SSPI;User Instance=True;");
答案 0 :(得分:7)
只需将当前用户的权限设置为 SELECT 。
这就是你想要的吗?
单击Security-> Users后,单击SQL Server Management Studio中的当前数据库。找到您的用户,右键单击他 - >属性 - >安全对象。只需标记SELECT,取消所有其他标记。
以下是管理权限的链接
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
答案 1 :(得分:2)
更改SQL Server中已使用登录的安全设置 例如,只有db_datareader。
答案 2 :(得分:0)
如果要以只读模式访问数据库,可以为数据库创建用户,并可以启用“READ”权限并禁用“WRITE”权限
你可以在sqlserver中看到数据库下的用户选择那个,如果你想要你可以创建新用户,你可以在属性中设置权限
另请参阅
http://www.zimbio.com/SQL/articles/-jf4iDK7qWQ/Set+database+read+only+mode+using+SQL+Server
答案 3 :(得分:0)
这很简单。
如果调用了db-user MyApplicationWebServices_EN
创建一个名为MyApplicationWebServicesReadOnly_EN的新登录名,默认语言为英语(或任何您需要的),他只是服务器角色“public”的成员(默认)。
在您希望用户有权访问的数据库中,创建一个名为MyApplicationWebServicesReadOnly_EN的新用户,并将其映射到登录MyApplicationWebServicesReadOnly_EN。
右键单击数据库中的用户,然后选择属性 - &gt;一般 在“数据库角色中的成员身份”的选择框列表中,仅选择db_datareader(确保未选中所有其他选项)。
现在在您的连接字符串中使用MyApplicationWebServicesReadOnly_EN作为“用户ID”,并且您拥有只读模式..
当然,如果您的整个数据库应该是只读的,那么
ALTER DATABASE your_database_name SET READ_ONLY
正如hgulyan所说,会做得很好。
答案 4 :(得分:0)
在某些情况下,例如在 Azure 中的高可用性实例中,您可能拥有数据库的只读复制副本。在这种情况下,您添加
;applicationintent=readonly
连接字符串,让该用户访问只读副本。