在查詢分析器執行,結果可直接複製到 Excel:
SELECT
(CASE WHEN a.colorder = 1 THEN d.name ELSE '' END) AS 表名,
a.colorder AS 欄位序號,
a.name AS 欄位名,
(CASE WHEN COLUMNPROPERTY(a.id, a.name, 'IsIdentity') = 1 THEN '√' ELSE '' END) AS 標識,
(CASE WHEN (SELECT COUNT(*) FROM sysobjects WHERE name IN (
SELECT name FROM sysindexes WHERE id = a.id AND indid IN (
SELECT indid FROM sysindexkeys WHERE id = a.id AND colid IN (
SELECT colid FROM syscolumns WHERE id = a.id AND name = a.name
)
)
) AND xtype = 'PK') > 0 THEN '√' ELSE '' END) AS 主鍵,
b.name AS 型別,
a.length AS 位元組長度,
COLUMNPROPERTY(a.id, a.name, 'PRECISION') AS 精確度,
ISNULL(COLUMNPROPERTY(a.id, a.name, 'Scale'), 0) AS 小數位數,
(CASE WHEN a.isnullable = 1 THEN '√' ELSE '' END) AS 允許空值,
ISNULL(e.text, '') AS 預設值,
ISNULL(g.[value], '') AS 欄位說明
FROM syscolumns a
LEFT JOIN systypes b ON a.xtype = b.xusertype
INNER JOIN sysobjects d ON a.id = d.id AND d.xtype = 'U' AND d.name <> 'dtproperties'
LEFT JOIN syscomments e ON a.cdefault = e.id
LEFT JOIN sysproperties g ON a.id = g.id AND a.colid = g.smallid
ORDER BY a.id, a.colorder
SET ANSI_NULLS OFF
GO
SET NOCOUNT ON
GO
-- 後續邏輯:游標遍歷所有使用者資料表,動態建構 SELECT TOP 1 * 查詢,
-- 並將結構定義與第一筆資料合併輸出,適合匯出 Excel 產生資料字典。
-- 完整腳本較長,核心思想為:
-- 1. 宣告游標 SELECT name FROM sysobjects WHERE xtype='U'
-- 2. 迴圈中取得各表欄位清單 (INFORMATION_SCHEMA.COLUMNS)
-- 3. 執行 SELECT TOP 1 * FROM 表名 取得範例資料
-- 4. 格式化輸出:表名、欄位名、型別、長度、範例值
SELECT 系統表與使用者表的權限。