我處理的方法是,找到指定目錄下的數據庫的這2個文件,設置evvryone有全部權利,附加成功后,系統會自動調整權限,改為sql管理員有權限,不用手工再調整回來。
后面是網上文摘
去網上搜索了一下答案,最終還是發現是NTFS的權限問題,NTFS格式對權限的設置選項多了很多,但因此也帶來了不少問題,IIS,SQL等等的一些莫名其妙的問題可能就源於權限未分配,這次的問題同樣出在此處。
解決方法很簡單:把文件所在的文件夾的“完全控制”權限賦予 users或者你所操作數據庫的那個用戶即可解決問題。如果屬性里面沒有Users用戶,手動添加一個即可。
附上網上的解決方法:
經查閱資料,發現並不是文件只讀的問題,嚴格說應該是一個“權限”的問題,當前的SQL Server登錄帳號沒有對要附加文件的可寫權限,就會出現上述“只讀”的提示,解決辦法有以下幾種:
1.將要附加的文件拷貝到 SQL Server 默認的 Data 目錄,此時附加就會成功;
2.在登錄驗證時,選擇“Windows身份驗證”,而不是“SQL Server身份驗證”,即便你的登錄帳號是sa;
3.如果一定要使用“SQL Server 身份驗證”,請更改登錄帳號的權限使其對要附加文件有完全操作權限;
4.將 SQL Server 服務的帳戶登錄身份由 Network Service 改為 Local Service;
沒辦法,只能退一步,修改config中的連接字符串,改為windows身份驗證,再用windows身份驗證附加數據庫了。
今天在將一個 SQL Server 2000 數據庫附加到 SQL Server 2005時出現如下的錯誤:附加數據庫對於服務器失敗(Microsoft.SqlServer.Smo),無法升級數據庫test,因為它是只讀的,或者具有只讀文件。請將數據庫或文件設為可寫,然后重新運行恢復操作。 (Microsoft SQL Server,錯誤: 3415)
查看了數據庫文件,他們並沒有只讀屬性,在 SQL Server 2000 中附加都是一切正常的啊。
經查閱資料,發現並不是文件只讀的問題,嚴格說應該是一個“權限”的問題,當前的SQL Server登錄帳號沒有對要附加文件的可寫權限,就會出現上述“只讀”的提示,解決辦法有以下幾種:
1.將要附加的文件拷貝到 SQL Server 默認的 Data 目錄,此時附加就會成功;
2.在登錄驗證時,選擇“Windows身份驗證”,而不是“SQL Server身份驗證”,即便你的登錄帳號是sa;
3.如果一定要使用“SQL Server 身份驗證”,請更改登錄帳號的權限使其對要附加文件有完全操作權限;
4.將 SQL Server 服務的帳戶登錄身份由 Network Service 改為 Local Service;
我遇到了這種情況,使用第二種方法解決了問題。