實驗環(huán)境:
操作系統(tǒng)版本: Windows Server 2012 SP2
數(shù)據(jù)庫的版本:Microsoft SQL Server 2014 - 12.0.2000.8
如下所示,SQL Server Database Services 服務的啟動賬號為NT Service\MSSQLSERVER, 我們先設置一下數(shù)據(jù)庫的默認路徑為E:\SQL_DATA
此時查看E:\SQL_DATA 目錄的權限(被屏蔽的是一域賬號),
CREATE FILE encountered operating system error 5
。此時我們創(chuàng)建數(shù)據(jù)庫Test完全沒有問題。我們先刪除數(shù)據(jù)庫Test。
現(xiàn)在我們刪除用戶GETTESTNT55\Users這個賬號,在目錄E:\SQL_DATA的屬性(Properties)->安全(Security)-> 編輯(Edit)下直接刪除會遇到下面錯誤。
我們從E盤的根目錄,右鍵屬性選擇Security 刪除這個用戶,然后我創(chuàng)建新的數(shù)據(jù)庫時就會遇到CREATE FILE encountered operating system error 5(Access is denied.)錯誤。
那么如何解決呢? 我們可以給當前目錄添加虛擬帳戶NT Service\MSSQLSERVER 并授予相關權限解決這個問題。具體可以參考MSDN文檔,截取部分如下所示
使用 Windows 資源管理器,導航到存儲數(shù)據(jù)庫文件的文件系統(tǒng)位置。右鍵單擊文件系統(tǒng)文件夾,然后單擊“屬性”。
在“安全性”選項卡上,單擊“編輯”,然后單擊“添加”。
在“選擇用戶、計算機、服務帳戶或組”對話框中,單擊“位置”,在位置列表的頂部選擇您的計算機名稱,然后單擊“確定”,
電腦資料
《CREATE FILE encountered operating system error 5》(http://www.szmdbiao.com)。在“輸入要選擇的對象名稱”框中,鍵入聯(lián)機叢書主題“配置 Windows 服務帳戶和權限”中所列的每個服務 SID 的名稱。 (對于數(shù)據(jù)庫引擎每個服務 SID,將 NT SERVICE\MSSQLSERVER 用于默認實例,或將 NT SERVICE\MSSQL$InstanceName 用于命名實例。)
單擊“檢查名稱”以驗證該條目。驗證經常失敗,而且可能告知您找不到該名稱。單擊“確定”時,將顯示“找到多個名稱”對話框。
現(xiàn)在選擇每個服務 SID(MSSQLSERVER 或 NT SERVICE\MSSQL$InstanceName),然后單擊“確定”。
再次單擊“確定”以返回“權限”對話框。
在“組或用戶”名稱框中,選擇每個服務 SID,然后在“<名稱> 的權限”框中,為“完全控制”選中“允許”復選框。
單擊“應用”,然后單擊“確定”兩次以退出。
具體操作過程的截圖如下所示
權限的話,至少需要”Read & Execute“、”List Folder Content“、”Read“、”Write“權限,當然如果你能給”Full Control“權限那肯定是可以。權限我們應該盡量控制最小范圍內。
此時就能解決這個錯誤,此時你刪除該用戶,然后在這個目錄添加EVERYONE用戶,授予上面的權限也能解決這個錯誤。當然在安全性上就不如給虛擬賬戶NT Service\MSSQLSERVER賬號授權。
肯定有細心的人會問,我們不添加虛擬賬戶NT Service\MSSQLSERVER或EVERYONE,我們重新添加這個用戶GETTESTNT55\Users、授予同樣的權限是否可以解決這個問題? 答案是依然會遇到這個錯誤,為什么呢? 暫時我沒有搞明白具體原因,是不是有點諷刺,知道了怎么解決,但是依然不清楚具體原因。當然涉及權限的問題確實有點復雜。如果哪位知道具體原因,請不吝賜教。