原文:
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檔案的效能對比:
--(figure7:之前建立時間)測試即時檔案初始化
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
(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...