SQL Server 即時檔案初始化

2021-09-07 16:44:13 字數 2739 閱讀 5254

原文:

sql server 即時檔案初始化

本文所涉及的內容(contents)

背景(contexts)

基礎知識(rudimentary knowledge)

實現過程(process)

疑問(questions)

參考文獻(references)

就資料庫而言,以下幾種情況需要對檔案初始化:

1. 建立資料庫;

2. 向現有資料庫中新增檔案、日誌或資料;

3. 增大現有檔案的大小(包括自動增長操作);

4. 還原資料庫或檔案組;

執行上面的操作,作業系統需要用零來填充檔案進行初始化。在 sql server 中,可以在瞬間對資料檔案進行初始化。即時檔案初始化將**已使用的磁碟空間而不使用零來填充該空間。而在向檔案中寫入新資料時,磁碟內容將被覆蓋。日誌檔案不能立即初始化。

即時檔案初始化功能僅在向 sql server (mssqlserver) 服務帳戶授予了 se_manage_volume_name 之後才可用。windows administrator 組的成員擁有此許可權,並可以通過將其他使用者新增到【執行卷維護任務】安全策略中來為其授予此許可權。

首先執行gpedit.msc,按照figure1的路徑,找到【執行卷維護任務】,如figure2所示,預設的情況下它已經設定了administrators組的;

(figure2:執行卷維護任務)

接著執行services.msc進入服務設定,檢視到sql server (mssqlserver)的登陸使用者是【網路服務】(如figure3所示),這就是造成初始化40gb檔案花費了30多分鐘的原因了,因為【網路服務】不具備se_manage_volume_name的許可權(可檢視administrators組成員);

(figure3:sql server (mssqlserver))

雙擊sql server (mssqlserver)服務進入設定,在登陸的選項卡中可以看到帳號是:nt authority\networkservice,如figure4所示。

直接勾選【本地系統帳號】,在重啟sql server (mssqlserver)時遇到了下圖的錯誤:

(figure5:重啟服務報錯)

檢視了相關的系統事件日誌,在

sql server服務無法使用管理員身份啟動

中解決了(禁用掉sql server的協議shared memory),設定完之後重啟服務sql server (mssqlserver)。

而另外一種思路就是把nt authority\networkservice加入到administrators組中,如figure6所示。注意:這種方式一樣需要重啟sql server (mssqlserver)服務。

(figure6:administrators組)

下面我們就來測試下建立40gb檔案的效能對比:

--

測試即時檔案初始化

create

database

[testfileinit]on

primary

( name

= n'

testfileinit

', filename = n'

f:\dbbackup\testfileinit.mdf

' , size = 41943040kb , filegrowth =

1024kb )

logon( name

= n'

testfileinit_log

', filename = n'

f:\dbbackup\testfileinit_log.ldf

' , size = 1024kb , filegrowth =10%

)go

(figure7:之前建立時間)

(figure8:之後建立時間)

注意:禁用即時檔案初始化功能,要想讓這個禁用生效,一樣需要重啟sql server (mssqlserver)服務。

1. 在安裝sql server的時候,如何設定會使得sql server服務是以【網路服務】登陸的?

2. 禁用掉sql server的協議shared memory,這個協議是用來幹嘛的?有什麼作用?

3. 如果把nt authority\networkservice加入到windows組裡面有什麼不安全隱患嘛?

4. 當啟用 tde 時,即時檔案初始化功能不可用。什麼是tde?

資料庫檔案初始化

為sql server 2005配置windows即時初始化

local system/network service/local service許可權詳解

bash 臨時檔案

1.臨時檔案目錄 tmp 使用者可以隨時隨地利用mktemp命令建立臨時檔案與 tmp目錄,這個目錄在每次系統啟動時都會被清空,因此裡面的檔案都是臨時使用的 不能永久儲存 用完就不管的。任何賬戶都有權在 tmp目錄下建立臨時檔案,完整的讀寫許可權全都給建立它的屬主,並且其它賬戶無權訪問它。2.使用m...

android臨時檔案

activity 1.啟動乙個新的activity 會呼叫oncreate onstart onresume 2.onpause protected void oncreate protected void onstart 當activity被使用者看到時,呼叫 protected void onr...

Oracle臨時檔案

臨時資料檔案時一種特殊的檔案,當記憶體不足時,oracle用他來儲存一些臨時資料,如排序或雜湊操作。自12c起,對臨時表的操作所產生的undo也會放到臨時表空間中,而在12c之前,這部分undo放在undo表空間,聯動產生redo。臨時表空間以稀疏 sparse 的方式建立 sql create t...