附加的数据库是只读的

Maa*_*anu 32 sql-server sql-server-2005

我使用以下脚本来附加数据库.但是创建的数据库是只读的.
我应该在脚本中进行哪些修改才能使其成为读写.请帮我.

USE [master]
GO
CREATE DATABASE [GemDatabase] ON 
( FILENAME = N'E:\Program Files (x86)\ICE Products\ICEConnect200\New Database\GemDatabase.mdf' ),
( FILENAME = N'E:\Program Files (x86)\ICE Products\ICEConnect200\New Database\GemDatabase_log.ldf' )
 FOR ATTACH
GO
if not exists (select name from master.sys.databases sd where name = N'GemDatabase' and SUSER_SNAME(sd.owner_sid) = SUSER_SNAME() ) EXEC [GemDatabase].dbo.sp_changedbowner @loginame=N'sa', @map=false
GO
Run Code Online (Sandbox Code Playgroud)

Var*_*ore 84

首先确保.mdf文件所在的文件夹不是只读的.如果是,请取消选中该选项并确保它反映到该文件夹​​中的文件夹和文件.

完成后,打开Management Studio,在对象资源管理器中右键单击只读的数据库,然后选择"属性".在"选项"菜单中,检查"只读"属性是否为false.

在此输入图像描述

  • 除了上述步骤之外,我还必须让*Network Service*帐户完全控制MDF和LDF文件. (7认同)

Xav*_*nas 16

确保文件是可写的(不是只读的),并且您的用户对它们具有写入权限.

此外,在最新的系统上,Program Files目录是只读的.尝试将文件放在另一个目录中.

  • 关于`Program Files`的提示+1 - SQL Server数据文件真的不属于`Program Files`目录! (4认同)

Gil*_*Gat 13

打开数据库属性 - >选项并将Database read-only设置为False.

  • 确保使用Windows身份验证登录SQL Management Studio.
  • 确保您的用户具有mdf和日志文件目录的写入权限.

诀窍对我来说......


小智 11

ALTER DATABASE [DatabaseName] SET READ_WRITE
Run Code Online (Sandbox Code Playgroud)


Sim*_*Ink 9

给sql服务帐户'NT SERVICE\MSSQLSERVER'"完全控制"数据库文件

如果您有权访问服务器文件/文件夹,您可以尝试这个适合我的解决方案:

Windows Server 2008 R2上的SQL Server 2012

  1. 右键单击数据库(mdf/ldf)文件或文件夹,然后选择"属性".
  2. 选择"安全"选项卡,然后单击"编辑"按钮.
  3. 单击"添加"按钮.
  4. 输入要选择为"NT SERVICE\MSSQLSERVER"的对象名称,然后单击"检查名称"按钮.
  5. 选择MSSQLSERVER(RDN)并单击"确定"按钮两次.
  6. 将此服务帐户"完全控制"提供给文件或文件夹.
  7. 回到SSMS,右键单击数据库并选择"属性".
  8. 在"选项"下,向下滚动到"状态"部分,将"数据库只读"从"True"更改为"False".


小智 8

您需要更改数据库文件夹的权限:属性 - >安全选项卡 - >编辑... - >添加... - >用户名"NT服务\ MSSQL $ SQLEXPRESS"或"NT服务\ MSSQLSERVER".关闭窗口,打开高级...,双击用户并按如下所示进行设置:键入:允许适用于:此文件夹,子文件夹和文件基本权限:all确保所有者也已设置.