強(qiáng)制將當(dāng)前數(shù)據(jù)庫(kù)的所有臟頁(yè)寫(xiě)到磁盤(pán)上。臟頁(yè)是指在輸入到高速緩沖存儲(chǔ)器后被修改的數(shù)據(jù)或日志頁(yè),但這些修改還沒(méi)有寫(xiě)到磁盤(pán)上。有關(guān)日志截?cái)嗟母嘈畔?,?qǐng)參見(jiàn)截?cái)嗍聞?wù)日志。
語(yǔ)法
CHECKPOINT
注釋
CHECKPOINT 語(yǔ)句可在后來(lái)的恢復(fù)中節(jié)省時(shí)間,方法是創(chuàng)建一個(gè)點(diǎn)以確保所有對(duì)數(shù)據(jù)和日志頁(yè)的修改都寫(xiě)到磁盤(pán)上。
檢查點(diǎn)也會(huì)在下列情況中出現(xiàn):
- 當(dāng)用 ALTER DATABASE 更改了某數(shù)據(jù)庫(kù)選項(xiàng)時(shí)。檢查點(diǎn)在更改選項(xiàng)的數(shù)據(jù)庫(kù)中執(zhí)行。
- 當(dāng)服務(wù)器停止時(shí),在服務(wù)器上的每個(gè)數(shù)據(jù)庫(kù)中執(zhí)行檢查點(diǎn)。停止每個(gè)數(shù)據(jù)庫(kù) Microsoft® SQL Server™ 2000 檢查點(diǎn)的方法是:
- 使用 SQL Server 服務(wù)管理器。
- 使用 SQL Server 企業(yè)管理器。
- 使用 SHUTDOWN 語(yǔ)句。
- 在命令提示行使用 Windows NT 命令 net stop mssqlserver。
- 使用 Windows NT 控制面板中的 services 圖標(biāo),選擇 mssqlserver 服務(wù),并單擊"停止"按鈕。
SHUTDOWN WITH NOWAIT 語(yǔ)句關(guān)閉 SQL Server 而不在每個(gè)數(shù)據(jù)庫(kù)中執(zhí)行檢查點(diǎn)。這可能會(huì)導(dǎo)致后來(lái)重新啟動(dòng)以恢復(fù)服務(wù)器上的數(shù)據(jù)庫(kù)的時(shí)間比通常時(shí)間長(zhǎng)。
SQL Server 2000 還在任何至少發(fā)生下面兩種情況的數(shù)據(jù)庫(kù)上自動(dòng)執(zhí)行檢查點(diǎn):
- 日志的活動(dòng)部分超出了在 recovery interval 服務(wù)器配置選項(xiàng)中指定的時(shí)間總量中服務(wù)器可以恢復(fù)的大小。
- 如果數(shù)據(jù)庫(kù)處于日志截?cái)嗄J讲⑶胰罩镜陌俜种呤褲M。
當(dāng)下列條件都屬實(shí)時(shí),數(shù)據(jù)庫(kù)就處于日志截?cái)嗄J剑?br />
- 數(shù)據(jù)庫(kù)使用的是簡(jiǎn)單恢復(fù)模式。
- 當(dāng)最后一個(gè)引用數(shù)據(jù)庫(kù)的 BACKUP DATABASE 語(yǔ)句被執(zhí)行后,下面事件中的某一個(gè)將會(huì)發(fā)生:
- 引用數(shù)據(jù)庫(kù)的 BACKUP LOG 語(yǔ)句將在帶有 NO_LOG 或 TRUNCATE_ONLY 子句的情況下被執(zhí)行。
- 在數(shù)據(jù)庫(kù)中執(zhí)行一個(gè)無(wú)日志記錄的操作,例如執(zhí)行一個(gè)無(wú)日志記錄的大容量復(fù)制操作或一個(gè)無(wú)日志記錄的 WRITETEXT 語(yǔ)句。
- 執(zhí)行一個(gè)在數(shù)據(jù)庫(kù)中添加或刪除文件的 ALTER DATABASE 語(yǔ)句。
權(quán)限
CHECKPOINT 權(quán)限默認(rèn)授予 sysadmin 固定服務(wù)器角色以及 db_owner 和 db_backupoperator 固定數(shù)據(jù)庫(kù)角色的成員且不可轉(zhuǎn)讓。