<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://dev.net.ua/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang=""><title type="html">Denis Reznik's blog</title><subtitle type="html" /><id>http://dev.net.ua/blogs/denisreznik/atom.aspx</id><link rel="alternate" type="text/html" href="http://dev.net.ua/blogs/denisreznik/default.aspx" /><link rel="self" type="application/atom+xml" href="http://dev.net.ua/blogs/denisreznik/atom.aspx" /><generator uri="http://communityserver.org" version="2.1.60809.935">Community Server</generator><updated>2009-11-17T01:28:59Z</updated><entry><title>Материалы доклада &quot;Защита данных в SQL Server: Transparent Data Encryption&quot;</title><link rel="alternate" type="text/html" href="http://dev.net.ua/blogs/denisreznik/archive/2010/03/10/9464.aspx" /><id>http://dev.net.ua/blogs/denisreznik/archive/2010/03/10/9464.aspx</id><published>2010-03-09T22:19:00Z</published><updated>2010-03-09T22:19:00Z</updated><content type="html">&lt;p&gt;        5 марта состоялась первая весенняя &lt;a href="http://dev.net.ua/blogs/polhovskiy/archive/2010/02/27/9401.aspx" target="_blank"&gt;встреча UNETA&lt;/a&gt;, на которой я выступал с докладом на тему "Защита данных в SQL Server 2008: Transparent Data Encryption". Доклад был посвящён защите носителей информации при помощи    &lt;br /&gt;прозрачного шифрования данных. Рассматривались проблемы, решаемые TDE, область применения и механизм работы. В скором времени собираюсь подготовить и выложить веб-каст по теме. А сейчас выкладываю материалы доклада: &lt;a href="http://cid-7ef2f09b7178758f.skydrive.live.com/self.aspx/.Public/Uneta/Transparent%20Data%20Encryption/Transparent%20Data%20Encryption.pptx" target="_blank"&gt;презентацию&lt;/a&gt; и &lt;a href="http://cid-7ef2f09b7178758f.skydrive.live.com/self.aspx/.Public/Uneta/Transparent%20Data%20Encryption/TDE.zip" target="_blank"&gt;скрипты&lt;/a&gt;, использовавшиеся в демонстрации. И пару фотографий со встречи ;)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://dev.net.ua/blogs/denisreznik/DSC_0747_5AB51371.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:block;float:none;margin-left:auto;border-top:0px;margin-right:auto;border-right:0px;" title="DSC_0747" border="0" alt="DSC_0747" src="http://dev.net.ua/blogs/denisreznik/DSC_0747_thumb_6A74A875.jpg" width="541" height="358" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://dev.net.ua/blogs/denisreznik/DSC_0751_21DAB9A4.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:block;float:none;margin-left:auto;border-top:0px;margin-right:auto;border-right:0px;" title="DSC_0751" border="0" alt="DSC_0751" src="http://dev.net.ua/blogs/denisreznik/DSC_0751_thumb_2029EDD0.jpg" width="544" height="368" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Материалы доклада:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;- &lt;a href="http://dev.net.ua/files/folders/unetameetings/entry9466.aspx"&gt;dev.net.ua&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;- &lt;a href="http://cid-7ef2f09b7178758f.skydrive.live.com/browse.aspx/.Public/Uneta/Transparent%20Data%20Encryption"&gt;SkyDrive&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Ссылки по теме:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;- &lt;a href="http://msdn.microsoft.com/ru-ru/library/bb934049.aspx"&gt;Основные сведения о TDE&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;- &lt;a href="http://msdn.microsoft.com/ru-ru/library/cc278098(en-us).aspx"&gt;Database Encryption in SQL Server 2008 Enterprise Edition&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;- &lt;a href="http://msdn.microsoft.com/ru-ru/library/bb510589.aspx"&gt;Обеспечение безопасности в SQL Server&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;- &lt;a href="http://technet.microsoft.com/ru-ru/library/ms189586.aspx"&gt;Иерархия средств шифрования&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;- &lt;a href="http://www.gotdotnet.ru/blogs/yliberman/6085/"&gt;SQL Server 2008 TDE (Ян Либерман)&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;- &lt;a href="http://www.gotdotnet.ru/blogs/yliberman/6089/"&gt;Прогнозирование "тормозов" от включения TDE (Ян Либерман)&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;- &lt;a href="http://www.gotdotnet.ru/blogs/yliberman/6091/"&gt;TDE в разрезе (Ян Либерман)&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;div class="vcard"&gt;&lt;img style="float:left;margin-right:4px;" class="photo" alt="photo of Денис Резник" src="http://dev.net.ua/photos/denisreznik/images/8764/original.aspx" /&gt;&lt;span class="fn n"&gt;&lt;span class="given-name"&gt;Денис&lt;/span&gt; &lt;span class="given-family"&gt;Резник&lt;/span&gt; &lt;/span&gt;      &lt;div class="org"&gt;LPPSoft&lt;/div&gt;      &lt;div&gt;&lt;a class="email" href="mailto:DenisReznik@live.ru"&gt;DenisReznik@live.ru&lt;/a&gt;&lt;/div&gt;      &lt;div class="adr"&gt;&lt;span class="locality"&gt;Харьков&lt;/span&gt;, &lt;span class="country-name"&gt;Украина&lt;/span&gt;&lt;/div&gt;      &lt;div&gt;&lt;a class="url" href="http://dev.net.ua/blogs/denisreznik/"&gt;http://dev.net.ua/blogs/denisreznik/&lt;/a&gt;&lt;/div&gt;   &lt;/div&gt;&lt;/blockquote&gt;&lt;img src="http://dev.net.ua/aggbug.aspx?PostID=9464" width="1" height="1"&gt;</content><author><name>Denis Reznik</name><uri>http://dev.net.ua/members/Denis+Reznik.aspx</uri></author><category term="SQL Server 2008" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/SQL+Server+2008/default.aspx" /><category term="SQL Server" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/SQL+Server/default.aspx" /><category term="UNETA" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/UNETA/default.aspx" /><category term="ХНУРЭ" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/_25041D04230420042D04_/default.aspx" /><category term="Харьков" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/_2504300440044C043A043E043204_/default.aspx" /><category term="Transparent Data Encryption" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/Transparent+Data+Encryption/default.aspx" /><category term="Прозрачное шифрование данных" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/_1F0440043E0437044004300447043D043E043504_+_48043804440440043E04320430043D0438043504_+_340430043D043D044B044504_/default.aspx" /><category term="TDE" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/TDE/default.aspx" /></entry><entry><title>Какая класная штука MDW</title><link rel="alternate" type="text/html" href="http://dev.net.ua/blogs/denisreznik/archive/2010/02/15/9366.aspx" /><id>http://dev.net.ua/blogs/denisreznik/archive/2010/02/15/9366.aspx</id><published>2010-02-15T21:27:55Z</published><updated>2010-02-15T21:27:55Z</updated><content type="html">&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;Какая классная штука &lt;a href="http://msdn.microsoft.com/ru-ru/library/bb677306.aspx" target="_blank"&gt;Management Data Warehouse&lt;/a&gt;&amp;quot; – в который раз подумал я, собираясь идти домой в пятницу… &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Теперь немного предыстории. В пятницу вечером, сразу после встречи UNETA пришлось ехать в офис, т.к. заказчик обрывал трубку и &amp;quot;просил&amp;quot; сделать, чтобы сайт не тормозил. Делать нечего, тем более, что лучше сразу, чем потом на выходных. Еду в офис и первым делом открываю сайт. Таки да, тормозит. На сервере БД такая картина: проц стабильно загружен на 100%, собственно поэтому сайт так медленно работает. Activity Monitor не запускается, профайлером ловить долго. И, в который раз, я порадовался, что в своё время уговорил заказчика, что нам нужно настроить на сервере MDW. В течении 2-х минут я определил виновника. Им оказался запрос на подсчёт данных (этим же днём по требованию заказчика был изменён алгоритм, но при небольшой нагрузке его работы не было заметно, зато при росте нагрузки на сервер, простой COUNT скушал все ресурсы). Ещё в течении 20 мин оптимизировал запрос.&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;Всё таки класная штука Management Data Warehouse&amp;quot; - в который раз подумал я, собираясь идти домой. Впереди были спокойные выходные…&lt;a href="http://dev.net.ua/blogs/denisreznik/query_statistics_210BB280.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;margin-left:0px;border-left-width:0px;margin-right:0px;" title="query_statistics" border="0" alt="query_statistics" align="right" src="http://dev.net.ua/blogs/denisreznik/query_statistics_thumb_3F09C074.jpg" width="431" height="322" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Ссылки по теме:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;- &lt;a href="http://msdn.microsoft.com/ru-ru/library/bb677179.aspx"&gt;Data Collection&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;- &lt;a href="http://msdn.microsoft.com/ru-ru/library/bb677306.aspx"&gt;Management Data Warehouse&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;- &lt;a href="http://dev.net.ua/blogs/denisreznik/archive/2008/08/04/6591.aspx"&gt;Обзор Performance Studio&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;&lt;img style="float:left;margin-right:4px;" class="photo" alt="photo of Денис Резник" src="http://dev.net.ua/photos/denisreznik/images/8764/original.aspx" width="299" height="59" /&gt;&lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;blockquote&gt;   &lt;div class="vcard"&gt;&lt;span class="fn n"&gt;&lt;span class="given-name"&gt;Денис&lt;/span&gt; &lt;span class="given-family"&gt;Резник&lt;/span&gt; &lt;/span&gt;      &lt;div class="org"&gt;LPP Soft, .Net Team Lead&lt;/div&gt;      &lt;div&gt;&lt;a class="email" href="mailto:DenisReznik@live.ru"&gt;DenisReznik@live.ru&lt;/a&gt;&lt;/div&gt;      &lt;div class="adr"&gt;&lt;span class="locality"&gt;Харьков&lt;/span&gt;, &lt;span class="country-name"&gt;Украина&lt;/span&gt;&lt;/div&gt;      &lt;div&gt;&lt;a class="url" href="http://dev.net.ua/blogs/denisreznik/"&gt;http://dev.net.ua/blogs/denisreznik/&lt;/a&gt;&lt;/div&gt;   &lt;/div&gt;&lt;/blockquote&gt;&lt;img src="http://dev.net.ua/aggbug.aspx?PostID=9366" width="1" height="1"&gt;</content><author><name>Denis Reznik</name><uri>http://dev.net.ua/members/Denis+Reznik.aspx</uri></author><category term="SQL Server 2008" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/SQL+Server+2008/default.aspx" /><category term="Management Data Warehouse" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/Management+Data+Warehouse/default.aspx" /><category term="Data Collector" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/Data+Collector/default.aspx" /><category term="SQL Server" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/SQL+Server/default.aspx" /><category term="Performance Tuning" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/Performance+Tuning/default.aspx" /><category term="MDW" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/MDW/default.aspx" /></entry><entry><title>Материалы доклада &quot;Выбор стратегии резервного копирования БД&quot;</title><link rel="alternate" type="text/html" href="http://dev.net.ua/blogs/denisreznik/archive/2010/02/13/9359.aspx" /><id>http://dev.net.ua/blogs/denisreznik/archive/2010/02/13/9359.aspx</id><published>2010-02-13T16:13:31Z</published><updated>2010-02-13T16:13:31Z</updated><content type="html">&lt;p class="zemanta-img"&gt;&lt;/p&gt;  &lt;p class="zemanta-img-attribution"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Вчера состоялась очередная встреча профессиональной группы .Net разработчиков UNETA, на которой я выступал с докладом на тему &amp;quot;Выбор стратегии резервного копирования БД в SQL Server 2008&amp;quot;.&amp;#160; В докладе рассматривались варианты резервного копирования данных, доступные в SQL Server 2008, механизмы резервного копирования данных и лога транзакций и те принципы, на основе которых строится выбор стратегии Резервного копирования\Восстановления базы данных. &lt;/p&gt;  &lt;p class="zemanta-img-attribution"&gt;Презентацию можно скачать с &lt;a href="http://dev.net.ua/files/folders/unetameetings/entry9354.aspx" target="_blank"&gt;dev.net.ua&lt;/a&gt; или с моего &lt;a href="http://cid-7ef2f09b7178758f.skydrive.live.com/self.aspx/.Public/Uneta/Backup%20and%20Recovery.pptx" target="_blank"&gt;SkyDrive&lt;/a&gt;.&lt;/p&gt;  &lt;p class="zemanta-img-attribution"&gt;Если есть вопросы по теме доклада, пишите мне на &lt;a href="mailto:DenisReznik@live.ru"&gt;DenisReznik@live.ru&lt;/a&gt;.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p class="zemanta-img-attribution"&gt;&lt;a href="http://dev.net.ua/blogs/denisreznik/question_4F3C5CFD.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;margin-left:0px;border-left-width:0px;margin-right:0px;" title="question" border="0" alt="question" src="http://dev.net.ua/blogs/denisreznik/question_thumb_2D70846C.jpg" width="440" height="331" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Материалы доклада:&lt;/p&gt;  &lt;blockquote&gt;   &lt;div class="zemanta-pixie"&gt;- &lt;a href="http://dev.net.ua/files/folders/unetameetings/entry9354.aspx"&gt;dev.net.ua&lt;/a&gt;&lt;/div&gt;    &lt;div class="zemanta-pixie"&gt;- &lt;a href="http://cid-7ef2f09b7178758f.skydrive.live.com/self.aspx/.Public/Uneta/Backup%20and%20Recovery.pptx"&gt;SkyDrive&lt;/a&gt;&lt;/div&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Ссылки по теме:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;- &lt;a href="http://technet.microsoft.com/ru-ru/library/ms191239.aspx"&gt;Введение в стратегию резервного копирования и восстановления в SQL Server&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;- &lt;a href="http://technet.microsoft.com/ru-ru/library/ms190217.aspx"&gt;Резервное копирование в модели полного восстановления&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;- &lt;a href="http://technet.microsoft.com/ru-ru/library/ms190692.aspx"&gt;Резервное копирование с использованием модели восстановления с неполным протоколированием&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;- &lt;a href="http://technet.microsoft.com/ru-ru/library/ms191164.aspx"&gt;Резервное копирование при простой модели восстановления&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;- &lt;a href="http://technet.microsoft.com/ru-ru/library/ms175199.aspx"&gt;Реализация сценариев восстановления&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;- &lt;a href="http://technet.microsoft.com/ru-ru/library/ms190954.aspx"&gt;Рекомендации по оптимизации производительности резервного копирования&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;div class="vcard"&gt;&lt;img style="float:left;margin-right:4px;" class="photo" alt="photo of Денис Резник" src="http://dev.net.ua/photos/denisreznik/images/8764/original.aspx" /&gt;&lt;span class="fn n"&gt;&lt;span class="given-name"&gt;Денис&lt;/span&gt; &lt;span class="given-family"&gt;Резник&lt;/span&gt; &lt;/span&gt;      &lt;div class="org"&gt;LPP Soft, .Net Team Lead&lt;/div&gt;      &lt;div&gt;&lt;a class="email" href="mailto:DenisReznik@live.ru"&gt;DenisReznik@live.ru&lt;/a&gt;&lt;/div&gt;      &lt;div class="adr"&gt;&lt;span class="locality"&gt;Харьков&lt;/span&gt;, &lt;span class="country-name"&gt;Украина&lt;/span&gt;&lt;/div&gt;      &lt;div&gt;&lt;a class="url" href="http://dev.net.ua/blogs/denisreznik/"&gt;http://dev.net.ua/blogs/denisreznik/&lt;/a&gt;&lt;/div&gt;   &lt;/div&gt;&lt;/blockquote&gt;&lt;img src="http://dev.net.ua/aggbug.aspx?PostID=9359" width="1" height="1"&gt;</content><author><name>Denis Reznik</name><uri>http://dev.net.ua/members/Denis+Reznik.aspx</uri></author><category term="SQL Server 2008" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/SQL+Server+2008/default.aspx" /><category term="SQL Server" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/SQL+Server/default.aspx" /><category term="UNETA" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/UNETA/default.aspx" /><category term="ХНУРЭ" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/_25041D04230420042D04_/default.aspx" /><category term="Харьков" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/_2504300440044C043A043E043204_/default.aspx" /><category term="Лог транзакций" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/_1B043E043304_+_4204400430043D04370430043A04460438043904_/default.aspx" /><category term="Restore" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/Restore/default.aspx" /><category term="Transaction log" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/Transaction+log/default.aspx" /><category term="Резервное копирование" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/_2004350437043504400432043D043E043504_+_3A043E043F04380440043E04320430043D0438043504_/default.aspx" /><category term="Backup" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/Backup/default.aspx" /><category term="Модель восстановления" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/_1C043E04340435043B044C04_+_32043E0441044104420430043D043E0432043B0435043D0438044F04_/default.aspx" /><category term="Recovery model" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/Recovery+model/default.aspx" /></entry><entry><title>Временные таблицы, табличные переменные и tempdb</title><link rel="alternate" type="text/html" href="http://dev.net.ua/blogs/denisreznik/archive/2010/01/31/9315.aspx" /><id>http://dev.net.ua/blogs/denisreznik/archive/2010/01/31/9315.aspx</id><published>2010-01-31T21:33:31Z</published><updated>2010-01-31T21:33:31Z</updated><content type="html">&lt;div class="zemanta-img"&gt;   &lt;p class="zemanta-img-attribution"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Довольно часто приходится слышать то, что различие между &lt;a href="http://msdn.microsoft.com/ru-ru/library/ms175010.aspx" target="_blank"&gt;табличными переменными&lt;/a&gt; и &lt;a href="http://www.sqlteam.com/article/temporary-tables" target="_blank"&gt;временными таблицами&lt;/a&gt; заключается в том, что первые всегда хранятся в памяти, а последние в tempdb. Но на самом деле это миф. И временные таблицы, и табличные переменные, создаются в tempdb (так как обязательно должно быть постоянное хранилище данных, на случай, если памяти всё же не хватит).&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Убедиться в том, что табличные переменные создаются в tempdb так же, как и временные таблицы, можно проделав вот такой опыт:&lt;/p&gt;  &lt;blockquote&gt;   &lt;div id="codeSnippetWrapper"&gt;     &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:41.23%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;height:80px;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;&lt;span style="color:#0000ff;"&gt;SELECT&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;COUNT&lt;/span&gt;(*) &lt;span style="color:#0000ff;"&gt;FROM&lt;/span&gt; tempdb.sys.tables;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;GO&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;DECLARE&lt;/span&gt; @table_var &lt;span style="color:#0000ff;"&gt;table&lt;/span&gt;(id &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt;);&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;SELECT&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;COUNT&lt;/span&gt;(*) &lt;span style="color:#0000ff;"&gt;FROM&lt;/span&gt; tempdb.sys.tables;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;GO&lt;/span&gt;&lt;/pre&gt;

    &lt;br /&gt;&lt;/div&gt;
