新聞中心
概述
最近公司做了一個關(guān)于SQLSERVER的大項目,所以對SQL SERVER進行了探究。master數(shù)據(jù)庫,是SQL Server中最重要的系統(tǒng)數(shù)據(jù)庫。master數(shù)據(jù)庫包含有關(guān) SQL Server 系統(tǒng)的所有信息,包括有關(guān)初始化的信息、配置設(shè)置、與實例相關(guān)的元數(shù)據(jù)、有關(guān)所有其他數(shù)據(jù)庫的信息,例如數(shù)據(jù)庫文件的位置等。這就是為什么主數(shù)據(jù)庫的存在和正常功能對于任何 SQL Server 實例都是至關(guān)重要的。在本文中,我們將說明有關(guān)這個重要數(shù)據(jù)庫的五個事實。

我們提供的服務(wù)有:成都網(wǎng)站設(shè)計、網(wǎng)站制作、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、辛集ssl等。為數(shù)千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學管理、有技術(shù)的辛集網(wǎng)站制作公司
解決方案
通過以下幾個事實,我們將闡明master一些重要特性和功能。
1 、 登錄帳戶和其他實例范圍的元數(shù)據(jù)存儲在 SQL Server master庫中
你有沒有想過登錄名存儲在哪里?例如,您知道“sa”登錄名及其密碼存儲在哪里嗎?好吧,登錄信息存儲在主數(shù)據(jù)庫中。雖然在 SQL 登錄的情況下,它們的密碼哈希也存儲在主數(shù)據(jù)庫中,但對于 Windows 登錄,SQL Server 依賴于 Windows 進行身份驗證。因此,可以在 master 數(shù)據(jù)庫中找到“sa”帳戶及其散列密碼。我們可以通過運行下面的 T-SQL 代碼來獲取這些信息:
SELECT name AS LoginName, password_hash
FROM sys.sql_logins
WHERE name='sa'
我們可以從 SQL 查詢中看到登錄名和密碼哈希:
不僅登錄帳戶,而且所有系統(tǒng)級信息都存儲在主數(shù)據(jù)庫中。鏈接服務(wù)器和端點是另外兩個這樣的例子??赡軙霈F(xiàn)一個問題:我們在哪里可以看到存儲所有這些信息的這些表?當我們在SQL Server Management Studio (SSMS)中展開master 數(shù)據(jù)庫的“表”時,我們看不到相關(guān)的表。主“表”下沒有表 (如果我們沒有手動創(chuàng)建),“系統(tǒng)表”下只有四個表,如下所示:
這是因為包含系統(tǒng)級信息的表是隱藏的,并且在SSMS中不可見。
2、master庫并不存儲系統(tǒng)對象
有一個常見的誤解,即系統(tǒng)對象是存儲在主數(shù)據(jù)庫中的。雖然在 SQL Server 的舊版本(例如 SQL Server 2000)中,主數(shù)據(jù)庫包含系統(tǒng)對象,但在新版本中,這些數(shù)據(jù)不再存儲在master數(shù)據(jù)庫中。從 SQL Server 2005 開始,這些對象存儲在資源數(shù)據(jù)庫中,這是一個隱藏的只讀系統(tǒng)數(shù)據(jù)庫。因此,主數(shù)據(jù)庫不再包含系統(tǒng)對象,例如 sys.objects 中的數(shù)據(jù)。
3、如果master數(shù)據(jù)庫不可用,則無法啟動 SQL Server
我們知道初始化信息,實例中其他數(shù)據(jù)庫的信息及其文件位置都存儲在master庫中,如果master庫不可用,則實例無法啟動。我們可以通過使master庫不可用來說明這種行為。為此,我們可以停止實例(強烈建議僅在測試實例上執(zhí)行所有這些測試),將master庫文件(數(shù)據(jù)和日志或僅其中一個)移動到另一個位置,然后嘗試啟動實例.
要停止實例,我們打開 SQL Server 配置管理器并選擇相應(yīng)的實例,右鍵單擊它并選擇停止。
在使用上面顯示的屬性選項的實例的啟動參數(shù)中,我們可以找到master庫文件的位置。
所以,讓我們將master數(shù)據(jù)庫的數(shù)據(jù)文件復(fù)制到另一個位置。
然后,我們嘗試啟動實例,方法是右鍵單擊它并選擇 Start。
實例將無法啟動,我們收到以下錯誤。
如果我們打開ERRORLOG文件,我們可以看到錯誤原因描述:
4、可以在 master 數(shù)據(jù)庫中創(chuàng)建用戶對象,但不建議這樣做
雖然我們可以在 master 數(shù)據(jù)庫中創(chuàng)建表、存儲過程等用戶對象,但不建議這樣做。但是在某些情況下,有些人出于某些目的不遵循最佳實踐并在主數(shù)據(jù)庫中創(chuàng)建用戶對象。這通常會發(fā)生在T-SQL 代碼中沒有使用“USE
要在 master 數(shù)據(jù)庫中查找用戶創(chuàng)建的對象,我們可以運行以下 Transact-SQL 代碼。
SELECT *FROM master.sys.objects
WHERE is_ms_shipped=0
其中 is_ms_shipped為 0 或 1(位數(shù)據(jù)類型字段),并顯示對象是由內(nèi)部 SQL 組件 (1) 還是不是 (0) 創(chuàng)建。在如下的例子中,我們可以看到我們有兩個用戶創(chuàng)建的對象。
5、master數(shù)據(jù)庫只允許創(chuàng)建完整備份
建議對master數(shù)據(jù)庫進行全新備份。特別是在我們創(chuàng)建、刪除或修改新數(shù)據(jù)庫、登錄帳戶和更改配置值時,執(zhí)行主數(shù)據(jù)庫的備份非常重要。另外,如果你已經(jīng)在master數(shù)據(jù)庫中創(chuàng)建了用戶對象(上面不推薦這樣做),根據(jù)這些用戶創(chuàng)建對象的變化,備份master數(shù)據(jù)庫是合理的。無法對主數(shù)據(jù)庫進行事務(wù)日志或差異備份。
如果我們嘗試在 master 數(shù)據(jù)庫上執(zhí)行備份操作,我們可以看到唯一可用的選項是完整備份。
小結(jié)
總而言之,我們探討了有關(guān) SQL Server master數(shù)據(jù)庫的五個有趣事實。具體來說,我們了解到主數(shù)據(jù)庫包含 SQL 身份驗證用戶的登錄帳戶和密碼哈希。此外,我們了解到master數(shù)據(jù)庫不包含系統(tǒng)對象(自 SQL Server 2005 起,它們存儲在資源數(shù)據(jù)庫中)。如果master數(shù)據(jù)庫不可用, SQL Server 實實例則無法啟動。此外展示了我們是否可以在主數(shù)據(jù)庫中創(chuàng)建用戶對象。最后,我們了解到主數(shù)據(jù)庫的唯一可能備份是完整備份。
網(wǎng)站名稱:系統(tǒng)庫-SQLServerMaster探究
新聞來源:http://www.5511xx.com/article/djgdcoe.html


咨詢
建站咨詢
