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

MSSQL 大量資料表修改結構 (加索引/欄位) 逾時解決:改用產生腳本執行

     編輯:SQL Server 2005

現象

SSMS 圖形介面點「儲存」修改大型資料表 (千萬列) 時,跳出:
「無法建立索引 'IX_...'。逾時時間已到。在作業完成前逾時時間已過或伺服器未回應。」

原因

SSMS 設計工具預設命令逾時極短 (約 30 秒),大表重建需數分鐘至數小時,導致用戶端中斷。

正確做法:產生變更腳本 → 查詢視窗執行

  1. 在資料表設計師完成修改 (加欄位、建索引、改型別...)。
  2. **不要**點工具列「儲存」圖示。
  3. 右鍵設計師空白處 → 選擇 「產生變更腳本」。
  4. 彈出視窗全選 (Ctrl+A) 複製 (Ctrl+C) → 關閉設計師 → 選「不儲存」。
  5. 右鍵資料庫 →「新增查詢」→ 貼上 (Ctrl+V) → 執行 (F5)。

優點

  • 無用戶端逾時限制,伺服器端完整執行。
  • 可在腳本中加入 SET LOCK_TIMEOUT -1 或調整 MAXDOP。
  • 執行過程可隨時查看進度、預估剩餘時間。

補充:線上索引建立 (Enterprise 版)

CREATE NONCLUSTERED INDEX IX_LargeTable_Col
ON dbo.LargeTable (Col)
WITH (ONLINE = ON, MAXDOP = 4);

ONLINE = ON 允許建立期間資料表仍可讀寫,需 Enterprise/Developer 版。

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