欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SQL Server數據庫錯誤5123解決方案

 更新時間:2020年06月17日 11:46:46   作者:歲月已走遠  
這篇文章主要介紹了SQL Server數據庫錯誤5123解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

因為自己有一本基于SQL Server 2005的數據庫教程,里邊使用的示例數據庫是AdventureWorks for SQL Server 2005,而我的機子上裝的是SQL Server 2008,示例數據庫是AdventureWorks for SQL Server 2008。起初我以為示例數據庫AdventureWorks for SQL Server 2005 與AdventureWorks for SQL Server 2008 數據庫結構應該差不多,可是在練習的過程中,我發(fā)現(xiàn)兩個數據庫中很多表的結構還是有很多不一樣的地方。

于是決定到微軟下載中心將示例數據庫AdventureWorks for SQL Server 2005下過來,附加到SQL Server 2008上,以便順利進行練習。

我以SQL Server 2008的超級管理員賬戶“sa”連接登錄到實例SQLSERVER2008:

在附加示例數據庫AdventureWorks for SQL Server 2005時,彈出了下圖這個錯誤:

仔細看了一下主要信息“嘗試打開或創(chuàng)建物理文件......時,CREATE FILE遇到操作系統(tǒng)錯誤 5(拒絕訪問。)”,一看就知道應當是對要附加的數據文件的操作權限不夠。 按一般的思維習慣,我們會對操作權限不夠的文件授予足夠的操作權限。比如,有網友說“給要附加的數據文件和相應的日志文件授予Everyone的權限”,授權過程如下三張截圖所示(注意數據文件和日志文件都必須授權):

(圖1:授權數據文件)

(圖2:數據文件授權后)

(圖3:日志文件授權后)

對要附加的數據文件和日志文件分別授予Everyone【讀取和執(zhí)行】、【讀取】的權限后,在SQL Server 2008中重新嘗試附加數據庫,發(fā)現(xiàn)可以附加成功了!是不是問題就這樣解決了呢?這樣子做對嗎? 如果在真實的數據庫管理過程中,我們把數據文件、日志文件的權限放大到Everyone,那肯定是不對的做法。

因為這樣數據庫的安全性將大打折扣,雖然對Everyone只授予了【讀取和執(zhí)行】、【讀取】的權限,但這仍然有泄漏數據的危險。 我們應當保證能正常訪問的情況下,使數據文件具有最小的訪問權。我們之前授權給Everyone,那所有用戶或賬戶都能操作相應的文件了,這肯定不安全的。

那么如何才能授予最小的訪問權限呢?思考一下,我們用SQL Server 2008去附加相應的數據文件,報出“拒絕訪問”即權限不夠的錯誤,換句話說,當前SQL Server 2008沒有權限訪問這些文件。我們右鍵文件,到文件屬性中查看一下文件的權限情況,如下圖所示:

 

(相應數據文件原本的權限情況)

我們發(fā)現(xiàn)只有SYSTEM和xrm這兩個組或用戶才有權操作此數據文件。SYSTEM是一個用戶組,即【本地系統(tǒng)】組,而xrm是一個管理員用戶,如圖示:

(xrm用戶的信息)

SYSTEM用戶組和xrm這個管理員用戶都有權限操作此數據文件和日志文件,而以SQL Server2008的超級管理員SA連接登錄實例后,SQL Server卻沒有權限訪問此數據文件。換句話說,以SQL Server2008的超級管理員SA連接登錄實例后,登錄的身份不在SYSTEM用戶組,也不是xrm這個管理員。

那會是什么呢? 我們查看一下當前SQL Server 2008的實例服務的相關信息就知道了,打開Sql ServerConfiguration Manager (即SQL Server 配置管理器)查看一下當前連接到的實例服務的相關信息,如下圖所示:

(當前實例服務的相關信息)

發(fā)現(xiàn)當前實例SQLSERVER2008的登錄身份為“NT AUTHORITY\LocalService”,即操作系統(tǒng)授權的【本地服務】,本地服務也是了個用戶組。換句話說,如果我們僅授予【本地服務】這個用戶組的權限(而不是Everyone),應該也可以在SQL Server 2008中用sa的賬戶附加數據庫了。

為此,將剛剛授予相應數據文件和日志文件Everyone的權限都刪除,再授予LocalService用戶組相應數據文件和日志文件的權限,重新嘗試附加相應的數據庫,發(fā)現(xiàn)的確可以附加成功!不必說,授予操作系統(tǒng)授權的【本地服務】用戶組比起授予Everyone來說肯定要安全的多。

上面提到的方法中,我們都是改變了數據文件原來的權限范圍(原來的權限范圍只有SYSTEM即【本地系統(tǒng)】用戶組和xrm這個系統(tǒng)管理員)。

而更好的辦法是不要改變數據文件的權限范圍,仍然以SA身份連接登錄SQL Server 2008的實例也能訪問相應的數據文件。

而要達到這個目的,我們只需要將相應實例的登錄身份改為SYSTEM【本地系統(tǒng)】用戶組,SYSTEM也是在相應數據文件的權限范圍之內的用戶組,而且SQL Server實例以本地系統(tǒng)身份運行,安全性將更高。我們可以在SQL Server 配置管理器中將相應的SQL Server實例的登錄身份修改為【本地系統(tǒng)】即Local System,如下列圖所示:

 

(修改實例的登錄身份)

(實例的登錄身份變?yōu)長ocalSystem)

然后重啟相應實例服務,重新以SA身份連接登錄SQL Server 2008的相應實例并嘗試附加數據庫,同樣可以成功的將數據庫附加上?。?!


其實,如果不是要特別地以SA身份連接登錄SQL Server 2008的相應實例來附加相應數據庫,那么在連接登錄SQL Server 2008的相應實例時,身份驗證選擇【Windows 身份驗證】,不做前文中所述的其他修改就可以把數據庫附加上去了,原因就在于:【Windows 身份驗證】用的是當前操作系統(tǒng)的用戶的權限,權限一般都足夠大的。另外,在【SQL Server 配置管理器】中針對實例服務可以做的操作,在Windows的【服務】上也可以做到。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • MySQL 服務器參數說明及查看 設置方法

    MySQL 服務器參數說明及查看 設置方法

    MySQL 服務器參數說明及查看,設置方法,對于mysql不是很熟悉的朋友,可以參考下。
    2009-03-03
  • MYSQL 修改root密碼命令小結

    MYSQL 修改root密碼命令小結

    MYSQL 修改root密碼命令小結,需要的朋友可以參考下。
    2011-10-10
  • 講解Linux系統(tǒng)下如何自動備份MySQL數據的基本教程

    講解Linux系統(tǒng)下如何自動備份MySQL數據的基本教程

    這篇文章主要介紹了Linux系統(tǒng)下如何自動備份MySQL數據的基本教程,還給出了利用shell腳本全備份和增量備份的基本方法,需要的朋友可以參考下
    2015-11-11
  • mysql 常見命令和學習心得

    mysql 常見命令和學習心得

    mysql 常見命令和學習心得,學習php的朋友需要了解的一些基礎,方便日后的開發(fā)。
    2009-09-09
  • 最新評論