&lt;/blockquote&gt;

&lt;div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Результат выполнения 2-го &lt;font size="2"&gt;&lt;font color="#ff00ff"&gt;COUNT&lt;/font&gt;&lt;font color="#808080"&gt;(*) &lt;/font&gt;&lt;font color="#000000"&gt;будет на 1 больше чем первого. Следовательно, в результате объявления табличной переменной в tempdb создалась таблица, и в способе хранения данных они не особо отличаются. Давайте теперь посмотрим на отличия табличных переменных от временных таблиц:&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;

&lt;div&gt;&amp;#160;&lt;/div&gt;

&lt;div&gt;&lt;font size="2"&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160; Преимущества:&lt;/strong&gt;&lt;/font&gt;&lt;/div&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;font size="2"&gt;Автоматически очищаются в конце функции, хранимой процедуры или пакета, где они были определены&lt;/font&gt; &lt;/li&gt;

  &lt;li&gt;При использовании в хранимых процедурах табличных переменных приходится прибегать к рекомпиляциям реже, чем при использовании временных таблиц &lt;/li&gt;

  &lt;li&gt;Транзакции с использованием табличных переменных продолжаются только во время процесса обновления соответствующих табличных переменных. Поэтому табличные переменные реже подвергаются блокировке и требуют меньших ресурсов для ведения журналов регистрации &lt;/li&gt;

  &lt;li&gt;Табличной переменной можно присвоить результат выполнения табличной функции, для повторного использования результатов &lt;/li&gt;

  &lt;li&gt;Табличную переменную можно передавать как параметр в хранимую процедуру (SQL Server 2008) &lt;/li&gt;
&lt;/ul&gt;

&lt;div&gt;&lt;font size="2"&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160; Недостатки:&lt;/strong&gt;&lt;/font&gt;&lt;/div&gt;

&lt;ul&gt;
  &lt;li&gt;На табличных переменных нельзя создавать некластерные индексы &lt;/li&gt;

  &lt;li&gt;Табличные переменные не содержат статистику &lt;/li&gt;

  &lt;li&gt;Табличные переменные не могут использоваться в INSERT EXEC или SELECT INTO &lt;/li&gt;

  &lt;li&gt;Запросы, изменяющие табличные переменные, не создают параллельных планов выполнения запроса &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Общие &lt;a href="http://support.microsoft.com/default.aspx/kb/305977" target="_blank"&gt;рекомендации Microsoft&lt;/a&gt;, относительно использования табличных переменных таковы: &amp;quot;Используйте их везде, где это возможно, кроме тех случаев, когда у вас хранятся значительные объёмы данных, и присутствует повторное использование таблиц&amp;quot;. Кроме того, отмечено, что сценарии использования могут быть разными, и в каждом конкретном случае нужно смотреть и пробовать что вам больше подходит.&lt;/p&gt;

