目次
追加(sys.sp_addextendedproperty)
テーブルや列に論理名を追加するには、sys.sp_addextendedpropertyを使います。
テーブルの論理名を追加
形式(列論理名を追加)
EXEC sys.sp_addextendedproperty @name=N'MS_Description' -- ←ここのMS_Descriptionは固定 , @value=N'<テーブル論理名>' , @level0type=N'SCHEMA' , @level0name=N'<スキーマ名>' , @level1type=N'TABLE' , @level1name=N'<テーブル名>'
- 論理名は拡張プロパティの
MS_Description
として指定します。@name
でMS_Description
を指定します。(ここは固定)@value
で追加したいテーブル論理名を指定します。
- 論理名をどこに設定するかを
@levelXtype
と@levelXname
で指定し、type
とname
は対になっています。type
の方の値にはSCHEMA
やTABLE
やCOLUMN
などの固定値が入ります。name
の方の値には実際のスキーマ名やテーブル名、列名などが入ります。- テーブル指定する場合は、
level0
にスキーマ名を、level1
にテーブル名を指定します。
列の論理名を追加
形式(列論理名を追加)
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'<列名>'
- 論理名は拡張プロパティの
MS_Description
として指定します。@name
でMS_Description
を指定します。(ここは固定)@value
で追加したい列論理名を指定します。
- 論理名をどこに設定するかを
@levelXtype
と@levelXname
で指定し、type
とname
は対になっています。type
の方の値にはSCHEMA
やTABLE
やCOLUMN
などの固定値が入ります。name
の方の値には実際のスキーマ名やテーブル名、列名などが入ります。- 列指定する場合は、
level0
にスキーマ名を、level1
にテーブル名、level2
に列名を指定します。
使用例
例
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'
- 上記例は、
dbo
というスキーマの、User
というテーブルに「ユーザマスタ」という論理名を、さらにそのユーザマスタのBillingAmount
という項目に、論理名として「課金額」を指定しているものです。
修正(sys.sp_updateextendedproperty)
テーブルや列に論理名を修正するには、sys.sp_updateextendedpropertyを使います。
テーブルの論理名を修正
形式(列論理名を修正)
EXEC sys.sp_updateextendedproperty @name=N'MS_Description' -- ←ここのMS_Descriptionは固定 , @value=N'<テーブル論理名>' , @level0type=N'SCHEMA' , @level0name=N'<スキーマ名>' , @level1type=N'TABLE' , @level1name=N'<テーブル名>'
- 論理名は拡張プロパティの
MS_Description
として指定します。@name
でMS_Description
を指定します。(ここは固定)@value
で修正したいテーブル論理名を指定します。
- 論理名をどこに設定するかを
@levelXtype
と@levelXname
で指定し、type
とname
は対になっています。type
の方の値にはSCHEMA
やTABLE
やCOLUMN
などの固定値が入ります。name
の方の値には実際のスキーマ名やテーブル名、列名などが入ります。- テーブル指定する場合は、
level0
にスキーマ名を、level1
にテーブル名を指定します。
列の論理名を修正
形式(列論理名を修正)
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'<列名>'
- 論理名は拡張プロパティの
MS_Description
として指定します。@name
でMS_Description
を指定します。(ここは固定)@value
で修正したい列論理名を指定します。
- 論理名をどこに設定するかを
@levelXtype
と@levelXname
で指定し、type
とname
は対になっています。type
の方の値にはSCHEMA
やTABLE
やCOLUMN
などの固定値が入ります。name
の方の値には実際のスキーマ名やテーブル名、列名などが入ります。- 列指定する場合は、
level0
にスキーマ名を、level1
にテーブル名、level2
に列名を指定します。
削除(sys.sp_dropextendedproperty)
テーブルや列に論理名を削除するには、sys.sp_dropextendedpropertyを使います。
追加、修正と違うのは、@value
が指定できないことくらいです。
テーブルの論理名を削除
形式(列論理名を削除)
EXEC sys.sp_dropextendedproperty @name=N'MS_Description' -- ←ここのMS_Descriptionは固定 , @level0type=N'SCHEMA' , @level0name=N'<スキーマ名>' , @level1type=N'TABLE' , @level1name=N'<テーブル名>'
- 論理名は拡張プロパティの
MS_Description
として指定します。@name
でMS_Description
を指定します。(ここは固定)
- 論理名をどこに設定するかを
@levelXtype
と@levelXname
で指定し、type
とname
は対になっています。type
の方の値にはSCHEMA
やTABLE
やCOLUMN
などの固定値が入ります。name
の方の値には実際のスキーマ名やテーブル名、列名などが入ります。- テーブル指定する場合は、
level0
にスキーマ名を、level1
にテーブル名を指定します。
列の論理名を削除
形式(列論理名を削除)
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'<列名>'
- 論理名は拡張プロパティの
MS_Description
として指定します。@name
でMS_Description
を指定します。(ここは固定)
- 論理名をどこに設定するかを
@levelXtype
と@levelXname
で指定し、type
とname
は対になっています。type
の方の値にはSCHEMA
やTABLE
やCOLUMN
などの固定値が入ります。name
の方の値には実際のスキーマ名やテーブル名、列名などが入ります。- 列指定する場合は、
level0
にスキーマ名を、level1
にテーブル名、level2
に列名を指定します。
確認方法
SQLで確認する場合
table_info.sql
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文字列ですよという意味です。
古い内容ですが、ここなどの話が参考になります。