<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:tt="http://teletype.in/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Зеленый кружок</title><generator>teletype.in</generator><description><![CDATA[Зеленый кружок]]></description><image><url>https://teletype.in/files/c1/c179c8cb-53d9-40d5-94f0-3315d3743e26.png</url><title>Зеленый кружок</title><link>https://blog.kondr1.ru/</link></image><link>https://blog.kondr1.ru/?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=kondr1</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/kondr1?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/kondr1?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Wed, 06 May 2026 10:59:17 GMT</pubDate><lastBuildDate>Wed, 06 May 2026 10:59:17 GMT</lastBuildDate><item><guid isPermaLink="true">https://blog.kondr1.ru/HJvhOWK6M</guid><link>https://blog.kondr1.ru/HJvhOWK6M?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=kondr1</link><comments>https://blog.kondr1.ru/HJvhOWK6M?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=kondr1#comments</comments><dc:creator>kondr1</dc:creator><title>Комментарии в SQL Server</title><pubDate>Thu, 03 May 2018 22:09:50 GMT</pubDate><media:content medium="image" url="https://teletype.in/files/e9/e9ccb732-9576-41c3-9077-b05468515098.png"></media:content><description><![CDATA[<img src="https://teletype.in/files/54/5412b216-1c06-485a-ba17-89f22e4759d5.png"></img>Добавление комментариев к таблицам является слабой стороной SQL Server. Когда в других субд для этого присутствуют конструкции COMMENT ON, COMMENTS ON или комментарий указывается при создании самого объекта, то при разработке SQL Server этим решили пренебречь.]]></description><content:encoded><![CDATA[
  <p>Добавление комментариев к таблицам является слабой стороной SQL Server. Когда в других субд для этого присутствуют конструкции <code>COMMENT ON</code>, <code>COMMENTS ON</code> или комментарий указывается при создании самого объекта, то при разработке SQL Server этим решили пренебречь.</p>
  <p>Да, хотя такая возможность там действительно присутствует, это не удобно и сложно. Для этого используется системная процедура <a href="https://docs.microsoft.com/ru-ru/sql/relational-databases/system-stored-procedures/sp-addextendedproperty-transact-sql" target="_blank">sp_addextendedproperty</a>.</p>
  <p>Строго говоря, эта функция предназначена для создания расширенных свойств для объектов. Свойств у каждого объекта бд может быть много, каждый из них может называться как угодно. Четко задокументированого названия свойства-комментария нет, но множество популярных IDE (я проверял в dbForge и SSMS) считают таковым свойство с названием <code>MS_Description</code>.</p>
  <p>Что бы прокомментировать, к примеру, конкретный столбец, нужно отдельно указать схему и таблицу. Для большого количества комментариев это сильно усложнит код.</p>
  <p>Вот пример добавления комментария и то как он отображается в dbForge.</p>
  <pre>EXEC sys.sp_addextendedproperty
 @name=N&#x27;MS_Description&#x27;,
 @value=&#x27;Имена абонентов&#x27; ,
 @level0type=N&#x27;SCHEMA&#x27;,
 @level0name=&#x27;dbo&#x27;,
 @level1type=N&#x27;TABLE&#x27;,
 @level1name=&#x27;ABONENT&#x27;,
 @level2type=N&#x27;COLUMN&#x27;,
 @level2name=&#x27;Fio&#x27;
</pre>
  <figure class="m_custom">
    <img src="https://teletype.in/files/54/5412b216-1c06-485a-ba17-89f22e4759d5.png" width="395" />
  </figure>
  <p>Это действительно не очень удобно. Текст комментария теряется в списке характеристик, но, полагаю, лучшего решения не нашлось.</p>
  <p>Скриншота для SSMS у меня, к сожалению, не сохранилось, но сделать его не трудно, если это требуется.</p>
  <p>Текст комментария изменяется процедурой <a href="https://docs.microsoft.com/ru-ru/sql/relational-databases/system-stored-procedures/sp-updateextendedproperty-transact-sql" target="_blank">sp_updateextendedproperty</a> с таким же длинным и не удобным именем и параметрами:</p>
  <pre>EXEC sys.sp_updateextendedproperty  
 @name=N&#x27;MS_Description&#x27;,
 @value=&#x27;Фамилия, имя, отчество абонента&#x27; ,
 @level0type=N&#x27;SCHEMA&#x27;,
 @level0name=dbo,
 @level1type=N&#x27;TABLE&#x27;,
 @level1name=ABONENT,
 @level2type=N&#x27;COLUMN&#x27;,
 @level2name=Fio
</pre>
  <p>Удаление: <a href="https://docs.microsoft.com/ru-ru/sql/relational-databases/system-stored-procedures/sp-dropextendedproperty-transact-sql" target="_blank">sp_dropextendedproperty</a></p>
  <pre>EXEC sys.sp_dropextendedproperty   
 @name=N&#x27;MS_Description&#x27;,
 @level0type=N&#x27;SCHEMA&#x27;,
 @level0name=dbo,
 @level1type=N&#x27;TABLE&#x27;,
 @level1name=ABONENT,
 @level2type=N&#x27;COLUMN&#x27;,
 @level2name=Fio
</pre>
  <p>Данный разбор был бы не полным, если бы я не привел примеры получения списка свойств и получения значения конкретного свойства.</p>
  <p>Для этого используется процедура <a href="https://docs.microsoft.com/ru-ru/sql/relational-databases/system-functions/sys-fn-listextendedproperty-transact-sql" target="_blank">fn_listextendedproperty</a></p>
  <pre>/* В следующем запросе мы получим значение только этого свойства и только на этом столбце */
SELECT *
  FROM::fn_listextendedproperty(&#x27;MS_Description&#x27;, 
  &#x27;schema&#x27;, &#x27;dbo&#x27;, 
  &#x27;table&#x27;, &#x27;Abonent&#x27;, 
  &#x27;column&#x27;, &#x27;Fio&#x27;);


/* А здесь получим все свойства которые висят на таблице Abonent */
SELECT *
  FROM::fn_listextendedproperty(DEFAULT, 
  &#x27;schema&#x27;, &#x27;dbo&#x27;, 
  &#x27;table&#x27;, &#x27;Abonent&#x27;, 
  DEFAULT, DEFAULT);
</pre>
  <figure class="m_custom">
    <img src="https://teletype.in/files/9e/9ee75396-82fd-4790-aeb5-278126a99bd6.png" width="481" />
  </figure>

]]></content:encoded></item></channel></rss>