SQL Server Как установить у таблицы описание (MS Description)

Время чтения - 3 мин.Дата публикации 13.04.2021 (обновлено 21.05.2026)

Автоматизация описаний таблиц и колонок в SQL Server: процедура sys_setTableDescription

Если вы хоть раз работали с БД в команде, то знаете — описания (descriptions) к таблицам и колонкам спасают. Без них через месяц уже не вспомнить, что хранится в поле col1. А новых разработчиков вводить в курс дела — вообще мучение.

В SSMS описания можно посмотреть и отредактировать в окне Design Table. Но вручную это делать долго и скучно. Особенно если таблиц сто.

Поэтому я написал небольшую, но полезную процедуру — sys_setTableDescription. Она сама добавляет или обновляет описание для таблицы или конкретной колонки. Умная — проверяет, есть ли уже описание, и если есть — просто обновляет его.

Как это работает

  • Передаёте имя таблицы (@table)
  • Если нужно описать колонку — передаёте её имя (@column). Если описание для всей таблицы — NULL
  • Текст описания (@desc) — любой, в формате sql_variant

Процедура сама решает: вызывать sp_addextendedproperty (если описания ещё нет) или sp_updateextendedproperty (если уже есть).

Примеры из реальной жизни

  1. Описание таблицы:
    EXEC [dbo].[sys_setTableDescription] @table = 'Orders', @column = NULL, @desc = 'Таблица заказов клиентов'
    После этого в SSMS в свойствах таблицы Orders появится описание.
  2. Описание колонки:
    EXEC [dbo].[sys_setTableDescription] @table = 'Orders', @column = 'TotalAmount', @desc = 'Итоговая сумма заказа без НДС'
    Теперь, наведя на колонку TotalAmount в обозревателе объектов, увидите это описание.
  3. Массовое обновление:
    Можно обернуть вызовы в курсор и прогнать по всем таблицам схемы. Но это уже другая история.

Исходный код процедуры

ALTER PROCEDURE [dbo].[sys_setTableDescription]
        @table nvarchar(128),  -- table name
        @column nvarchar(128), -- column name, NULL if description for table
        @desc sql_variant     -- description text
AS
    BEGIN
        SET NOCOUNT ON;

        IF @column IS NOT NULL
            IF NOT EXISTS (SELECT NULL FROM SYS.EXTENDED_PROPERTIES
            WHERE [major_id] = OBJECT_ID(@table) AND [name] = N'MS_Description'
                  AND [minor_id] = (SELECT [column_id]
                                    FROM SYS.COLUMNS WHERE [name] = @column AND [object_id] = OBJECT_ID(@table)))
                EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = @desc,
                                               @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE',
                                               @level1name = @table, @level2type = N'COLUMN', @level2name = @column;
            ELSE
                EXECUTE sp_updateextendedproperty @name = N'MS_Description',
                                                  @value = @desc, @level0type = N'SCHEMA', @level0name = N'dbo',
                                                  @level1type = N'TABLE', @level1name = @table,
                                                  @level2type = N'COLUMN', @level2name = @column;
        ELSE
            IF NOT EXISTS (SELECT NULL FROM SYS.EXTENDED_PROPERTIES
            WHERE [major_id] = OBJECT_ID(@table) AND [name] = N'MS_Description'
                  AND [minor_id] = 0)
                EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = @desc,
                                               @level0type = N'SCHEMA', @level0name = N'dbo',
                                               @level1type = N'TABLE', @level1name = @table;
            ELSE
                EXECUTE sp_updateextendedproperty @name = N'MS_Description', @value = @desc,
                                                  @level0type = N'SCHEMA', @level0name = N'dbo',
                                                  @level1type = N'TABLE', @level1name = @table;
    END

Совет: Описания — это не документ на 10 страниц. Пишите коротко и по делу. Например: "Флаг мягкого удаления" вместо "Данное поле указывает, была ли запись помечена как удалённая в системе".

Насколько полезной была статья?

Что еще посмотреть по SQL Server

Как запустить SQL сценарий сразу на нескольких БД

Индексы SQL Server. Поиск дубликатов

Запрос для получения SQL всех индексов для таблиц базы данных SQL Server

Как перестроить все индексы на базе SQL Server

Как разрезать строку на части в SQL по некоторому символу

Конвертация из строки в таблицу в SQL Server

Выполнение прямого запроса к URL из SQL

Как получить текущего юзера БД

Как хранить в 1 поле таблицы БД значения разных типов?

Генерация MD5 в SQL Server

Как привести телефон в нормализованный вид

Как форматировать вывод числа с разделителями

Дополнительный заработок для разработчиков на T-SQL

Прямая работа с заказчиками как ИП или самозанятый. Нужно знать только SQL и HTML.
Falcon Space - платформа для создания сайтов с личными кабинетами
В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
Запрос расчета стоимости веб-проекта на базе Falcon Space
Если видео Youtube плохо грузится, то попробуйте найти видео в ВК видео на канале Falcon Space
Сайт использует Cookie, Яндекс Метрику. Используя сайт, вы соглашаетесь с правилами сайта. См. Правила конфиденциальности и Правила использования сайта OK