Sql-Server

為什麼我的數據庫在連接到 SQL Express 時是只讀的,而不是在 SQL Web 上?

  • October 13, 2017

我有一個 .mdf/.ldf 對,最初是在 2008 R2 Standard 中創建的,遠低於 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

當我將數據庫附加到 SQL Express 2008 R2 的實例時,它顯示為只讀。當使用 SQL Web 2008 R2 設置*完全相同的acls 和使用者帳戶以及 SQLCMD 語句時,它就會變成可寫的。*我查看了 MSDN 的比較頁面,但沒有任何反應。為什麼會發生這種情況?謝謝!

如果 SQL Server Web 執行為LocalSystemwhile 而 SQL Server Express 執行為NetworkService,那麼 SQL Server Express 對數據庫文件沒有寫權限是完全正確的,因為該NetworkService帳戶沒有管理權限(儘管基於您發布的 ACL,它甚至不應該具有讀取權限……但也許它們是從其他地方繼承的)。

嘗試將這些文件的完全控制權限授予該NetworkService帳戶,該問題應該得到解決。

引用自:https://serverfault.com/questions/599520