首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 進階命令集:BACKUP、CHECKPOINT、DBCC、DECLARE 深度解析

     編輯:關於SqlServer

除了標準 DML/DDL,SQL Server 提供一組系統級命令支援備份、緩衝區管理、一致性檢查、變數宣告等核心運維功能。深入理解這些命令的語法、權限、副作用,是資深 DBA 的必修課。

BACKUP:資料保護的最後防線

  • 取代 SQL 7.0 以前的 DUMP 命令,SQL 2000 起標準化為 BACKUP。
  • 支援完整/差異/記錄/檔案/檔案群組備份,目的地可為磁帶/磁碟/URL (Azure Blob)。
  • 核心語法:BACKUP DATABASE|LOG {db_name} TO <備份裝置> [WITH 選項]
  • 關鍵選項:COMPRESSION、CHECKSUM、COPY_ONLY (不影響差異基準)、ENCRYPTION。

CHECKPOINT:緩衝區強制落盤

CHECKPOINT [checkpoint_duration]
  • 將 dirty pages (修改過的資料頁/記錄頁) 從記憶體緩衝區強制寫入資料檔。
  • 縮短資料庫復原時間 (減少重做階段掃描記錄量)。
  • 自動觸發機制:記錄檔 70% 滿、最小記錄檔大小、資料庫關閉、備份完成。
  • checkpoint_duration (秒) 可調節 I/O 節流,避免衝擊線上負載。

DBCC:資料庫一致性檢查器 (Database Consistency Checker)

  • 模組化子命令架構:DBCC CHECKDB、CHECKALLOC、CHECKCATALOG、SHOWCONTIG、FREEPROCCACHE、INPUTBUFFER 等數十種。
  • 核心維護組合:
     DBCC CHECKDB (db) WITH NO_INFOMSGS, ALL_ERRORMSGS — 完整邏輯/實體一致性檢查。
     DBCC CHECKALLOC — 頁面配置一致性 (GAM/SGAM/PFS)。
     DBCC CHECKCATALOG — 系統目錄一致性。
     升級前必執行上述三命令。
  • 需 sysadmin 或 db_owner 權限,執行期間可能持有鎖定影響並發。

DECLARE:變數/游標/資料表型別宣告

DECLARE 
    { @local_variable data_type } 
  | { @cursor_variable CURSOR } 
  | { @table_variable table_type_definition } 
  [ ,...n ]
  • 宣告後初始值為 NULL,需用 SET 或 SELECT 賦值。
  • 支援標量、游標、資料表值變數 (SQL 2000+);不可用於 TEXT/NTEXT/IMAGE。
  • 作用域:批次/預存程式/觸發器/動態 SQL 區塊內。

DECLARE 範例

-- 範例 4-16: 宣告變數並賦值
DECLARE @x float, @y datetime;
SELECT @x = PI(), @y = GETDATE();
PRINT @x;  -- 3.14159
PRINT @y;  -- Jun 17 2000 4:32PM

字元型別變數宣告陷阱

-- 錯誤: 未指定長度
DECLARE @s char;      -- 長度預設 1,截斷風險
DECLARE @s varchar;   -- 長度預設 1

-- 正確: 明確指定長度
DECLARE @s char(50);
DECLARE @s varchar(100);
DECLARE @s nvarchar(200); -- Unicode 支援

實務操作建議

  • BACKUP 納入 SQL Agent 排程,驗證 RESTORE VERIFYONLY,異地複製備份檔。
  • 大量資料載入前執行 CHECKPOINT 並設定 recovery interval 控制復原時間目標 (RTO)。
  • 例行維護視窗執行 DBCC CHECKDB,生產環境可用 PHYSICAL_ONLY 加速 (僅檢查實體結構)。
  • 變數宣告習慣:一行一變數、明確長度、就近宣告、註解用途,提升可讀性與維護性。

這四大命令橫跨備份復原、記憶體管理、完整性驗證、程式設計基礎,構成 SQL Server 運維與開發的核心指令集。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved