以下是详细的攻略。
问题描述
在将 SQL Server 2005 数据库附加到实例时,可能会遇到以下错误:
Msg 262, Level 14, State 1, Line 1
CREATE DATABASE permission denied in database 'master'.
Msg 1813, Level 16, State 2, Line 1
Could not open new database 'database_name'. CREATE DATABASE is aborted.
Msg 948, Level 20, State 1, Line 1
The database 'database_name' cannot be opened because it is version 661. This server supports version 655 and earlier.
或者:
The database 'database_name' cannot be opened because it is marked as read-only. The database is in a state that could not be changed because the filegroup is read-only and should be made writable. If the database is a replica, this is sufficient. sp_dboption can be used to change the state of database_replica to allow updates.
问题分析
问题的主要原因是SQL Server 2005实例无法打开或更改只读数据库。这可能是由于文件组处于只读状态,或者数据库被标记为只读的。
解决方案
以下是解决此问题的两条解决方案:
解决方案1:检查文件组状态并更改其权限
-
在SQL Server Management Studio中,右键单击要附加的数据库名称,然后选择“附加”选项。
-
在“附加数据库”对话框中,单击“Add”按钮,选择要附加的数据库。
-
单击“OK”按钮,继续执行操作。
-
如果出现“SQL Server Error 262”的错误消息,则指定数据库文件的执行帐户没有足够的权限在目标SQL Server实例中创建该数据库。 需要授权该账户有“创建数据库”的权限。
-
如果出现“SQL Server Error 1813”的错误消息,则可能表示数据库文件的权限不正确。 在此示例中,需要将文件夹的权限更改为允许SQL Server实例上的服务帐户访问。
-
如果出现“SQL Server Error 948”的错误消息,则需要升级该SQL Server实例的版本。例如,可以升级到SQL Server 2008或更高版本。
解决方案2:使用 sp_dboption 语句更改数据库状态
-
在SQL Server Management Studio中,打开新查询。
-
在新查询窗口中,使用以下语法更新“dbname”为要更改的数据库名称:
USE master;
EXEC sp_dboption 'dbname', 'readonly', FALSE;
-
运行查询,然后尝试附加数据库。
-
如果操作成功,则可以读写数据库。
总结
本文介绍了解决SQL Server 2005附加数据库时的Read-Only错误的两种方法。如果文件夹权限不正确,则可以更改该文件夹的权限。如果数据库被标记为只读,则可以使用sp_dboption语句更改其状态。如果您遵循这些步骤,您应该能够附加SQL Server 2005数据库并开始读写操作。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SQL Server 2005附加数据库时Read-Only错误的解决方案 - Python技术站