<?xml version="1.0" encoding="utf-8" ?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:tt="http://teletype.in/" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"><title>Зеленый кружок</title><author><name>Зеленый кружок</name></author><id>https://teletype.in/atom/kondr1</id><link rel="self" type="application/atom+xml" href="https://teletype.in/atom/kondr1?offset=0"></link><link rel="alternate" type="text/html" href="https://blog.kondr1.ru/?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=kondr1"></link><link rel="next" type="application/rss+xml" href="https://teletype.in/atom/kondr1?offset=10"></link><link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></link><updated>2026-05-06T11:02:12.836Z</updated><entry><id>kondr1:HJvhOWK6M</id><link rel="alternate" type="text/html" href="https://blog.kondr1.ru/HJvhOWK6M?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=kondr1"></link><title>Комментарии в SQL Server</title><published>2018-05-03T22:09:50.734Z</published><updated>2018-05-03T22:20:25.756Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://teletype.in/files/e9/e9ccb732-9576-41c3-9077-b05468515098.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://teletype.in/files/54/5412b216-1c06-485a-ba17-89f22e4759d5.png&quot;&gt;Добавление комментариев к таблицам является слабой стороной SQL Server. Когда в других субд для этого присутствуют конструкции COMMENT ON, COMMENTS ON или комментарий указывается при создании самого объекта, то при разработке SQL Server этим решили пренебречь.</summary><content type="html">
  &lt;p&gt;Добавление комментариев к таблицам является слабой стороной SQL Server. Когда в других субд для этого присутствуют конструкции &lt;code&gt;COMMENT ON&lt;/code&gt;, &lt;code&gt;COMMENTS ON&lt;/code&gt; или комментарий указывается при создании самого объекта, то при разработке SQL Server этим решили пренебречь.&lt;/p&gt;
  &lt;p&gt;Да, хотя такая возможность там действительно присутствует, это не удобно и сложно. Для этого используется системная процедура &lt;a href=&quot;https://docs.microsoft.com/ru-ru/sql/relational-databases/system-stored-procedures/sp-addextendedproperty-transact-sql&quot; target=&quot;_blank&quot;&gt;sp_addextendedproperty&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Строго говоря, эта функция предназначена для создания расширенных свойств для объектов. Свойств у каждого объекта бд может быть много, каждый из них может называться как угодно. Четко задокументированого названия свойства-комментария нет, но множество популярных IDE (я проверял в dbForge и SSMS) считают таковым свойство с названием &lt;code&gt;MS_Description&lt;/code&gt;.&lt;/p&gt;
  &lt;p&gt;Что бы прокомментировать, к примеру, конкретный столбец, нужно отдельно указать схему и таблицу. Для большого количества комментариев это сильно усложнит код.&lt;/p&gt;
  &lt;p&gt;Вот пример добавления комментария и то как он отображается в dbForge.&lt;/p&gt;
  &lt;pre&gt;EXEC sys.sp_addextendedproperty
 @name=N&amp;#x27;MS_Description&amp;#x27;,
 @value=&amp;#x27;Имена абонентов&amp;#x27; ,
 @level0type=N&amp;#x27;SCHEMA&amp;#x27;,
 @level0name=&amp;#x27;dbo&amp;#x27;,
 @level1type=N&amp;#x27;TABLE&amp;#x27;,
 @level1name=&amp;#x27;ABONENT&amp;#x27;,
 @level2type=N&amp;#x27;COLUMN&amp;#x27;,
 @level2name=&amp;#x27;Fio&amp;#x27;
&lt;/pre&gt;
  &lt;figure class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://teletype.in/files/54/5412b216-1c06-485a-ba17-89f22e4759d5.png&quot; width=&quot;395&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;Это действительно не очень удобно. Текст комментария теряется в списке характеристик, но, полагаю, лучшего решения не нашлось.&lt;/p&gt;
  &lt;p&gt;Скриншота для SSMS у меня, к сожалению, не сохранилось, но сделать его не трудно, если это требуется.&lt;/p&gt;
  &lt;p&gt;Текст комментария изменяется процедурой &lt;a href=&quot;https://docs.microsoft.com/ru-ru/sql/relational-databases/system-stored-procedures/sp-updateextendedproperty-transact-sql&quot; target=&quot;_blank&quot;&gt;sp_updateextendedproperty&lt;/a&gt; с таким же длинным и не удобным именем и параметрами:&lt;/p&gt;
  &lt;pre&gt;EXEC sys.sp_updateextendedproperty  
 @name=N&amp;#x27;MS_Description&amp;#x27;,
 @value=&amp;#x27;Фамилия, имя, отчество абонента&amp;#x27; ,
 @level0type=N&amp;#x27;SCHEMA&amp;#x27;,
 @level0name=dbo,
 @level1type=N&amp;#x27;TABLE&amp;#x27;,
 @level1name=ABONENT,
 @level2type=N&amp;#x27;COLUMN&amp;#x27;,
 @level2name=Fio
&lt;/pre&gt;
  &lt;p&gt;Удаление: &lt;a href=&quot;https://docs.microsoft.com/ru-ru/sql/relational-databases/system-stored-procedures/sp-dropextendedproperty-transact-sql&quot; target=&quot;_blank&quot;&gt;sp_dropextendedproperty&lt;/a&gt;&lt;/p&gt;
  &lt;pre&gt;EXEC sys.sp_dropextendedproperty   
 @name=N&amp;#x27;MS_Description&amp;#x27;,
 @level0type=N&amp;#x27;SCHEMA&amp;#x27;,
 @level0name=dbo,
 @level1type=N&amp;#x27;TABLE&amp;#x27;,
 @level1name=ABONENT,
 @level2type=N&amp;#x27;COLUMN&amp;#x27;,
 @level2name=Fio
&lt;/pre&gt;
  &lt;p&gt;Данный разбор был бы не полным, если бы я не привел примеры получения списка свойств и получения значения конкретного свойства.&lt;/p&gt;
  &lt;p&gt;Для этого используется процедура &lt;a href=&quot;https://docs.microsoft.com/ru-ru/sql/relational-databases/system-functions/sys-fn-listextendedproperty-transact-sql&quot; target=&quot;_blank&quot;&gt;fn_listextendedproperty&lt;/a&gt;&lt;/p&gt;
  &lt;pre&gt;/* В следующем запросе мы получим значение только этого свойства и только на этом столбце */
SELECT *
  FROM::fn_listextendedproperty(&amp;#x27;MS_Description&amp;#x27;, 
  &amp;#x27;schema&amp;#x27;, &amp;#x27;dbo&amp;#x27;, 
  &amp;#x27;table&amp;#x27;, &amp;#x27;Abonent&amp;#x27;, 
  &amp;#x27;column&amp;#x27;, &amp;#x27;Fio&amp;#x27;);


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

</content></entry></feed>