需求:表已以欄位 `a1` 分區,欲改用同型別欄位 `a2` 分區。SQL Server **不支援直接 ALTER PARTITION FUNCTION 更換欄位**,必須重建。
#!/bin/bash
# 參數
DB="MyDB"
TABLE="BigTable"
OLD_COL="a1"
NEW_COL="a2"
FG="PRIMARY" # 目標檔案群組
# 1. 腳本產生 T-SQL
cat > /tmp/repartition.sql <
SELECT
OBJECT_NAME(object_id) AS TableName,
name AS IndexName,
type_desc,
data_space_id
FROM sys.indexes
WHERE object_id = OBJECT_ID('BigTable');
-- 應顯示叢集索引 data_space_id 對應 PS_a2
用 Shell 腳本包裝 T-SQL 交易,可一鍵完成「複製結構→搬資料→重建分區→切換表名」,並具備失敗回滾能力,適合納入 CI/CD 流程自動化執行。