&lt;p&gt;Ссылки по теме:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;- &lt;a href="http://msdn.microsoft.com/ru-ru/library/ms175010.aspx"&gt;Табличные переменные (MSDN)&lt;/a&gt;&lt;/p&gt;

  &lt;p&gt;- &lt;a href="http://www.sqlteam.com/article/temporary-tables"&gt;Временные таблицы&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;- &lt;a href="http://support.microsoft.com/default.aspx/kb/305977"&gt;FAQ по использованию табличных переменных&lt;/a&gt;&lt;/p&gt;

  &lt;p&gt;- &lt;a href="http://www.sqlskills.com/blogs/Kimberly/post/Understanding-TempDB-table-variables-v-temp-tables-and-Improving-throughput-for-TempDB.aspx"&gt;Блог Kimberly Tripp&lt;/a&gt;&lt;/p&gt;

  &lt;p&gt;- &lt;a href="http://www.sqlservercentral.com/blogs/cybersql/archive/2009/12/15/yes-table-variables-and-temp-tables-both-use-the-tempdb.aspx"&gt;Блог Ken Simmons&lt;/a&gt;&lt;/p&gt;

  &lt;p&gt;- &lt;a href="http://blog.sqlauthority.com/2009/12/15/sql-server-difference-temptable-and-table-variable-temptable-in-memory-a-myth/"&gt;Блог Pinal Dave&lt;/a&gt;&lt;/p&gt;

  &lt;div class="vcard"&gt;&lt;img style="float:left;margin-right:4px;" class="photo" alt="photo of Денис Резник" src="http://dev.net.ua/photos/denisreznik/images/8764/original.aspx" /&gt;&lt;span class="fn n"&gt;&lt;span class="given-name"&gt;Денис&lt;/span&gt; &lt;span class="given-family"&gt;Резник&lt;/span&gt; &lt;/span&gt;

    &lt;div class="org"&gt;LPP Soft, .Net Team Lead&lt;/div&gt;

    &lt;div&gt;&lt;a class="email" href="mailto:DenisReznik@live.ru"&gt;DenisReznik@live.ru&lt;/a&gt;&lt;/div&gt;

    &lt;div class="adr"&gt;&lt;span class="locality"&gt;Харьков&lt;/span&gt;, &lt;span class="country-name"&gt;Украина&lt;/span&gt;&lt;/div&gt;

    &lt;div&gt;&lt;a class="url" href="http://dev.net.ua/blogs/denisreznik/"&gt;http://dev.net.ua/blogs/denisreznik/&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;/blockquote&gt;&lt;img src="http://dev.net.ua/aggbug.aspx?PostID=9315" width="1" height="1"&gt;</content><author><name>Denis Reznik</name><uri>http://dev.net.ua/members/Denis+Reznik.aspx</uri></author><category term="SQL Server 2008" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/SQL+Server+2008/default.aspx" /><category term="SQL Server" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/SQL+Server/default.aspx" /><category term="Миф" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/_1C0438044404_/default.aspx" /><category term="Table Variables" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/Table+Variables/default.aspx" /><category term="Табличные переменные" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/_2204300431043B04380447043D044B043504_+_3F043504400435043C0435043D043D044B043504_/default.aspx" /><category term="Temp Tables" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/Temp+Tables/default.aspx" /><category term="Временные таблицы" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/_1204400435043C0435043D043D044B043504_+_4204300431043B04380446044B04_/default.aspx" /></entry><entry><title>Материалы доклада &quot;Resource Governor: управление ресурсами в SQL Server 2008&quot;</title><link rel="alternate" type="text/html" href="http://dev.net.ua/blogs/denisreznik/archive/2010/01/30/9305.aspx" /><id>http://dev.net.ua/blogs/denisreznik/archive/2010/01/30/9305.aspx</id><published>2010-01-30T12:32:36Z</published><updated>2010-01-30T12:32:36Z</updated><content type="html">&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 29 января состоялась &lt;a href="http://dev.net.ua/blogs/katerinadrobotko/archive/2010/01/26/9276.aspx"&gt;встреча UNETA&lt;/a&gt;, которая проходила в новом формате. На встрече я выступал с докладом на тему “Resource Governor: управление ресурсами в SQL Server 2008”. В докладе был представлен обзор компонента Resource Governor. Рассматривались его возможности, механизм управления ресурсами, основные сценарии использования. Материалы доклада находятся здесь - &lt;a href="http://x2u.ms/11mm" target="_blank"&gt;http://x2u.ms/11mm&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Материалы доклада:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;- &lt;a href="http://dev.net.ua/files/folders/unetameetings/entry9303.aspx" target="_blank"&gt;dev.net.ua&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;- &lt;a href="http://cid-7ef2f09b7178758f.skydrive.live.com/self.aspx/.Public/Uneta/Resource%20Governor.zip" target="_blank"&gt;SkyDrive&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Ссылки по теме:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;- &lt;a href="http://msdn.microsoft.com/ru-ru/library/bb933866.aspx"&gt;Управление рабочей нагрузкой и ресурсами SQL Server&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;- &lt;a href="http://msdn.microsoft.com/ru-ru/library/bb933944.aspx"&gt;Сценарии управления рабочей нагрузкой регулятора ресурсов&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;- &lt;a href="http://www.gotdotnet.ru/blogs/denish/1957/"&gt;Resource Governor Часть 1 (Блог Николая Денищенко)&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;- &lt;a href="http://www.gotdotnet.ru/blogs/denish/1958/"&gt;Resource Governor Часть 2 (Блог Николая Денищенко)&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;- &lt;a href="http://www.gotdotnet.ru/blogs/denish/1959/"&gt;Resource Governor Часть 3 (Блог Николая Денищенко)&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;div class="vcard"&gt;&lt;img style="float:left;margin-right:4px;" class="photo" alt="photo of Денис Резник" src="http://dev.net.ua/photos/denisreznik/images/8764/original.aspx" /&gt;&lt;span class="fn n"&gt;&lt;span class="given-name"&gt;Денис&lt;/span&gt; &lt;span class="given-family"&gt;Резник&lt;/span&gt; &lt;/span&gt;      &lt;div class="org"&gt;LPP Soft, .Net Team Lead&lt;/div&gt;      &lt;div&gt;&lt;a class="email" href="mailto:DenisReznik@live.ru"&gt;DenisReznik@live.ru&lt;/a&gt;&lt;/div&gt;      &lt;div class="adr"&gt;&lt;span class="locality"&gt;Харьков&lt;/span&gt;, &lt;span class="country-name"&gt;Украина&lt;/span&gt;&lt;/div&gt;      &lt;div&gt;&lt;a class="url" href="http://dev.net.ua/blogs/denisreznik/"&gt;http://dev.net.ua/blogs/denisreznik/&lt;/a&gt;&lt;/div&gt;   &lt;/div&gt;&lt;/blockquote&gt;&lt;img src="http://dev.net.ua/aggbug.aspx?PostID=9305" width="1" height="1"&gt;</content><author><name>Denis Reznik</name><uri>http://dev.net.ua/members/Denis+Reznik.aspx</uri></author><category term="SQL Server 2008" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/SQL+Server+2008/default.aspx" /><category term="SQL Server" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/SQL+Server/default.aspx" /><category term="Classification" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/Classification/default.aspx" /><category term="Workload Group" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/Workload+Group/default.aspx" /><category term="Управление ресурсами" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/_23043F044004300432043B0435043D0438043504_+_40043504410443044004410430043C043804_/default.aspx" /><category term="Resource Pool" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/Resource+Pool/default.aspx" /><category term="Resource Governor" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/Resource+Governor/default.aspx" /></entry><entry><title>Бесплатные Веб-семинары по SQL Server</title><link rel="alternate" type="text/html" href="http://dev.net.ua/blogs/denisreznik/archive/2010/01/24/9273.aspx" /><id>http://dev.net.ua/blogs/denisreznik/archive/2010/01/24/9273.aspx</id><published>2010-01-24T15:44:57Z</published><updated>2010-01-24T15:44:57Z</updated><content type="html">&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Brent Ozar в &lt;a href="http://www.brentozar.com/archive/2010/01/upcoming-free-training-events/" target="_blank"&gt;своём блоге&lt;/a&gt; анонсировал несколько интересных мероприятий:&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 1) 28 января – 1-часовой вебкаст, на тему &amp;quot;But It Worked On My Machine!&amp;quot;. Будут рассмотрены вопросы поиска плохого кода и выявления распространённых ошибок.&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; &lt;a href="http://www.quest.com/events/listdetails.aspx?contentid=10848&amp;amp;technology=34&amp;amp;prod=&amp;amp;prodfamily=&amp;amp;loc=" target="_blank"&gt;Регистрация&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 2) 3 марта – 1-дневный семинар, посвящённый вопросам поиска неполадок и проблем с производительностью при помощи &lt;a href="http://msdn.microsoft.com/ru-ru/library/ms188754.aspx" target="_blank"&gt;Dynamic Management Views&lt;/a&gt;. Доклады будут 3-х уровней – от начального, до продвинутого.&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; &lt;a href="http://www.vconferenceonline.com/shows/spring10/quest/register/multireg.asp" target="_blank"&gt;Регистрация&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Более подробно, о мероприятиях, можно прочесть в блоге &lt;a href="http://www.brentozar.com/archive/2010/01/upcoming-free-training-events/" target="_blank"&gt;Brent Ozar&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Ссылки по теме:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;- &lt;a href="http://www.brentozar.com/archive/2010/01/upcoming-free-training-events/"&gt;Блог Brent Ozar&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;- &lt;a href="http://www.quest.com/events/listdetails.aspx?contentid=10848&amp;amp;technology=34&amp;amp;prod=&amp;amp;prodfamily=&amp;amp;loc="&gt;Регистрация на веб-каст, на тему &amp;quot;But It Worked On My Machine!&amp;quot;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;- &lt;a href="http://www.vconferenceonline.com/shows/spring10/quest/register/multireg.asp"&gt;Регистрация на семинар по Dynamic Management Views&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;- &lt;a href="http://msdn.microsoft.com/ru-ru/library/ms188754.aspx" target="_blank"&gt;Dynamic Management Views&lt;/a&gt;&lt;/p&gt;   &lt;img style="float:left;margin-right:4px;" class="photo" alt="photo of Денис Резник" src="http://dev.net.ua/photos/denisreznik/images/8764/original.aspx" /&gt;&lt;span class="fn n"&gt;&lt;span class="given-name"&gt;Денис&lt;/span&gt; &lt;span class="given-family"&gt;Резник&lt;/span&gt; &lt;/span&gt;    &lt;div class="org"&gt;LPP Soft, .Net Team Lead&lt;/div&gt;    &lt;div&gt;&lt;a class="email" href="mailto:DenisReznik@live.ru"&gt;DenisReznik@live.ru&lt;/a&gt;&lt;/div&gt;    &lt;div class="adr"&gt;&lt;span class="locality"&gt;Харьков&lt;/span&gt;, &lt;span class="country-name"&gt;Украина&lt;/span&gt;&lt;/div&gt;    &lt;div&gt;&lt;a class="url" href="http://dev.net.ua/blogs/denisreznik/"&gt;http://dev.net.ua/blogs/denisreznik/&lt;/a&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;img src="http://dev.net.ua/aggbug.aspx?PostID=9273" width="1" height="1"&gt;</content><author><name>Denis Reznik</name><uri>http://dev.net.ua/members/Denis+Reznik.aspx</uri></author><category term="SQL Server" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/SQL+Server/default.aspx" /><category term="DMV's" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/DMV_2700_s/default.aspx" /><category term="Webcast" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/Webcast/default.aspx" /><category term="Вебкаст" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/_1204350431043A04300441044204_/default.aspx" /><category term="Dynamic Management Views" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/Dynamic+Management+Views/default.aspx" /><category term="Virtual Event" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/Virtual+Event/default.aspx" /></entry><entry><title>Насколько случайным бывает Random</title><link rel="alternate" type="text/html" href="http://dev.net.ua/blogs/denisreznik/archive/2010/01/23/9271.aspx" /><id>http://dev.net.ua/blogs/denisreznik/archive/2010/01/23/9271.aspx</id><published>2010-01-23T13:52:32Z</published><updated>2010-01-23T13:52:32Z</updated><content type="html">&lt;div class="mycode"&gt;   &lt;div class="vcard"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Недавно один из членов моей комманды задал мне вопрос: &amp;quot;Почему генерация случайных чисел в .Net упорно выдаёт не рэндомные значения, а повторяющиеся?&amp;quot;. И последовательный вызов вот такого метода, всегда генерирует одну и ту же последовательность чисел:&lt;/div&gt;    &lt;div class="vcard"&gt;&amp;#160;&lt;/div&gt;    &lt;div id="codeSnippetWrapper"&gt;     &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;       &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;const&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; AllowableCharacters = &lt;span style="color:#006080;"&gt;&amp;quot;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789&amp;quot;&lt;/span&gt;;&lt;/pre&gt;


      &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt;         &lt;/pre&gt;


      &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; GenerateRandomString(&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; length)&lt;/pre&gt;


      &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt; {&lt;/pre&gt;


      &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; randomString = String.Empty;&lt;/pre&gt;


      &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;     Random random = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Random();&lt;/pre&gt;


      &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;for&lt;/span&gt; (&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; i = 0; i &amp;lt; length; i++)&lt;/pre&gt;


      &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum8"&gt;   8:&lt;/span&gt;         randomString += AllowableCharacters[random.Next(AllowableCharacters.Length)];&lt;/pre&gt;


      &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum9"&gt;   9:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


      &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum10"&gt;  10:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; randomString;&lt;/pre&gt;


      &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum11"&gt;  11:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
  &lt;/div&gt;

  &lt;div class="vcard"&gt;&amp;#160;&lt;/div&gt;

  &lt;div class="vcard"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Случай меня заинтересовал, и я полез в рефлектор чтобы понять причину такого поведения. Вот, что я там увидел:&lt;/div&gt;

  &lt;div class="vcard"&gt;&amp;#160;&lt;/div&gt;

  &lt;div id="codeSnippetWrapper"&gt;
    &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
      &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; Random() : &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;(Environment.TickCount) {}&lt;/pre&gt;
&lt;/div&gt;
  &lt;/div&gt;

  &lt;div class="vcard"&gt;&amp;#160;&lt;/div&gt;

  &lt;div class="vcard"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Наверное ни для кого не секрет, что генерация случайных чисел в .Net (и не только в .Net) базируется на использовании некоего начального значения, которое должно быть уникальным. Для получений таких значений часто используется уникальная, в данном контексте, метка времени. Как видно из кода, конструктор по умолчанию, в качестве такого, значения использует &lt;a href="http://msdn.microsoft.com/ru-ru/library/system.environment.tickcount.aspx" target="_blank"&gt;Environment.TickCount&lt;/a&gt;&amp;#160; - время, прошедшее со старта приложения, в миллисекундах. Т.е. получается, что если ваши объекты Random создаются с интервалом меньше миллиcекунды, при помощи конструктора по умолчанию – они будут инициализированы одним и тем же параметром, что в свою очередь влечёт генерацию одинаковых последовательностей &amp;quot;случайных&amp;quot; чисел.&lt;/div&gt;

  &lt;p class="vcard"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; На форумах можно встретить несколько вариантов решения проблемы, таких как передачу в конструктор более мелкого промежутка времени (например &lt;a href="http://msdn.microsoft.com/ru-ru/library/system.datetime.ticks.aspx" target="_blank"&gt;DateTime.Now.Ticks&lt;/a&gt;), задержка между вызовами методов при помощи &lt;a href="http://msdn.microsoft.com/ru-ru/library/d00bd51t.aspx" target="_blank"&gt;Thread.Sleep&lt;/a&gt;. Но исходя из всего вышесказанного, наилучшим варантом, гарантирующим генерацию случайных чисел, является использование одного экземпляра класса Random:&lt;/p&gt;

  &lt;div id="codeSnippetWrapper"&gt;
    &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
      &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; GenerateRealRandomString(&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; length, Random random)&lt;/pre&gt;


      &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;


      &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; randomString = String.Empty;&lt;/pre&gt;


      &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;for&lt;/span&gt; (&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; i = 0; i &amp;lt; length; i++)&lt;/pre&gt;


      &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;         randomString += AllowableCharacters[random.Next(AllowableCharacters.Length)];&lt;/pre&gt;


      &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


      &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; randomString;&lt;/pre&gt;
&lt;/div&gt;
  &lt;/div&gt;

  &lt;div class="vcard"&gt;&amp;#160;&lt;/div&gt;

  &lt;div class="vcard"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Где вызов метода, осуществляется таким образом:&lt;/div&gt;

  &lt;div class="vcard"&gt;&amp;#160;&lt;/div&gt;

  &lt;div id="codeSnippetWrapper"&gt;
    &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
      &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; Random random = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Random();&lt;/pre&gt;


      &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; Console.WriteLine(GenerateRealRandomString(10, random));&lt;/pre&gt;


      &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:'Courier New', courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt; Console.WriteLine(GenerateRealRandomString(10, random));&lt;/pre&gt;
&lt;/div&gt;
  &lt;/div&gt;

  &lt;p class="vcard"&gt;&amp;#160;&lt;/p&gt;

  &lt;p class="vcard"&gt;Материалы поста:&lt;/p&gt;

  &lt;blockquote&gt;
    &lt;p class="vcard"&gt;- &lt;a href="http://xtourl.com/324b" target="_blank"&gt;Насколько случайным бывает Random&lt;/a&gt;&lt;/p&gt;
  &lt;/blockquote&gt;

  &lt;p class="vcard"&gt;Ссылки по теме:&lt;/p&gt;

  &lt;blockquote&gt;
    &lt;div class="vcard"&gt;- &lt;a href="http://msdn.microsoft.com/ru-ru/library/system.random.aspx"&gt;Класс Random&lt;/a&gt;&lt;/div&gt;

    &lt;div class="vcard"&gt;- &lt;a href="http://msdn.microsoft.com/ru-ru/library/system.environment.tickcount.aspx"&gt;Environment.TickCount&lt;/a&gt;&lt;/div&gt;

    &lt;div class="vcard"&gt;- &lt;a href="http://msdn.microsoft.com/ru-ru/library/system.datetime.ticks.aspx"&gt;DateTime.Now.Ticks&lt;/a&gt;&lt;/div&gt;

    &lt;div class="vcard"&gt;- &lt;a href="http://msdn.microsoft.com/ru-ru/library/d00bd51t.aspx"&gt;Thread.Sleep&lt;/a&gt;&amp;#160;&lt;/div&gt;
  &lt;/blockquote&gt;

  &lt;div class="vcard"&gt;&lt;img style="float:left;margin-right:4px;" class="photo" alt="photo of Denis Reznik" src="http://dev.net.ua/photos/denisreznik/images/8764/original.aspx" /&gt;&lt;span class="fn n"&gt;&lt;span class="given-name"&gt;Denis&lt;/span&gt; &lt;span class="given-family"&gt;Reznik&lt;/span&gt; &lt;/span&gt;

    &lt;div class="org"&gt;LPP Soft, .Net Team Lead&lt;/div&gt;

    &lt;div&gt;&lt;a class="email" href="mailto:DenisReznik@live.ru"&gt;DenisReznik@live.ru&lt;/a&gt;&lt;/div&gt;

    &lt;div class="adr"&gt;&lt;span class="locality"&gt;Kharkov&lt;/span&gt;, &lt;span class="country-name"&gt;Ukraine&lt;/span&gt;&lt;/div&gt;

    &lt;div&gt;&lt;a class="url" href="http://dev.net.ua/blogs/denisreznik/"&gt;http://dev.net.ua/blogs/denisreznik/&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;&lt;img src="http://dev.net.ua/aggbug.aspx?PostID=9271" width="1" height="1"&gt;</content><author><name>Denis Reznik</name><uri>http://dev.net.ua/members/Denis+Reznik.aspx</uri></author><category term="Генерация случайных чисел" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/_130435043D04350440043004460438044F04_+_41043B0443044704300439043D044B044504_+_47043804410435043B04_/default.aspx" /><category term="Random" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/Random/default.aspx" /><category term="C#" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/C_2300_/default.aspx" /><category term=".Net" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/.Net/default.aspx" /></entry><entry><title>SQL Server 2008 R2 – Дата выхода</title><link rel="alternate" type="text/html" href="http://dev.net.ua/blogs/denisreznik/archive/2010/01/19/9252.aspx" /><id>http://dev.net.ua/blogs/denisreznik/archive/2010/01/19/9252.aspx</id><published>2010-01-19T21:41:27Z</published><updated>2010-01-19T21:41:27Z</updated><content type="html">&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Совсем недавно на сайте &lt;a href="http://blogs.technet.com/dataplatforminsider/default.aspx" target="_blank"&gt;Data Platform Insider&lt;/a&gt; анонсировали &lt;a href="http://blogs.technet.com/dataplatforminsider/archive/2010/01/19/sql-server-2008-r2-gets-an-official-date.aspx" target="_blank"&gt;дату выхода следующей версии SQL Server&lt;/a&gt;. Релиз SQL Server 2008 R2 состоится &lt;strong&gt;10 мая 2010&lt;/strong&gt; &lt;strong&gt;года&lt;/strong&gt;.&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Хочу вкратце напомнить ключевые возможности новой версии:&lt;/p&gt; &lt;p&gt;- &lt;a href="http://dev.net.ua/blogs/kosinsky/archive/2009/11/05/9004.aspx" target="_blank"&gt;Две новые редакции SQL Server&lt;/a&gt; (в том числе и бывший codename “Madison” - &lt;a href="http://msdn.microsoft.com/en-us/library/ee730351.aspx" target="_blank"&gt;Parallel Data Warehouse&lt;/a&gt;)&lt;/p&gt; &lt;p&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/cc645579(SQL.105).aspx" target="_blank"&gt;Multi-Server Administration and Data-Tier Application&lt;/a&gt; &lt;p&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/ee210682(SQL.105).aspx" target="_blank"&gt;PowerPivot for SharePoint&lt;/a&gt; &lt;p&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/ee633763(SQL.105).aspx" target="_blank"&gt;Master Data Services&lt;/a&gt; &lt;p&gt;- &lt;a href="http://www.microsoft.com/sqlserver/2008/en/us/R2-complex-event.aspx"&gt;StreamInsight&lt;/a&gt; &lt;p&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/ee240835(SQL.105).aspx" target="_blank"&gt;Улучшение сжатия Unicode данных&lt;/a&gt; &lt;p&gt;- &lt;a href="http://dev.net.ua/blogs/denisreznik/archive/2009/11/22/9044.aspx" target="_blank"&gt;Работа с SQL Azure Database из SSMS&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Об этих и других изменениях в SQL Server вы можете прочесть в&amp;nbsp; &lt;a href="http://msdn.microsoft.com/en-us/library/ee240835(SQL.105).aspx" target="_blank"&gt;разделе MSDN, посвященному SQL Server 2008 R2&lt;/a&gt;, который уже переводится на русский язык. &lt;p&gt;Ссылки по теме: &lt;blockquote&gt; &lt;p&gt;- &lt;a href="http://blogs.technet.com/dataplatforminsider/archive/2010/01/19/sql-server-2008-r2-gets-an-official-date.aspx"&gt;Анонс выхода SQL Server 2008 R2&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/bb500435(SQL.105).aspx"&gt;Изменения в SQL Server 2008 R2&lt;/a&gt; &lt;p&gt;- &lt;a href="http://dev.net.ua/blogs/denisreznik/archive/2009/11/22/9044.aspx" target="_blank"&gt;Работа с SQL Azure Database из SSMS&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://dev.net.ua/aggbug.aspx?PostID=9252" width="1" height="1"&gt;</content><author><name>Denis Reznik</name><uri>http://dev.net.ua/members/Denis+Reznik.aspx</uri></author><category term="SQL Server" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/SQL+Server/default.aspx" /><category term="SQL Server 2008 R2" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/SQL+Server+2008+R2/default.aspx" /><category term="Анонс" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/_10043D043E043D044104_/default.aspx" /><category term="Release Date" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/Release+Date/default.aspx" /></entry><entry><title>Режим бога в Windows 7</title><link rel="alternate" type="text/html" href="http://dev.net.ua/blogs/denisreznik/archive/2010/01/13/9208.aspx" /><id>http://dev.net.ua/blogs/denisreznik/archive/2010/01/13/9208.aspx</id><published>2010-01-13T21:50:25Z</published><updated>2010-01-13T21:50:25Z</updated><content type="html">&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Наверняка это уже не новость, и поисковики пестрят кучей заметок на эту тему, но всё же что это? Да ещё и с таким интригующим названием :) Вот цитата из новостной леты:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;“&lt;b&gt;На прошлой неделе Инна Фрид (Ina Fried) из CNET News.com заявила в сети об обнаружении в Windows 7 скрытой возможности, которая получила название “режима бога” или GodMode. И хотя в действительности никаких божественных привилегий эта возможность не дает, ее использование может понравиться некоторым пользователям.&lt;/b&gt;”&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Чтобы включить “режим бога” нужно создать на рабочем столе новую папку и назвать её “GodMode.{ED7BA470-8E54-465E-825C-99712043E01C}”. В результате чего значок папки изменится, и по двойному клику откроется окно, содержащее все элементы панели управления нижнего уровня в одном месте:&lt;/p&gt; &lt;p&gt;&lt;a href="http://dev.net.ua/blogs/denisreznik/GodMode_5AA571E2.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:block;float:none;margin-left:auto;border-top:0px;margin-right:auto;border-right:0px;" title="GodMode" border="0" alt="GodMode" src="http://dev.net.ua/blogs/denisreznik/GodMode_thumb_29C2BA77.jpg" width="661" height="530"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; В семёрке этот трюк проделывается без проблем. В теории (не пробовал) должно работать на &lt;a href="http://blogs.lessthandot.com/index.php/ITProfessionals/EthicsIT/how-to-enable-godmode-on-windows-7?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+LessThanDotBlogs+%28LessThanDot+-+All+Blogs%29&amp;amp;utm_content=Google+Reader" target="_blank"&gt;32-х битных Vista и Server 2008&lt;/a&gt;. “Божественного”, как видите, здесь ничего нет, но то, что это возможность скрытая, да и само название “GodMode” подогревает интерес, согласитесь :)&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Но, на самом деле, эта возможность не совсем скрытая. Элементам панели управления присвоены &lt;a href="http://msdn.microsoft.com/en-us/library/ee330741(VS.85).aspx" target="_blank"&gt;канонические имена для программного запуска этих элементов&lt;/a&gt;, и &lt;a href="http://msdn.microsoft.com/en-us/library/cc144096(VS.85).aspx#virtual" target="_blank"&gt;использовав вот такой гуид в имени папки&lt;/a&gt; - {E2E7934B-DCE5-43C4-9576-7FE4F75E7480} можно получить на своём рабочем столе натройки даты и времени. Недокументировано только само каноническое имя - {ED7BA470-8E54-465E-825C-99712043E01C} (поиск по MSDN выдал только ссылки на блоги).&amp;nbsp; А громкое название в имени папки, тоже можно заменить на что-то другое, например “test.{ED7BA470-8E54-465E-825C-99712043E01C}” даст нам тот же “режим бога” только с именем “test” :)&lt;/p&gt; &lt;p&gt;Ссылки по теме:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;- &lt;a href="http://news.cnet.com/8301-13860_3-10423985-56.html?tag=digg2"&gt;Блог открывателя “режима бога”&lt;/a&gt;&lt;/p&gt; &lt;p&gt;- &lt;a href="http://blogs.lessthandot.com/index.php/ITProfessionals/EthicsIT/how-to-enable-godmode-on-windows-7?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+LessThanDotBlogs+%28LessThanDot+-+All+Blogs%29&amp;amp;utm_content=Google+Reader"&gt;Блог SQLDenis&lt;/a&gt;&lt;/p&gt; &lt;p&gt;- &lt;a href="http://www.winline.ru/news/5984.php"&gt;Лента новостей winline.ru&lt;/a&gt;&lt;/p&gt; &lt;p&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/ee330741(VS.85).aspx"&gt;Канонические имена элементов панели управления&lt;/a&gt;&lt;/p&gt; &lt;p&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/cc144096(VS.85).aspx#virtual"&gt;Использование папок для доступа к элементам панели управления&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://dev.net.ua/aggbug.aspx?PostID=9208" width="1" height="1"&gt;</content><author><name>Denis Reznik</name><uri>http://dev.net.ua/members/Denis+Reznik.aspx</uri></author><category term="Windows" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/Windows/default.aspx" /><category term="Windows 7" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/Windows+7/default.aspx" /><category term="режим бога" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/_40043504360438043C04_+_31043E0433043004_/default.aspx" /><category term="god mode" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/god+mode/default.aspx" /></entry><entry><title>Microsoft Codenames</title><link rel="alternate" type="text/html" href="http://dev.net.ua/blogs/denisreznik/archive/2009/12/23/9150.aspx" /><id>http://dev.net.ua/blogs/denisreznik/archive/2009/12/23/9150.aspx</id><published>2009-12-22T22:10:18Z</published><updated>2009-12-22T22:10:18Z</updated><content type="html">&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Не знаю как вам, а мне очень нравятся различные &lt;a href="http://en.wikipedia.org/wiki/List_of_Microsoft_codenames" target="_blank"&gt;codenames&lt;/a&gt;, которые Microsoft даёт своим продуктам во время разработки. Над происхождением их никогда особо не задумывался, но, как оказалось, берутся они не с потолка, и в именовании продуктов есть определённый смысл.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Вот, например, кодовые имена известных вам семейств продуктов Microsoft:&lt;/p&gt; &lt;p&gt; &lt;table style="text-align:center;border-right-width:1px;width:45%;float:left;border-top-width:1px;border-bottom-width:1px;margin-left:20px;border-left-width:1px;"&gt;  &lt;tr style="background:#ddddd1;"&gt; &lt;td colspan="2"&gt;&lt;b&gt;Windows Client&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td style="background:#dddddd;"&gt;&lt;b&gt;Product&lt;/b&gt;&lt;/td&gt; &lt;td style="background:#dddddd;"&gt;&lt;b&gt;Codename&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td style="background:#eeeeee;"&gt;Windows XP &lt;/td&gt; &lt;td&gt;Whistler &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Windows Vista &lt;/td&gt; &lt;td style="background:#eeeeee;"&gt;Longhorn &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td style="background:#eeeeee;"&gt;Windows 7 &lt;/td&gt; &lt;td&gt;Blackomb &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Windows XP Starter Edition &lt;/td&gt; &lt;td style="background:#eeeeee;"&gt;Creekside &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;table style="text-align:center;border-right-width:1px;width:45%;float:right;border-top-width:1px;border-bottom-width:1px;border-left-width:1px;margin-right:20px;"&gt;  &lt;tr style="background:#ddddd1;"&gt; &lt;td colspan="2"&gt;&lt;b&gt;Development Tools&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td style="background:#dddddd;"&gt;&lt;b&gt;Product&lt;/b&gt;&lt;/td&gt; &lt;td style="background:#dddddd;"&gt;&lt;b&gt;Codename&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td style="background:#eeeeee;"&gt;Visual Studio 2005 &lt;/td&gt; &lt;td&gt;Whitbey &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Visual Studio 2008 &lt;/td&gt; &lt;td style="background:#eeeeee;"&gt;Orcas &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td style="background:#eeeeee;"&gt;Visual Studio Team System 2008 &lt;/td&gt; &lt;td&gt;Rosario &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Visual Studio 2010 &lt;/td&gt; &lt;td style="background:#eeeeee;"&gt;Hawaii &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Из этих таблиц видно, что кодовые имена продуктов семейства Windows – это названия горнолыжных курортов. А имена семейства Development Tools – названия островов. Интересно, правда? В своём вебкасте Mary Jo Foley (Microsoft Codename Queen) более подробно рассказывает о политике присвоения codenames продуктам Майкрософт: &lt;/p&gt; &lt;div style="text-align:center;margin-top:10px;margin-bottom:10px;"&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/CLbBYcesX4A&amp;amp;hl=ru_RU&amp;amp;fs=1&amp;amp;rel=0"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/CLbBYcesX4A&amp;amp;hl=ru_RU&amp;amp;fs=1&amp;amp;rel=0" type="application/x-shockwave-flash" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Более подробно об истории этих и многих других codenames, можно узнать из серии постов “Microsoft Codenames” в блоге Mary Jo Foley - &lt;a title="http://xtourl.com/22li" href="http://xtourl.com/22li" target="_blank"&gt;http://xtourl.com/22li&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Ссылки по теме:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;- &lt;a href="http://blogs.zdnet.com/topic/Microsoft+codenames.html"&gt;Серия постов, посвящённым Microsoft Codenames&lt;/a&gt;&lt;/p&gt; &lt;p&gt;- &lt;a href="http://en.wikipedia.org/wiki/List_of_Microsoft_codenames"&gt;Список различных codenames&lt;/a&gt;&lt;/p&gt; &lt;p&gt;- &lt;a href="http://news.zdnet.com/2422-13569_22-152877.html"&gt;Вебкаст Mary Jo Foley “Microsoft code names explained”&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://dev.net.ua/aggbug.aspx?PostID=9150" width="1" height="1"&gt;</content><author><name>Denis Reznik</name><uri>http://dev.net.ua/members/Denis+Reznik.aspx</uri></author><category term="Development Tools" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/Development+Tools/default.aspx" /><category term="Microsoft" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/Microsoft/default.aspx" /><category term="Windows" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/Windows/default.aspx" /><category term="Microsoft Codenames" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/Microsoft+Codenames/default.aspx" /></entry><entry><title>И снова о COUNT</title><link rel="alternate" type="text/html" href="http://dev.net.ua/blogs/denisreznik/archive/2009/12/20/9138.aspx" /><id>http://dev.net.ua/blogs/denisreznik/archive/2009/12/20/9138.aspx</id><published>2009-12-20T11:45:11Z</published><updated>2009-12-20T11:45:11Z</updated><content type="html">&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; После своего &lt;a href="http://dev.net.ua/blogs/denisreznik/archive/2009/11/17/9031.aspx" target="_blank"&gt;поста&lt;/a&gt;, рассказывающего о том, как можно оптимизировать подсчёт строк в таблице, мне несколько раз задавали вопрос о том, как работает &lt;a href="http://msdn.microsoft.com/ru-ru/library/ms175997.aspx" target="_blank"&gt;COUNT&lt;/a&gt;. И теперь, я хочу поделиться этой ценной информацией.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Функция подсчёта строк, всегда пробегает по всем записям таблицы, т.е. последовательно их перебирает в памяти (если не используется условие WHERE). С этим связан довольно распространённый миф: “COUNT(имя_поля) лучше использовать чем COUNT(*), т.к. мы явно указываем по какому полю делать перебор, и в этом случае оптимизатор будет использовать индекс”. На самом деле это не так. Если для таблицы созданы индексы, то перебирается листовой уровень индекса с наименьшим размером ключа, таким образом оптимизатор сам выбирает наиболее оптимальный план выполнения, в независимости от того, что вы указываете в условии COUNT. В этом можно убедиться, запустив пару скриптов.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Вначале создадим тестовую таблицу, заполним её данными и создадим необходимые для теста индексы (если вставить в таблицу меньшее количество записей (например 100), то использоваться будет IDX_BIG (думаю в этом случае оптимизатору просто не хватает информации)):&lt;/p&gt; &lt;blockquote style="background-color:lightgrey;"&gt;&lt;pre style="font-family:monospace;" class="tsql"&gt;&lt;span style="color:#0000ff;"&gt;CREATE&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;TABLE&lt;/span&gt; dbo.&lt;span style="color:#202020;"&gt;Test&lt;/span&gt;
&lt;span style="color:#808080;"&gt;(&lt;/span&gt;Id &lt;span style="color:#0000ff;"&gt;int &lt;/span&gt;&lt;span style="color:#808080;"&gt;NOT&lt;/span&gt; &lt;span style="color:#808080;"&gt;NULL&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;IDENTITY&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;&lt;span style="color:#000;"&gt;1&lt;/span&gt;,&lt;span style="color:#000;"&gt;1&lt;/span&gt;&lt;span style="color:#808080;"&gt;)&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;PRIMARY&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;KEY&lt;/span&gt;, SmallField &lt;span style="color:#0000ff;"&gt;tinyint &lt;/span&gt;&lt;span style="color:#808080;"&gt;NOT&lt;/span&gt; &lt;span style="color:#808080;"&gt;NULL&lt;/span&gt;, BigField &lt;span style="color:#0000ff;"&gt;bigint &lt;/span&gt;&lt;span style="color:#808080;"&gt;NOT&lt;/span&gt; &lt;span style="color:#808080;"&gt;NULL&lt;/span&gt;&lt;span style="color:#808080;"&gt;)&lt;/span&gt;
GO
&lt;span style="color:#0000ff;"&gt;CREATE&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;INDEX&lt;/span&gt; IDX_SMALL &lt;span style="color:#0000ff;"&gt;ON&lt;/span&gt; dbo.&lt;span style="color:#202020;"&gt;Test&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;SmallField&lt;span style="color:#808080;"&gt;)&lt;/span&gt;
GO
&lt;span style="color:#0000ff;"&gt;CREATE&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;INDEX&lt;/span&gt; IDX_BIG &lt;span style="color:#0000ff;"&gt;ON&lt;/span&gt; dbo.&lt;span style="color:#202020;"&gt;Test&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;BigField&lt;span style="color:#808080;"&gt;)&lt;/span&gt;
GO
&lt;span style="color:#0000ff;"&gt;INSERT&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;INTO&lt;/span&gt; dbo.&lt;span style="color:#202020;"&gt;Test&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;VALUES&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;&lt;span style="color:#000;"&gt;1&lt;/span&gt;, &lt;span style="color:#000;"&gt;2&lt;/span&gt;&lt;span style="color:#808080;"&gt;)&lt;/span&gt;
GO &lt;span style="color:#000;"&gt;1000&lt;/span&gt;&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; И выполним инструкции COUNT в различном формате:&lt;/p&gt;
&lt;blockquote style="background-color:lightgrey;"&gt;&lt;pre style="font-family:monospace;" class="tsql"&gt;&lt;span style="color:#0000ff;"&gt;SELECT&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;COUNT&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;&lt;span style="color:#808080;"&gt;*&lt;/span&gt;&lt;span style="color:#808080;"&gt;)&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;FROM&lt;/span&gt; dbo.&lt;span style="color:#202020;"&gt;Test&lt;/span&gt;
GO
&lt;span style="color:#0000ff;"&gt;SELECT&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;COUNT&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;BigField&lt;span style="color:#808080;"&gt;)&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;FROM&lt;/span&gt; dbo.&lt;span style="color:#202020;"&gt;Test&lt;/span&gt;
GO
&lt;span style="color:#0000ff;"&gt;SELECT&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;COUNT&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;&lt;span style="color:#000;"&gt;1&lt;/span&gt;&lt;span style="color:#808080;"&gt;)&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;FROM&lt;/span&gt; dbo.&lt;span style="color:#202020;"&gt;Test&lt;/span&gt;
GO&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Из планов выполнения видно, что в любом случае используется наименьший индекс IDX_SMALL:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dev.net.ua/blogs/denisreznik/count_plans_51072AC5.jpg" target="_blank"&gt;&lt;img style="border-right-width:0px;margin:10px auto;display:block;float:none;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="count_plans" border="0" alt="count_plans" src="http://dev.net.ua/blogs/denisreznik/count_plans_thumb_2743AFD2.jpg" width="502" height="346"&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Если удалить IDX_SMALL, то будет сканироваться IDX_BIG, т.к. в этом случае он станет самым маленьким. Если же удалить и его, будет сканироваться первичный ключ таблицы. В данном примере показан пример полного сканирования таблицы. Если у вас есть конкретное условие WHERE или поля NULL, то в запросе будет использоваться индекс указанного в запросе поля.&lt;/p&gt;
&lt;p&gt;PS: Думаю выкладывать скрипты, планы выполнения, и другие материалы используемые в постах, в свой Sky Drive - &lt;a title="http://xtourl.com/22et" href="http://xtourl.com/22et" target="_blank"&gt;http://xtourl.com/22et&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ссылки по теме:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;- &lt;a href="http://www.sqlskills.com/BLOGS/PAUL/post/Which-index-will-SQL-Server-use-to-count-all-rows.aspx"&gt;Блог Пола Рэндала&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://thehobt.blogspot.com/2008/12/debunking-myth-select-count-vs-select.html"&gt;Блог Аарона Альтона&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://msdn.microsoft.com/ru-ru/library/ms175997.aspx"&gt;Функция COUNT&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://dev.net.ua/blogs/denisreznik/archive/2009/11/17/9031.aspx"&gt;Альтернатива COUNT(*)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://xtourl.com/22et"&gt;Материалы поста&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://dev.net.ua/aggbug.aspx?PostID=9138" width="1" height="1"&gt;</content><author><name>Denis Reznik</name><uri>http://dev.net.ua/members/Denis+Reznik.aspx</uri></author><category term="SQL Server 2008" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/SQL+Server+2008/default.aspx" /><category term="SQL Server" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/SQL+Server/default.aspx" /><category term="COUNT" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/COUNT/default.aspx" /><category term="Index" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/Index/default.aspx" /><category term="Индекс" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/_18043D04340435043A044104_/default.aspx" /><category term="Миф" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/_1C0438044404_/default.aspx" /></entry><entry><title>Работа с SQL Azure Database - Вебкаст</title><link rel="alternate" type="text/html" href="http://dev.net.ua/blogs/denisreznik/archive/2009/12/11/9109.aspx" /><id>http://dev.net.ua/blogs/denisreznik/archive/2009/12/11/9109.aspx</id><published>2009-12-11T09:12:30Z</published><updated>2009-12-11T09:12:30Z</updated><content type="html">&lt;p align="justify"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; На встрече &lt;a href="http://dev.net.ua/blogs/katerinadrobotko/archive/2009/11/25/9049.aspx" target="_blank"&gt;UNETA 27 ноября&lt;/a&gt; я выступал с докладом на тему “SQL Azure Database”. Впоследствии я записал вебкаст на эту же тему. Вебкаст содержит краткий обзор возможностей SQL Azure Database, и демонстрации с моего доклада на&amp;nbsp; встрече UNETA. Посмотреть его можно на &lt;a href="http://www.techdays.in.ua/" target="_blank"&gt;techdays.in.ua&lt;/a&gt; - &lt;a title="http://www.techdays.in.ua/videos/2107.html" href="http://www.techdays.in.ua/videos/2107.html"&gt;http://www.techdays.in.ua/videos/2107.html&lt;/a&gt;. Полный вариант презентации можно скачать здесь - &lt;a title="http://dev.net.ua/files/folders/unetameetings/entry9068.aspx" href="http://dev.net.ua/files/folders/unetameetings/entry9068.aspx"&gt;http://dev.net.ua/files/folders/unetameetings/entry9068.aspx&lt;/a&gt;. Если у вас есть вопросы по данной теме, пишите в комментариях или на почту – DenisReznik[dog]live[dot]ru.&lt;/p&gt; &lt;p align="justify"&gt;Ссылки по теме:&lt;/p&gt; &lt;blockquote&gt; &lt;p align="justify"&gt;- &lt;a href="http://www.techdays.in.ua/videos/2107.html"&gt;Вебкаст на тему “Работа с SQL Azure Database”&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;- &lt;a href="http://dev.net.ua/files/folders/unetameetings/entry9068.aspx"&gt;Полный вариант презентации доклада “SQL Azure Database”&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;- &lt;a href="http://dev.net.ua/blogs/denisreznik/archive/2009/11/29/9070.aspx"&gt;Вопросы с доклада на тему “SQL Azure Database”&lt;/a&gt;&lt;/p&gt; &lt;p&gt;- &lt;a href="http://dev.net.ua/blogs/denisreznik/archive/2009/11/22/9044.aspx"&gt;Работа с SQL Azure с помощью SSMS&lt;/a&gt; &lt;p&gt;- &lt;a href="http://msdn.microsoft.com/en-us/sqlserver/dataservices/default.aspx"&gt;Сайт SQL Azure&lt;/a&gt; &lt;p&gt;- &lt;a href="http://dev.net.ua/blogs/denisreznik/archive/2009/07/17/8669.aspx"&gt;Цены на SQL Azure&lt;/a&gt; &lt;p&gt;- &lt;a href="http://sql.azure.com/"&gt;SQL Azure developer portal&lt;/a&gt; &lt;p&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/ee336281.aspx"&gt;T-SQL в SQL Azure Database&lt;/a&gt; &lt;p&gt;- &lt;a href="http://blogs.msdn.com/ssds/"&gt;Блог комманды SQL Azure&lt;/a&gt; &lt;p&gt;- &lt;a href="http://cloud.in.ua/"&gt;По дороге с облаками&lt;/a&gt; &lt;p&gt;- &lt;a href="http://microsoftpdc.com/Sessions/Tags/SQLAzure"&gt;Видео с PDC 2009, содержащее тэг “SQL Azure”&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://dev.net.ua/aggbug.aspx?PostID=9109" width="1" height="1"&gt;</content><author><name>Denis Reznik</name><uri>http://dev.net.ua/members/Denis+Reznik.aspx</uri></author><category term="SSMS" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/SSMS/default.aspx" /><category term="SQL Server" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/SQL+Server/default.aspx" /><category term="SQL Azure" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/SQL+Azure/default.aspx" /><category term="UNETA" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/UNETA/default.aspx" /><category term="SQL Server Management Studio" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/SQL+Server+Management+Studio/default.aspx" /><category term="T-SQL" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/T-SQL/default.aspx" /><category term="SQL Azure Database" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/SQL+Azure+Database/default.aspx" /><category term="Webcast" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/Webcast/default.aspx" /><category term="Вебкаст" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/_1204350431043A04300441044204_/default.aspx" /><category term="Видео" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/_12043804340435043E04_/default.aspx" /></entry><entry><title>Материалы доклада “SQL Azure Database”</title><link rel="alternate" type="text/html" href="http://dev.net.ua/blogs/denisreznik/archive/2009/11/29/9070.aspx" /><id>http://dev.net.ua/blogs/denisreznik/archive/2009/11/29/9070.aspx</id><published>2009-11-29T14:05:38Z</published><updated>2009-11-29T14:05:38Z</updated><content type="html">&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 27 ноября состоялась очередная &lt;a href="http://dev.net.ua/blogs/katerinadrobotko/archive/2009/11/25/9049.aspx" target="_blank"&gt;встреча UNETA&lt;/a&gt;, на которой я выступал с докладом о “SQL Azure Database”. В докладе был представлен обзор имеющихся возможностей, принципов работы, истории продукта, направлений развития, а также описана стратегия вывода продукта на рынок. Материалы доклада находятся здесь - &lt;a title="http://xtourl.com/229d" href="http://xtourl.com/229d"&gt;http://xtourl.com/229d&lt;/a&gt;.&lt;/p&gt; &lt;p&gt; И, в заключение, чтобы пост не получился таким скучным, хочу привести несколько наиболее актуальных вопросов, заданных в ходе доклада:&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Когда планируется выход продукта на рынок?&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;С 1-го января SQL Azure Database будет доступна для промышленного использования в США, странах юго-восточной Азии и северной Европы. У стран СНГ возможность использовать SQL Azure появится позже, но точные даты пока не известны.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Сколько нужно платить за использование?&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Есть 2 редакции, Web и Business Edition, ограниченные размером базы в 1 и 10 Гб соответственно. Web стоит $9.99 в месяц, Business $99.9 в месяц (хранение данных). Трафик тарифицируется погигабайтно: 10 центов входящий, 15 исходящий. Трафик между приложением, находящимся в Windows Azure и БД в SQL Azure Database не тарифицируется.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Для кого предназначен данный продукт?&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;В таком виде как сейчас SQL Azure Database больше всего подходит для стартапов (за счёт минимальных стартовые денежных вливаний) и для небольших компаний (ограничение на размер базы в 1 и 10 Гб), имеюших географически удалённые филиалы (респределение данных между географически удалёнными серверами).&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Чем обусловлено, то, что размер базы ограничен 1 и 10 Гб, для Web и Business Edition соответственно?&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Ответ с форумов майкрософт был таков, что это обусловлено текущими потребностями рынка и основан на результатах опроса. Но такая ценовая политика это только начало, в дальнейшем она будет двигаться в сторону “Pay as you go”, где пользователи будут платить за те ресурсы, которые они используют.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Есть ли похожие продукты?&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Да, Amazon уже представил &lt;a href="http://way2cloud.ru/post/2009/11/02/029099EE843CB14E84F89E075B768AD9.aspx" target="_blank"&gt;свой продукт&lt;/a&gt; общественности, и не за горами предоставление подобных сервисов от Google и других компаний.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Что с защитой данных? Есть ли сейчас какие-нибудь гарантии, того, что мои данные не пропадут?&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;С точки зрения высокой доступности, то уже сейчас есть механизм её поддержания (кроме, непосредственно БД, с которой вы работаете, хранится ещё 2 реплики, одна из которых, в случае падения основной, включается в работу). Важные данные с SQL Azure Database вы можете копировать локально с помощью пакетов SSIS, для предотвращения порчи или потери данных в результате каких-либо действий пользователя. В дальнейшем планируется функционал клонирования БД, позволяющий создвать копию вашей базы по требованию (1 пол. 2010 года) и реализация полноценного бэкапа, с возможностью восстановления данных на конкретный момент времени (2 пол. 2010 года).&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Что делать с конфиденциальными данными? Могу ли я доверить их Майкрософт?&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;С точки зрения защиты самих данных от несанкцинированного доступа, есть защита с помощью настраиваемых правил файервола, где вы можете ограничить список IP с которых может быть осуществлён доступ к данным. В то же время, зашиты от “Билла Гейтса” нет, и прозрачного шифрования данных, которое, на мой взгляд, могло бы стать решением этой проблемы, тоже пока нет, но планируется в дальнейшем. Сейчас же вы можете шифровать конфиденциальные данные перед предачей их в облако.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Ссылки по теме:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;- &lt;a href="http://dev.net.ua/files/folders/unetameetings/entry9068.aspx"&gt;Материалы доклада “SQL Azure Database”&lt;/a&gt;&lt;/p&gt; &lt;p&gt;- &lt;a href="http://dev.net.ua/blogs/denisreznik/archive/2009/11/22/9044.aspx"&gt;Работа с SQL Azure с помощью SSMS&lt;/a&gt;&lt;/p&gt; &lt;p&gt;- &lt;a href="http://msdn.microsoft.com/en-us/sqlserver/dataservices/default.aspx"&gt;Сайт SQL Azure&lt;/a&gt;&lt;/p&gt; &lt;p&gt;- &lt;a href="http://dev.net.ua/blogs/denisreznik/archive/2009/07/17/8669.aspx"&gt;Цены на SQL Azure&lt;/a&gt;&lt;/p&gt; &lt;p&gt;- &lt;a href="http://sql.azure.com/"&gt;SQL Azure developer portal&lt;/a&gt;&lt;/p&gt; &lt;p&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/ee336281.aspx"&gt;T-SQL в SQL Azure Database&lt;/a&gt;&lt;/p&gt; &lt;p&gt;- &lt;a href="http://blogs.msdn.com/ssds/"&gt;Блог комманды SQL Azure&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://dev.net.ua/aggbug.aspx?PostID=9070" width="1" height="1"&gt;</content><author><name>Denis Reznik</name><uri>http://dev.net.ua/members/Denis+Reznik.aspx</uri></author><category term="SQL Server" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/SQL+Server/default.aspx" /><category term="SQL Azure" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/SQL+Azure/default.aspx" /><category term="Cloud" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/Cloud/default.aspx" /><category term="UNETA" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/UNETA/default.aspx" /><category term="SQL Azure Database" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/SQL+Azure+Database/default.aspx" /><category term="ХНУРЭ" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/_25041D04230420042D04_/default.aspx" /><category term="Cloud Computing" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/Cloud+Computing/default.aspx" /><category term="Харьков" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/_2504300440044C043A043E043204_/default.aspx" /></entry><entry><title>Работа с SQL Azure Database</title><link rel="alternate" type="text/html" href="http://dev.net.ua/blogs/denisreznik/archive/2009/11/22/9044.aspx" /><id>http://dev.net.ua/blogs/denisreznik/archive/2009/11/22/9044.aspx</id><published>2009-11-22T18:52:42Z</published><updated>2009-11-22T18:52:42Z</updated><content type="html">&lt;p align="justify"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://www.microsoft.com/windowsazure/sqlazure/" target="_blank"&gt;SQL Azure Database&lt;/a&gt; – сервис хранения и обработки реляционных данных в облаке или, попросту говоря, “облачная” база данных. Первые версии и демонстрации продукта появились более года назад (тогда он ещё назывался SSDS – SQL Server Data Services), затем продукт был представлен как SQL Data Services на PDC 2008, и, впоследствии, &lt;a href="http://cloud.in.ua/post/2009/07/10/E78397A22DBAC748A78319064C339719.aspx" target="_blank"&gt;переименован в SQL Azure Database&lt;/a&gt;, который в скором времени выйдет в промышленную эксплуатацию. И вот, наконец-то, наряду с возможностью работы с данными с помощью T-SQL команд, с выпуском ноябрьского &lt;a href="http://www.microsoft.com/sqlserver/2008/en/us/R2Downloads.aspx" target="_blank"&gt;СTP SQL Server 2008 R2&lt;/a&gt; появилась возможность работать с SQL Server Database с помощью привычного нам инструмента – SQL Server Management Studio, что я конечно же попробовал, и теперь хочу поделиться своим опытом и впечатлениями.&lt;/p&gt; &lt;p align="justify"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Чтобы начать работу с SQL Azure Database нужен аккаунт SQL Azure. Если он у вас уже есть, идём на &lt;a title="https://sql.azure.com/" href="https://sql.azure.com/" target="_blank"&gt;sql.azure.com&lt;/a&gt;, если нет, то можно &lt;a href="http://go.microsoft.com/fwlink/?LinkID=149681&amp;amp;clcid=0x09" target="_blank"&gt;зарегестрироваться для получения приглашения&lt;/a&gt;. После того, как вы вошли в систему с помощью своего Live ID, вы увидите свой сервер. Сервер, в данном случае, не является экземпляром SQL Server, здесь это некая логическая единица. На сервере уже создана одна БД - master:&lt;/p&gt; &lt;div style="margin:10px 10px 10px 20px;"&gt;&lt;a href="http://dev.net.ua/blogs/denisreznik/sql_azure_server_21C8A928.jpg" target="_blank"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;margin-left:0px;border-left-width:0px;margin-right:0px;" title="sql_azure_server" border="0" alt="sql_azure_server" align="left" src="http://dev.net.ua/blogs/denisreznik/sql_azure_server_thumb_78DD941E.jpg" width="427" height="332"&gt;&lt;/a&gt;&lt;/div&gt; &lt;p style="marging-left:10px;" align="justify"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Удалённый доступ к SQL Asure Database по умолчанию отключён. Чтобы включить его нужно перейти на закладку “Firewall Settings” и добавить свой IP в список разрешённых адресов (IP определяется сам, вам только нужно скопировать и вставить его в поле. Мелочь, а приятно :)): &lt;/p&gt; &lt;p&gt;&lt;a href="http://dev.net.ua/blogs/denisreznik/firewall_settings_1747D508.jpg" target="_blank"&gt;&lt;img style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" title="firewall_settings" border="0" alt="firewall_settings" src="http://dev.net.ua/blogs/denisreznik/firewall_settings_thumb_5156A1E7.jpg" width="348" height="243"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p align="justify"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Новые настройки файервола вступают в действие через пять минут. Есть возможность расслабиться и почитать что-нибудь про &lt;a href="http://msdn.microsoft.com/en-us/sqlserver/dataservices/default.aspx" target="_blank"&gt;SQL Azure&lt;/a&gt; :). Итак, приступаем к работе. Для соединения с сервером нужно скопировать имя сервера с портала, выбрать тип аутентификации SQL Server (Windows аутентификация не поддерживается) и ввести имя пользователя и пароль, указанные вами при создании аккаунта SQL Azure. Если вдруг забудете пароль, его можно будет легко поменять прямо на портале. Первое, что бросается в глаза – отсутствие многих пунктов контекстного меню, при нажатии правой кнопкой на различных узлах в Object Explorer:&lt;/p&gt; &lt;p align="justify"&gt;&lt;a href="http://dev.net.ua/blogs/denisreznik/sql_azure_ob_explorer_214C5066.jpg" target="_blank"&gt;&lt;img style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" title="sql_azure_ob_explorer" border="0" alt="sql_azure_ob_explorer" src="http://dev.net.ua/blogs/denisreznik/sql_azure_ob_explorer_thumb_2C2931AE.jpg" width="385" height="291"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p align="justify"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Для того, чтобы посмотреть на поддержку T-SQL, я сгенерировал студией скрипты БД Northwind, и попытался накатить их на “облачный” сервер, и поработать с “облачной базой”. Итак, первые впечатления:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;- CREATE DATABASE не поддерживает разбиение на файловые группы (базу также можно создать прямо с портала)&lt;/p&gt; &lt;p&gt;- ALTER DATABASE не поддерживается&lt;/p&gt; &lt;p&gt;- Поддерживается создание логинов&lt;/p&gt; &lt;p&gt;- Не поддерживается переключение контекста с помощью USE (чтобы начать работать в новой, созданной БД, нужно явно открыть соединение с ней)&lt;/p&gt; &lt;p&gt;- Поддерживаются DDL команды создания практически всех объектов БД &lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;- Настройки индекса при создании не поддерживаются (FILLFACTOR и т.п.)&lt;/p&gt; &lt;p&gt;(если из студии сгенерировать скрипт “облачной” БД, то накатить его в облаке будет нельзя, т.к. он содержит и USE и ALTER DATABASE и неподдерживаемые настройки индексов)&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;- Поддерживаются базовые команды T-SQL&lt;/p&gt; &lt;p&gt;- В контекстном меню таблицы нет привычного пункта SELECT TOP 1000 rows&lt;/p&gt; &lt;p&gt;- Интеллисенс не работает&lt;/p&gt; &lt;p&gt;- Поддерживает типы данных SQL Server 2008 (за исключением HierarchyId, Geometry и Geography)&lt;/p&gt; &lt;p&gt;- Доступна работа с планами выполнения&lt;/p&gt; &lt;p&gt;- При раскрытии узла репликации в Object Explorer, вылетает “Operation not supported”. &lt;/p&gt; &lt;p&gt;- Profiler и Activity Monitor недоступны&lt;/p&gt;&lt;/blockquote&gt; &lt;p align="justify"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Более подробно об &lt;a href="http://msdn.microsoft.com/en-us/library/ee336245.aspx" target="_blank"&gt;ограничениях текущей версии&lt;/a&gt; и о &lt;a href="http://msdn.microsoft.com/en-us/library/ee336281.aspx" target="_blank"&gt;доступных возможностях T-SQL&lt;/a&gt; можно прочитать на &lt;a href="http://msdn.microsoft.com/en-us/library/ee336279.aspx" target="_blank"&gt;странице продукта в MSDN&lt;/a&gt;.&amp;nbsp; В целом же&amp;nbsp; впечатление остаётся приятное, и работа с SQL Azure кажется чем-то привычным. Текущая версия SQL Azure Database является “feature complete” и большинство её ограничений связано с самим принципом предоставления&amp;nbsp; облачного сервиса (сокрытие физических аспектов от потребителей).&amp;nbsp; И в заключение хочу сказать, что на &lt;a href="http://microsoftpdc.com/Sessions/SVC52" target="_blank"&gt;PDC 2009&lt;/a&gt; была объявлена дата ввода продукта в промышленную эксплуатацию – 1 января 2010 года (для США, стран юго-восточной Азии и северной европы). У нас это будет немного позже. Ещё интересный момент – первый месяц эксплуатации будет бесплатным.&lt;/p&gt; &lt;p&gt;Ссылки по теме:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;- &lt;a href="http://msdn.microsoft.com/en-us/sqlserver/dataservices/default.aspx"&gt;Сайт SQL Azure&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;- &lt;a href="http://sql.azure.com/"&gt;SQL Azure developer portal&lt;/a&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/ee336281.aspx"&gt;T-SQL в SQL Azure Database&lt;/a&gt;&lt;/p&gt; &lt;p&gt;- &lt;a href="http://blogs.msdn.com/ssds/"&gt;Блог комманды SQL Azure&lt;/a&gt;&lt;/p&gt; &lt;p&gt;- &lt;a href="http://cloud.in.ua/"&gt;По дороге с облаками&lt;/a&gt;&lt;/p&gt; &lt;p&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/ee336279.aspx"&gt;SQL Azure – MSDN&lt;/a&gt;&lt;/p&gt; &lt;p&gt;- &lt;a href="http://blogs.msdn.com/ssds/archive/2009/11/11/9921041.aspx"&gt;SQL Server 2008 R2 Management Studio Download&lt;/a&gt;&lt;/p&gt; &lt;p&gt;- &lt;a href="http://www.brentozar.com/archive/2009/11/playing-around-with-sql-azure-and-ssms/"&gt;Brent Ozar blog&lt;/a&gt;&lt;/p&gt; &lt;p&gt;- &lt;a href="http://microsoftpdc.com/Sessions/Tags/SQLAzure"&gt;Видео с PDC 2009, содержащее тэг “SQL Azure”&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://dev.net.ua/aggbug.aspx?PostID=9044" width="1" height="1"&gt;</content><author><name>Denis Reznik</name><uri>http://dev.net.ua/members/Denis+Reznik.aspx</uri></author><category term="SSMS" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/SSMS/default.aspx" /><category term="SQL Server" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/SQL+Server/default.aspx" /><category term="SQL Azure" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/SQL+Azure/default.aspx" /><category term="SQL Server 2008 R2" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/SQL+Server+2008+R2/default.aspx" /><category term="SQL Server Management Studio" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/SQL+Server+Management+Studio/default.aspx" /><category term="T-SQL" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/T-SQL/default.aspx" /><category term="SQL Azure Database" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/SQL+Azure+Database/default.aspx" /></entry><entry><title>COUNT(*), можно ли быстрее?</title><link rel="alternate" type="text/html" href="http://dev.net.ua/blogs/denisreznik/archive/2009/11/17/9031.aspx" /><id>http://dev.net.ua/blogs/denisreznik/archive/2009/11/17/9031.aspx</id><published>2009-11-16T23:28:59Z</published><updated>2009-11-16T23:28:59Z</updated><content type="html">&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; На больших объёмах данных (миллионы записей), функция COUNT(*) может выполняться минуты, и время получения количества записей будет расти по мере роста таблицы. А хотелось бы моментально получить результат. В этом посте я хочу рассказать о маленьком трюке, позволяющем получить количество строк таблицы в считанные доли секунды.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Идея быстрого получения кол-ва строк заключается в том, чтобы не вызывать функцию COUNT, обращающуюся к записям в таблице или индексе, а обратиться к месту в котором хранится количество строк таблицы. В SQL Server 2000 таким местом являлась &lt;a href="http://www.sql-server-performance.com/tips/gen_tips_p5.aspx" target="_blank"&gt;системная таблица sysindexes&lt;/a&gt;, которая присутствует и в 2008 (также было добавлено системное представление &lt;a href="http://msdn.microsoft.com/ru-ru/library/ms190283.aspx" target="_blank"&gt;sys.sysindexes&lt;/a&gt;), но оставлена только для обеспечения обратной совместимости. Поэтому я предлагаю воспользоваться средством, которое есть в SQL Server 2008, и вполне годится для таких целей – динамическим представлением &lt;a href="http://msdn.microsoft.com/ru-ru/library/ms187737.aspx" target="_blank"&gt;sys.dm_db_partition_stats&lt;/a&gt;, содержащим данные о страницах и строках таблиц:&lt;/p&gt; &lt;blockquote style="background-color:lightgrey;"&gt;&lt;pre style="font-family:monospace;" class="tsql"&gt;&lt;span style="color:#0000ff;"&gt;SELECT&lt;/span&gt; s.&lt;span style="color:#202020;"&gt;row_count&lt;/span&gt;
&lt;span style="color:#0000ff;"&gt;FROM&lt;/span&gt; sys.&lt;span style="color:#202020;"&gt;dm_db_partition_stats&lt;/span&gt; s
&lt;span style="color:#0000ff;"&gt;WHERE&lt;/span&gt; s.&lt;span style="color:#ff00ff;"&gt;object_id&lt;/span&gt; &lt;span style="color:#808080;"&gt;=&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;OBJECT_ID&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;'my_table'&lt;/span&gt;&lt;span style="color:#808080;"&gt;)&lt;/span&gt;
    &lt;span style="color:#808080;"&gt;AND&lt;/span&gt; s.&lt;span style="color:#202020;"&gt;index_id&lt;/span&gt; &lt;span style="color:#808080;"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color:#000;"&gt;2&lt;/span&gt;&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;Если таблица секционирована, то придётся это тоже учесть:&lt;/p&gt;
