資料庫升級、結構比對、文件產出等場景常需要知道表的完整定義:欄位、約束、主鍵、索引等。sp_helptext 僅適用於預存程序、檢視表等物件,無法直接用於資料表。
本文提供一個完整的預存程序,能輸出指定表的 CREATE TABLE 及所有相關索引的 CREATE INDEX 陳述式。程式碼分為 SQL Server 2000 與 6.5 兩個版本,核心邏輯一致:
#spscript 存放產生的腳本行。syscolumns 取得欄位資訊(名稱、型別、長度、精度、標度、Identity、NULL/NOT NULL、預設值),組裝欄位定義字串。sysindexes 取得索引資訊(名稱、IndID、Status),透過 index_col 解析索引鍵欄位,判斷唯一、叢集、主鍵、IGNORE_DUP_KEY、ALLOW_DUP_ROW 等屬性,組裝索引建立腳本。主鍵約束直接附加在建表腳本的最後一行。SELECT Script FROM #spscript 輸出完整腳本。usertype 1,2,3,4 為定長字元需加長度;24 為數值型需加精度/標度。0x80=Identity,0x08=允許 NULL,0x02=唯一索引,0x800=主鍵,0x01=IGNORE_DUP_KEY,0x40=ALLOW_DUP_ROW。syssegments 取得檔案群組位置。EXEC SP_GET_TABLE_INFO 'YourTableName'
即可在結果格中獲得完整的 DDL 腳本,方便版本控管、部署腳本產出或異構平台遷移參考。