关于SQL SERVER数据库附加是只读,要怎么解决

让我帮助您整理提到的两个选项。

上周我的一位客户询问了刚刚读取的 SQL Server 2 008 附加数据库。
以前是广告登录时间。
按照你说的第一种方案,他改成Windows登录认证,然后连接数据库。
问题解决了。
这种方法相当常见,尤其是对于权限设置混乱的系统。
如果系统的权限过多,就很容易造成这种骗局。

但随后他又遇到了另一种情况。
Buddy也作为附加数据库中的日志,然后发现只读取了数据库。
我让你尝试你提到的第二种解决方案,点击数据库属性-选项->状态,读到“仅数据库”并点击它,我发现这是正常的。
这种方法比较直接,直接改变配置。

但最好提醒您在更改数据库属性之前先对其进行备份,尤其是在生产环境中。
有时系统设置需要在更改后重新启动才能生效。
这一点也应该注意。

两种方法都可靠,其中一种取决于具体情况的力量。
系统的license过多确实很容易出问题,所以现在很多项目都推荐Windows认证。
无论使用哪种方法,请确保正确设置数据库权限以避免只读。

SQL Server只读/正在恢复问题怎么解决

SQL Server 2008 数据库 创建只读用户

啊,你之前提到的这件事我也做过,但是我想告诉你几点关于你描述的步骤...
上周有客户问我如何在 SQL Server 2 008 中创建只读用户。
当时我很忙,所以我大致按照你提到的步骤进行。
不过,我个人遇到的坑是,有时候,当我在对象资源管理器中查找【Security】文件夹时,我必须确认连接的数据库实例是否真的有这个东西……尤其是在一些系统库或自定义配置较多的环境下,很容易找不到。

至于创建登录名这一步,我习惯给登录名取一个好记的名字,比如ReadOnlyUser2 02 4 ,这样就一目了然哪个是只读用户,哪个是管理员用户。
你所说的取消勾选[强制密码策略]确实是一个关键点。
特别是对于一些老系统,可能根本不支持密码策略,强制检查会导致错误。
但既然你提到了,那就提醒你在以后的运营中需要注意环保。

说到分配角色,你提到的db_datareader是一个标准操作,但是有一点我需要强调:如果你的数据库有很多表或者有特殊权限要求的表,仅仅依靠db_datareader可能是不够的。
例如,我曾经遇到过一种情况,客户要求ReadOnlyUser只能显示前1 00个数据点。
这是不可能的。
您必须使用动态 SQL 或存储过程来添加限制,或者必须将数据直接封装在表的视图中。
这种精细控制在你的描述中没有提到,但在实际操作中很常见。

您很好地总结了多数据库设置。
不过,我有一个小习惯。
如果多个数据库的只读用户权限设置完全一样,我会考虑写一个脚本批量创建,而不是手动一一设置。
例如,使用 PowerShell 脚本循环访问数据库列表,然后运行上述命令,例如 CREATE LOGIN、MAP USER 和 EXEC sp_addrolemember。
它高效且容易出错。

最后说实话,现在SQL Server 2 008 用得越来越少了,但是一些老项目还在用。
虽然设置此类权限的步骤是固定的,但在实际应用中总会出现一些意想不到的情况。
例如,权限继承问题、其他安全策略冲突或其他管理员更改配置......无论哪种方式,都取决于您。
测试两次总是好的。