Think Twice
IT技術メモ | SQL Serverのメモ
Created: 2021-01-29 / Updated: 2022-10-19

SQL Serverでテーブル論理名とか列論理名を指定する方法


目次


追加(sys.sp_addextendedproperty)

テーブルや列に論理名を追加するには、sys.sp_addextendedpropertyを使います。

テーブルの論理名を追加

形式(列論理名を追加)
Copy
EXEC sys.sp_addextendedproperty @name=N'MS_Description' -- ←ここのMS_Descriptionは固定
                              , @value=N'<テーブル論理名>'
                              , @level0type=N'SCHEMA'
                              , @level0name=N'<スキーマ名>'
                              , @level1type=N'TABLE'
                              , @level1name=N'<テーブル名>'

列の論理名を追加

形式(列論理名を追加)
Copy
EXEC sys.sp_addextendedproperty @name=N'MS_Description' -- ←ここのMS_Descriptionは固定
                              , @value=N'<列論理名>'
                              , @level0type=N'SCHEMA'
                              , @level0name=N'<スキーマ名>'
                              , @level1type=N'TABLE'
                              , @level1name=N'<テーブル名>'
                              , @level2type=N'COLUMN'
                              , @level2name=N'<列名>'

使用例

Copy
EXEC sys.sp_addextendedproperty @name=N'MS_Description'
                              , @value=N'ユーザマスタ'
                              , @level0type=N'SCHEMA'
                              , @level0name=N'dbo'
                              , @level1type=N'TABLE'
                              , @level1name=N'User'

EXEC sys.sp_addextendedproperty @name=N'MS_Description'
                              , @value=N'課金額'
                              , @level0type=N'SCHEMA'
                              , @level0name=N'dbo'
                              , @level1type=N'TABLE'
                              , @level1name=N'User'
                              , @level2type=N'COLUMN'
                              , @level2name=N'BillingAmount'

修正(sys.sp_updateextendedproperty)

テーブルや列に論理名を修正するには、sys.sp_updateextendedpropertyを使います。

テーブルの論理名を修正

形式(列論理名を修正)
Copy
EXEC sys.sp_updateextendedproperty @name=N'MS_Description' -- ←ここのMS_Descriptionは固定
                              , @value=N'<テーブル論理名>'
                              , @level0type=N'SCHEMA'
                              , @level0name=N'<スキーマ名>'
                              , @level1type=N'TABLE'
                              , @level1name=N'<テーブル名>'

列の論理名を修正

形式(列論理名を修正)
Copy
EXEC sys.sp_updateextendedproperty @name=N'MS_Description' -- ←ここのMS_Descriptionは固定
                              , @value=N'<列論理名>'
                              , @level0type=N'SCHEMA'
                              , @level0name=N'<スキーマ名>'
                              , @level1type=N'TABLE'
                              , @level1name=N'<テーブル名>'
                              , @level2type=N'COLUMN'
                              , @level2name=N'<列名>'

削除(sys.sp_dropextendedproperty)

テーブルや列に論理名を削除するには、sys.sp_dropextendedpropertyを使います。
追加、修正と違うのは、@valueが指定できないことくらいです。

テーブルの論理名を削除

形式(列論理名を削除)
Copy
EXEC sys.sp_dropextendedproperty @name=N'MS_Description' -- ←ここのMS_Descriptionは固定
                               , @level0type=N'SCHEMA'
                               , @level0name=N'<スキーマ名>'
                               , @level1type=N'TABLE'
                               , @level1name=N'<テーブル名>'

列の論理名を削除

形式(列論理名を削除)
Copy
EXEC sys.sp_dropextendedproperty @name=N'MS_Description' -- ←ここのMS_Descriptionは固定
                               , @level0type=N'SCHEMA'
                               , @level0name=N'<スキーマ名>'
                               , @level1type=N'TABLE'
                               , @level1name=N'<テーブル名>'
                               , @level2type=N'COLUMN'
                               , @level2name=N'<列名>'

確認方法

SQLで確認する場合

table_info.sql
Copy
select
    S.name as スキーマ名,
	T.name as テーブル物理名,
	EP_t.value as テーブル論理名,
	C.column_id as 列番号,
	C.name as 列物理名,
	EP_c.value as 列論理名
from
    sys.schemas S
	inner join
    sys.tables T on T.schema_id = S.schema_id
	inner join
    sys.columns C on C.object_id = T.object_id
    left join
	sys.extended_properties EP_t on EP_t.major_id = T.object_id
	                            and EP_t.minor_id = 0 -- マイナーID=0がテーブルの情報 
	                            and EP_t.name = 'MS_Description'
    left join
    sys.extended_properties EP_c on EP_c.major_id = C.object_id
	                            and EP_c.minor_id = C.column_id
	                            and EP_c.name = 'MS_Description'
where
	S.name = '<スキーマ名>' and
	T.name = '<テーブル名>'
order by
	C.column_id

SQL Server Management Studioで確認する場合

テーブルのプロパティを開き、拡張プロパティでプロパティ「MS_Description」として設定されているので、そこで確認できます。

テーブルを「デザイン」で開き、列のプロパティを表示すると下の方に「説明」という項目がありますので、そこで確認できます。

補足

今回ご紹介したSQL内に出てくる文字列部分の N'xxx' となっているのはUnicode文字列ですよという意味です。
古い内容ですが、ここなどの話が参考になります。


参考

関連メモ

参考サイト