为什么我的数据库在连接到 SQL Express 时是只读的,而在连接到 SQL Web 时不是?

Dav*_*bin 0 sql-server sql-server-2008-r2

我有一个 .mdf/.ldf 对,最初在 2008 R2 标准中创建,远低于 10GB,带有 ACL:

d:\db snapshot\DB_NAME.mdf
    SERVERNAME\SQLServerMSSQLUser$ACCOUNT$MSSQLSERVER:F
    OWNER RIGHTS:F
    BUILTIN\Administrators:F

d:\db snapshot\DB_NAME_log.ldf
    SERVERNAME\SQLServerMSSQLUser$ACCOUNT$MSSQLSERVER:F
    OWNER RIGHTS:F
    BUILTIN\Administrators:F
Run Code Online (Sandbox Code Playgroud)

当我将数据库附加到 SQL Express 2008 R2 的实例时,它显示为只读。当使用 SQL Web 2008 R2 设置完全相同的acls 和用户帐户以及 SQLCMD 语句时,它会变为可写。我查看了 MSDN 的比较页面,但没有任何反应。为什么会发生这种情况?谢谢!

Mas*_*imo 5

如果 SQL Server Web 正在运行,LocalSystem而不是 SQL Server Express 正在运行NetworkService,那么 SQL Server Express 对数据库文件没有写权限是完全正确的,因为该NetworkService帐户没有管理权限(尽管,基于您发布的 ACL,它甚至不应该具有读取权限……但也许它们是从其他地方继承的)。

尝试向NetworkService帐户授予对这些文件的完全控制权限,问题应该得到解决。