批次是應用程式送至 SQL Server 執行的一組 T-SQL 陳述式,編譯為單一執行計畫。善用批次能減少網路往返,但需嚴守四大注意事項,避免資料不一致與相容性風險。
語法錯誤導致無法產生執行計畫,批次內所有陳述式均不執行,資料庫零影響。
BEGIN TRANSACTION;
BEGIN TRY
-- 批次陳述式
COMMIT TRANSACTION;
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION;
-- 錯誤處理/記錄
END CATCH;
任何錯誤觸發回滾,確保原子性。
編譯一條、執行一條。若批次第一條建表,第三條插入資料型別不符:
編譯階段即發現物件不符,整批無法執行,表不會被建立。
傾向 2000 模式:雖可能影響效能,但能在部署前發現結構錯誤,避免半部署狀態造成資料破壞。
| 限制 | 說明 | 違反後果 |
|---|---|---|
| 同批次不可「ALTER TABLE 加欄位」後立即引用新欄位 | 需分批次:先加欄位,再另一批次引用 | 編譯錯誤,批次無法執行 |
| CREATE VIEW / CREATE PROCEDURE 等特定 DDL 單獨成批 | 後續陳述式會被視為定義一部分 | 語意錯誤或編譯失敗 |
| EXECUTE 非首條陳述式需加 EXECUTE 關鍵字 | 首條可省略 | 語法錯誤 |