昨天在将一個 SQL Server 2000 資料庫附加到 SQL Server 2008 時出現如下的錯誤:
附加資料庫 對于 伺服器“servername”失敗。 (Microsoft.SqlServer.Smo)
無法更新資料庫 ‘dbname’,因為它是隻讀的,或者具有隻讀檔案。請将資料庫或檔案設為可寫,然後重新運作恢複操作。 (Microsoft SQL Server,錯誤: 3415)
檢視了資料庫檔案,他們并沒有隻讀屬性,在 SQL Server 2000 中附加都是一切正常的啊。點選錯誤消息對話框的幫助連結,打開的卻是一個 I’m sorry 的無效連結,BS 一下微軟。
多方研究,發現并不是檔案隻讀的問題,嚴格說應該是一個“權限”的問題,目前的 SQL Server 登入帳号沒有對要附加檔案的可寫權限,就會出現上述“隻讀”的提示,
解決辦法有以下幾種:
方法1: 将要附加的檔案拷貝到 SQL Server 預設的 Data 目錄,此時附加就會成功;
方法2: 在登入驗證時,選擇“Windows 身份驗證”,而不是“SQL Server 身份驗證”,即便你的登入帳号是 sa;
方法3: 如果一定要使用“SQL Server 身份驗證”,請更改登入帳号的權限使其對要附加檔案有完全操作權限;
将 SQL Server 服務的帳戶登入身份由 Network Service 改為 Local Service;
此問題是在 Windows XP 下發生的,順帶說一下,現在的 SQL Server 2008 企業版可以在 XP 下安裝了。