SQLServerでのテーブルとカラムのコメント
できるだけ、個別のコードを書きたくないので、テーブルとカラムのコメントを取得したかったりする。
普通に
【テーブル】 COMMENT ON TABLE dbo.hoge IS 'テーブルほげ'; 【カラム】 COMMENT ON COLUMN dbo.hoge.fuga IS 'カラムふが';
ってなのがあるけど、SQLServerはちと違うらしい。
拡張プロパティ(extendedproperty)ってのに設定して、その拡張プロパティをSQLで取得する、という方法となる。
コメントを設定
【テーブル】 USE DatabaseName; GO EXEC sys.sp_addextendedproperty @name = N'Description', @value = N'テーブルほげ', @level0type = N'SCHEMA', @level0name = dbo, @level1type = N'TABLE', @level1name = hoge; GO 【カラム】 USE DatabaseName; GO EXEC sys.sp_addextendedproperty @name = N'Description', @value = N'カラムふが', @level0type = N'SCHEMA', @level0name = dbo, @level1type = N'TABLE', @level1name = hoge, @level1type = N'COLUMN', @level1name = fuga; GO
コメントを取得
【テーブル】 SELECT t.name ,ep.name ,ep.value FROM sys.tables AS t INNER JOIN sys.extended_properties AS ep ON t.object_id = ep.major_id AND ep.minor_id = 0 ; 【カラム】 SELECT t.name , c.name , ep.name , ep.value FROM sys.tables AS t INNER JOIN sys.columns AS c ON t.object_id = c.object_id INNER JOIN sys.extended_properties ep ON c.object_id = ep.major_id AND c.column_id = ep.minor_id ;
プロパティで名前+値の組み合わせなので、sys.extended_properties.nameも表示させてみた。
ちなみに拡張プロパティの更新は「sp_updateextendedproperty」、削除は「sp_dropextendedproperty」となる。