在 SQL Server 2005 中取得所有欄位定義的方法(含備註欄位)

這是我之前研究出來的一段SQL語法,可以用於資料庫的欄位資料查詢,建議各位可以把欄位的註解都寫在資料庫裡,一來方便程式開發人員查詢欄位用途,二來不用另外寫文件說明欄位用途!

[code:tsql]
SELECT
    a.TABLE_NAME                as 表格名稱,
    b.COLUMN_NAME               as 欄位名稱,
    b.DATA_TYPE                 as 資料型別,
    b.CHARACTER_MAXIMUM_LENGTH  as 最大長度,
    b.COLUMN_DEFAULT            as 預設值,
    b.IS_NULLABLE               as 允許空值,
    (
        SELECT
            value
        FROM
            fn_listextendedproperty (NULL, 'schema', 'dbo', 'table', a.TABLE_NAME, 'column', default)
        WHERE
            name='MS_Description'
            and objtype='COLUMN'
            and objname Collate Chinese_Taiwan_Stroke_CI_AS = b.COLUMN_NAME
    ) as 欄位備註
FROM
    INFORMATION_SCHEMA.TABLES  a
    LEFT JOIN INFORMATION_SCHEMA.COLUMNS b ON ( a.TABLE_NAME=b.TABLE_NAME )
WHERE
    TABLE_TYPE='BASE TABLE'
ORDER BY
    a.TABLE_NAME, ordinal_position
[/code]

  

此文章由 will 發表於 2007/11/5 下午 03:18:00

永久連結 | 評論 (3) | 此文章的RSSRSS comment feed |

分類: SQL Server | Tips

標籤:

收藏:

相關文章

評論

一月 11. 2008 15:10

Teck

執行後出現以下錯誤訊息:
訊息 102,層級 15,狀態 1,行 12
接近 'a' 之處的語法不正確。

請問要如何解決?
Thanks!!

Teck tw

一月 11. 2008 16:46

Will 保哥

有兩個條件必須成立才能使用這段 SQL:

1. 資料庫系統必須是 SQL Server 2005

2. 資料庫的「相容性層級」必須設定成 "SQL Server 2005 (90)"

我想你的問題應該是第二點沒有符合。

Will 保哥 tw

一月 11. 2008 17:35

Teck

果然是第二點的問題, 我設好了就可以查詢了。
感謝保哥的協助!! Thanks!

Teck tw

新增評論


(將顯示您的Gravatar圖示)  

  Country flag

[b][/b] - [i][/i] - [u][/u]- [quote][/quote]



線上預覽

一月 6. 2009 15:39