SQL Server附加数据库变成只读的解决方案

SQL Server附加数据库变成只读的解决方案

编码文章call10242025-06-05 14:11:038A+A-

本次操作的数据库是 SQL Server 2016,其他版本的类似。

SQL Server 附加数据库操作是指将现有的数据库文件(通常包括主数据文件 .mdf 和日志文件 .ldf)加载到一个 SQL Server 实例中,使该数据库可以被 SQL Server 管理和访问的过程。

一、问题描述

本次附加数据库是为了迁移数据库,将云服务器中的数据库分离之后再附加到另外一台服务器上。

使用 SQL Server Management Studio (SSMS) ,将数据库附加到服务器实例中,“数据库” -> “附加”,选择要附加的 .mdf 文件,但是数据库显示只读状态。

二、问题解决

2.1 解决方案一

将数据库再分离,然后使用 windows 内置账户登录再附加就可以了。

2.1 解决方案二

右键数据库,进入属性,选择状态页,将【数据库为只读】设为 False:

如果没有成功,报如下错误:

标题: Microsoft SQL Server Management Studio
------------------------------

数据库 "kwdb" 的 更改 失败。  (Microsoft.SqlServer.Smo)

有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=14.0.17289.0+((SSMS_Rel_17_4).181117-0805)&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=更改+Database&LinkId=20476

------------------------------
其他信息:

执行 Transact-SQL 语句或批处理时发生了异常。 (Microsoft.SqlServer.ConnectionInfo)

------------------------------

无法打开物理文件“C:\Special\DB\kwdb.mdf”。操作系统错误 5:“5(拒绝访问。)”。
无法打开物理文件“C:\Special\DB\kwdb_log.ldf”。操作系统错误 5:“5(拒绝访问。)”。
无法重新启动数据库“kwdb”。将恢复到以前的状态。
ALTER DATABASE 语句失败。
正在回滚不合法事务。估计回滚已完成: 0%。
正在回滚不合法事务。估计回滚已完成: 100%。 (Microsoft SQL Server,错误: 5120)

有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&ProdVer=13.00.1601&EvtSrc=MSSQLServer&EvtID=5120&LinkId=20476

------------------------------
按钮:

确定
------------------------------

查看数据库文件属性:

当前登录的用户 Administrator 其实是对文件有完全控制权限,但是登录的数据库账户是 sa,所以就没有这种权限。

如果是内置账户登录再附加数据库是可以的,所以方案一是可行的。

如果仍使用 sa 登录,则需要添加一个【Network Service】账户完全控制权限,可尝试一下,如果还不行,建议采用方案一。

具体操作如下:

分离再重新附加。

点击这里复制本文地址 以上内容由文彬编程网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

文彬编程网 © All Rights Reserved.  蜀ICP备2024111239号-4