&lt;blockquote style="background-color:lightgrey;"&gt;&lt;pre style="font-family:monospace;" class="tsql"&gt;&lt;span style="color:#0000ff;"&gt;SELECT&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;SUM&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;s.&lt;span style="color:#202020;"&gt;row_count&lt;/span&gt;&lt;span style="color:#808080;"&gt;)&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;AS&lt;/span&gt; row_count
&lt;span style="color:#0000ff;"&gt;FROM&lt;/span&gt; sys.&lt;span style="color:#202020;"&gt;dm_db_partition_stats&lt;/span&gt; s
&lt;span style="color:#0000ff;"&gt;WHERE&lt;/span&gt; s.&lt;span style="color:#ff00ff;"&gt;object_id&lt;/span&gt; &lt;span style="color:#808080;"&gt;=&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;OBJECT_ID&lt;/span&gt;&lt;span style="color:#808080;"&gt;(&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;'my_table'&lt;/span&gt;&lt;span style="color:#808080;"&gt;)&lt;/span&gt;
    &lt;span style="color:#808080;"&gt;AND&lt;/span&gt; s.&lt;span style="color:#202020;"&gt;index_id&lt;/span&gt; &lt;span style="color:#808080;"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color:#000;"&gt;2&lt;/span&gt;
&lt;span style="color:#0000ff;"&gt;GROUP&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;BY&lt;/span&gt; s.&lt;font color="#ff00ff"&gt;object_id&lt;/font&gt;&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt; На моей полуторамиллионной таблице визуально разница составляет пару секунд. И вот, что говорит план выполнения:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dev.net.ua/blogs/denisreznik/plans_02375386.jpg" target="_blank"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:block;float:none;margin-left:auto;border-top:0px;margin-right:auto;border-right:0px;" title="plans" border="0" alt="plans" src="http://dev.net.ua/blogs/denisreznik/plans_thumb_40506E37.jpg" width="453" height="247"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Основной плюс такого подхода, то, что время выполнения запроса – величина константная, а при использовании COUNT, время будет расти пропорционально количеству добавляемых записей.&lt;/p&gt;
&lt;p&gt;Ссылки по теме:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;- &lt;a href="http://www.sql-server-performance.com/tips/gen_tips_p5.aspx"&gt;Подсчёт строк с помощью sysindexes&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://sqlblog.com/blogs/louis_davidson/archive/2007/07/11/sys-dm-db-partition-stats.aspx"&gt;Альтернативные способы подсчёта строк&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://msdn.microsoft.com/ru-ru/library/ms175997.aspx"&gt;Функция COUNT&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://msdn.microsoft.com/ru-ru/library/ms187737.aspx"&gt;Cистемное представление&amp;nbsp; sys.dm_db_partition_stats&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;- &lt;a href="http://msdn.microsoft.com/ru-ru/library/ms190283.aspx"&gt;Cистемное представление sys.sysindexes&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://dev.net.ua/aggbug.aspx?PostID=9031" width="1" height="1"&gt;</content><author><name>Denis Reznik</name><uri>http://dev.net.ua/members/Denis+Reznik.aspx</uri></author><category term="SQL Server 2008" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/SQL+Server+2008/default.aspx" /><category term="SQL Server" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/SQL+Server/default.aspx" /><category term="Tips&amp;amp;Tricks" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/Tips_2600_amp_3B00_Tricks/default.aspx" /><category term="COUNT" scheme="http://dev.net.ua/blogs/denisreznik/archive/tags/COUNT/default.aspx" /></entry></feed>