前天重做了系統,重裝了SQLServer2012Express,今天附加一個原來的數據庫時就報錯了,提示信息為:無法為此請求檢索數據……執行Transact-SQL語句或批處理時發生異常……嘗試打開或創建物理文件'd:\data\ejiaOA.mdf'時,createfile遇到系統錯誤 5(拒絕訪問)。(Microsoft SQL Server,錯誤:5123)。
看到這個破提示,第一感覺就是文件夾的權限看來是沒有給到位(我的系統是64全Win7),用古老的辦法:“ 文件—>屬性—>安全—>添加—>高級—>立即查找—>EveryOne—>確定—>確定—>完全控制—>應用”就是給這個文件夾加了權限,再一操作,還是不行!!頓時郁悶了,我了個去啊,什麼情況?百度了半天,找了一些解決辦法,都是這種更改權限的不好用的辦法,其中有一位網友說了:Win7是個很神奇的東東,有時間文件夾的操作權限不會被裡面的文件所繼承,所以需要檢查文件本身的權限是不是也符合操作的要求。我按這哥們說的做了,發現我的WIN7顯然沒有這個特征,文件的權限和它老爸文件夾的權限是一致的。
問題的原因始終找不到,著實讓我頭疼了半天,不過對於咱這種有著堅韌的性格的人來講,咱一點兒也沒有被嚇到,繼續百度百度百度……最後,我快要絕望的時候,找到一篇文章,截圖如下:
這個文件給描述的問題和我的是一模一樣,不過提出的解決辦法也是和我的操作辦法一致,後面有評論,咱也截圖了
看來,倒霉的不是我一個啊,不過我還是發現一個問題,那就是使用了Windows身份驗證,如果不使用Windows身份驗證會是怎麼樣一個情況呢?退出SQL2012管理器,用SA重新登陸了一下,然後再執行這個附加操作,居然一下就成功了!
問題終於解決了,但是我也納悶了,這是為什麼呢?經檢查,我的數據庫文件原來的權限是這樣的:
我有理由相信,這個是一個數據庫文件的正常權限,加了everyone的所有權限控制那才不正常呢。同時MSSQL$SQLEXPRESS是留給SA登陸的SQLServer管理使用的權限,我是用超管的帳戶登陸的系統,顯然是屬於超管用戶組的,但是為什麼附加數據庫會出錯呢?有知道的朋友麻煩告訴我一下吧,不勝感激!!!
百度上有網友這樣解釋:這是因為SQL Server的啟動帳戶(一般是system或某個操作系統管理員),對E(我的是D盤)盤根目錄沒有創建文件的權限。右擊E盤,在屬性裡查看“安全”選項卡裡查看用戶的權限。查看啟動帳戶是誰,運行services.msc,在服務管理器裡找到SQL Server服務,然後看“登錄”選項卡,選中本地用戶並重啟服務。