テーブルやカラムにコメントを付ける方法と取得する方法

Uncategorized
358 words

準備

テーブルを作成

1
2
3
4
5
6
7
CREATE TABLE staff (
id INT NOT NULL,
name NVARCHAR (50) NULL,
branch NVARCHAR (50) NULL,
age INT NULL,
PRIMARY KEY CLUSTERED (id ASC)
);

レコードを追加

1
2
3
4
5
6
INSERT INTO staff (id, name, branch, age) VALUES (1, N'田中', N'東京', 29)
INSERT INTO staff (id, name, branch, age) VALUES (2, N'山田', N'横浜', 31)
INSERT INTO staff (id, name, branch, age) VALUES (3, N'杉浦', N'千葉', 34)
INSERT INTO staff (id, name, branch, age) VALUES (4, N'山野', N'大阪', 25)
INSERT INTO staff (id, name, branch, age) VALUES (5, N'中島', N'横浜', 38)
INSERT INTO staff (id, name, branch, age) VALUES (6, N'鈴木', N'東京', 24)

コメント追加

テーブルにコメントを追加

1
2
3
4
5
6
7
EXECUTE sp_addextendedproperty 
@name = N'MS_Description',
@value = N'スタッフマスタ',
@level0type = N'SCHEMA',
@level0name = N'dbo',
@level1type = N'TABLE',
@level1name = N'staff';

カラムにコメントを追加

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
EXECUTE sp_addextendedproperty 
@name = N'MS_Description',
@value = N'ID',
@level0type = N'SCHEMA',
@level0name = N'dbo',
@level1type = N'TABLE',
@level1name = N'staff',
@level2type = N'COLUMN',
@level2name = N'id';
EXECUTE sp_addextendedproperty
@name = N'MS_Description',
@value = N'名前',
@level0type = N'SCHEMA',
@level0name = N'dbo',
@level1type = N'TABLE',
@level1name = N'staff',
@level2type = N'COLUMN',
@level2name = N'name';
EXECUTE sp_addextendedproperty
@name = N'MS_Description',
@value = N'支社名',
@level0type = N'SCHEMA',
@level0name = N'dbo',
@level1type = N'TABLE',
@level1name = N'staff',
@level2type = N'COLUMN',
@level2name = N'branch';
EXECUTE sp_addextendedproperty
@name = N'MS_Description',
@value = N'歳',
@level0type = N'SCHEMA',
@level0name = N'dbo',
@level1type = N'TABLE',
@level1name = N'staff',
@level2type = N'COLUMN',
@level2name = N'age';

コメント取得

テーブルのコメントを取得

1
2
3
4
5
6
7
8
9
10
SELECT 
sys.tables.name AS テーブル物理名,
sys.extended_properties.value AS テーブル論理名
FROM
sys.schemas
INNER JOIN sys.tables
ON sys.tables.schema_id = sys.schemas.schema_id
LEFT JOIN sys.extended_properties
ON sys.extended_properties.major_id = sys.tables.object_id
AND sys.extended_properties.minor_id = 0
テーブル物理名 テーブル論理名
1 staff スタッフマスタ

カラムのコメントを取得

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT 
sys.columns.name AS カラム物理名,
sys.extended_properties.value AS カラム論理名
FROM
sys.schemas
INNER JOIN sys.tables
ON sys.tables.schema_id = sys.schemas.schema_id
INNER JOIN sys.columns
ON sys.columns.object_id = sys.tables.object_id
LEFT JOIN sys.extended_properties
ON sys.extended_properties.major_id = sys.columns.object_id
AND sys.extended_properties.minor_id = sys.columns.column_id
WHERE
sys.schemas.name = N'dbo'
AND sys.tables.name = N'staff'
カラム物理名 カラム論理名
1 Id ID
2 name 名前
3 branch 支社名
4 age