<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
	<title>Хабрахабр / SQL / Захабренные</title>
	<link>http://habrahabr.ru/rss/blog/sql/</link>
	<description><![CDATA[Захабренные посты из блога «SQL» на Хабрахабре]]></description>
	<language>ru</language>
	<managingEditor>editor@habrahabr.ru</managingEditor>
	<generator>habrahabr.ru</generator>
	<pubDate>Fri, 10 Feb 2012 16:34:44 GMT</pubDate>
	<lastBuildDate></lastBuildDate>
	<image>
		<link>http://habrahabr.ru/</link>
		<url>http://habrahabr.ru/i/logo.gif</url>
		<title>Хабрахабр</title>
	</image>
	
		
	
		
	<item>		
		<title><![CDATA[SQL / [Из песочницы] MSSQL перенос системных баз]]></title>
		<guid isPermaLink="true">http://habrahabr.ru/blogs/sql/136346/</guid>
		<link>http://habrahabr.ru/blogs/sql/136346/</link>			
		<description><![CDATA[MSSQL и базы 1с 8.2<br/>
<br/>
Здесь я опишу свои наблюдения, а также собранные с помощью гугла маленькие полезности для эффективной работы этих двух программных продуктов.<br/>
Всем известно, что хранить пользовательские базы нужно на отдельном диске, например вот здесь D:\Base. А так же желательно перенести на отдельный диск и файлы транзакций, например E:\Logs. Ну и раз уж мы говорим о переносе баз и логов на разные диски, то для увеличения производительности, нужно разнести их на разные физические диски. Дорого, скажете Вы, не совсем, в рамках предприятия это копейки, а головной боли будет меньше, хотя бы со свободным местом будет уже проще.<br/>
После всего этого будет целесообразно перенести и системные базы. Раньше я не задумывался об этом, но вот прижало. А дело было так. Доблестной бухгалтерии, накатили новую версию желтой программы, и все было замечательно до тех пор, пока не потребовалось им «закрыть месяц». Процедура длительная и поэтому оставляли ее на ночь. А с утра видели симпатичное сообщение об ошибке базы MSSQL. Расследование привело меня к тому, что на диске С:\ не оставалось свободного места. А именно, разрослись логии системных баз выше всякой меры. Было принято решение о переносе. <div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/sql/136346/#habracut">Читать дальше &rarr;</a> </div>]]></description>
		
		<pubDate>Mon, 16 Jan 2012 12:55:09 GMT</pubDate>
		<author>wowscheg</author>
		<category>mssql</category><category>1с</category>
	</item>
	
	
	
	
	

		
	<item>		
		<title><![CDATA[SQL / CryptDB: обработка информации в БД без её дешифрования]]></title>
		<guid isPermaLink="true">http://habrahabr.ru/blogs/sql/134966/</guid>
		<link>http://habrahabr.ru/blogs/sql/134966/</link>			
		<description><![CDATA[Исследователи из МТИ представили СУБД CryptDB, которая способна эффективно обслуживать запросы к БД SQL — поиск, сортировка, математические функции и др. — без расшифровки записей базы. Хотя это не первая разработка подобного рода, но благодаря беспрецедентной производительности эксперты считают CryptDB первой, реально пригодной для практического использования. Предполагается, что подобные разработки могут найти применения в системах облачного хранения данных, которые особенно нуждаются в криптографической защите.<br/>
<br/>
<img src="http://habrastorage.org/storage2/cf2/8fe/623/cf28fe6236fd943804eebcfa39a35ffa.png"/><br/>
<sup>Архитектура CryptDB</sup><br/>
<br/>
Подход, реализованный в CryptDB, называется полным гомоморфным шифрованием. Первую полностью гомоморфную модель для СУБД <a href="http://www.ibm.com/news/ru/ru/2009/06/25/a737496p86512a82.html">предложил в 2009 году</a> криптограф из IBM Research Крейг Джентри (Craig Gentry), она является гомоморфной для операций умножения и сложения одновременно, что даёт возможность выразить любую математическую функцию. Правда, была одна проблема: скорость операций по сравнению с обычной СУБД возрастала примерно в триллион раз.<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/sql/134966/#habracut">Читать дальше &rarr;</a> </div>]]></description>
		
		<pubDate>Tue, 20 Dec 2011 12:21:09 GMT</pubDate>
		<author>alizar</author>
		<category>CryptDB</category><category>базы данных</category><category>SQL</category><category>Крейг Гентри</category><category>гомоморфное шифрование</category><category>phpBB</category>
	</item>
	
	
	
	
	
	

	
		
	<item>		
		<title><![CDATA[SQL / [Из песочницы] DigestSDK — автоматизация работы с MSSQL на Delphi]]></title>
		<guid isPermaLink="true">http://habrahabr.ru/blogs/sql/134901/</guid>
		<link>http://habrahabr.ru/blogs/sql/134901/</link>			
		<description><![CDATA[<h4>Вступление</h4><br/>
Несколько лет назад мне пришлось реализовать работу с таблицами базы данных MSSQL сервера. После написания некоторого количества, фактически однотипного кода, пришла мысль автоматизировать эти «рутинные» действия. <br/>
Согласитесь, что написание одного и того же кода, отличающегося только структурой таблиц БД, не может никого вдохновить. К тому же, если кол-во таблиц, с которыми приходиться работать переваливает за десяток, то занятие из разряда скучное — переходит в разряд трудоемкое. <br/>
Поиск в интернете на тот момент не дал результатов, поэтому реализацию пришлось взять на себя. .<br/>
В результате был создан набор модулей (в дальнейшем <i>DigestSDK</i>) на языке Delphi, позволяющих избавить программиста от написания «стандартного» кода по работе с БД и сосредоточиться на логике самого приложения. .<br/>
Демонстрационные примеры, исходные коды и видео по работе с DigestSDK выложил на <a href="http://sourceforge.net/projects/digestsdk/">SourceForge</a> (авось еще кому да и пригодится, заодно и хабр эффект проверим в очередной раз:-))..<br/>
<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/sql/134901/#habracut">Читать дальше &rarr;</a> </div>]]></description>
		
		<pubDate>Mon, 19 Dec 2011 21:26:41 GMT</pubDate>
		<author>dgatsura</author>
		<category>Программирование</category><category>БД</category><category>MSSQL</category><category>Delphi</category>
	</item>
	
	
	
	
	

		
	<item>		
		<title><![CDATA[SQL / Вышел AnjLab SQL Profiler 1.2]]></title>
		<guid isPermaLink="true">http://habrahabr.ru/blogs/sql/133212/</guid>
		<link>http://habrahabr.ru/blogs/sql/133212/</link>			
		<description><![CDATA[<a href="https://sites.google.com/site/sqlprofiler/">AnjLab SQL Profiler</a> — это бесплатный Open Source профайлер для MS SQL Server (Express).<br/>
<br/>
В новой версии появилась возможность автоматической группировки одинаковых запросов по соединениям в Performance Dashboard.<br/>
<br/>
Спасибо <a href="http://www.powerdnn.com/">PowerDNN</a> за спонсорскую помощь в развитии проекта.]]></description>
		
		<pubDate>Wed, 23 Nov 2011 03:19:37 GMT</pubDate>
		<author>dmitrygusev</author>
		<category>anjlab</category><category>sql</category><category>profiler</category><category>open source</category><category>sql server</category><category>sql server express</category>
	</item>
	
	
	
	
	
	

	
		
	<item>		
		<title><![CDATA[SQL / [Из песочницы] Получение версии конфигурации 1с напрямую из SQL]]></title>
		<guid isPermaLink="true">http://habrahabr.ru/blogs/sql/130924/</guid>
		<link>http://habrahabr.ru/blogs/sql/130924/</link>			
		<description><![CDATA[По долгу службы наша контора обслуживает несколько организаций, которые для управленческого и бухгалтерского учета используют 1с.<br/>
1с, как известно, постоянно выпускает обновления для своих конфигураций. <br/>
Соответственно на обновление хотя бы 5 баз уходит приличное количество времени.<br/>
Рассказ о том, как добиться полной (кроме скачивания обновлений) автоматизации процесса средствами MSSQL далее.<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/sql/130924/#habracut">Читать дальше &rarr;</a> </div>]]></description>
		
		<pubDate>Fri, 21 Oct 2011 13:19:25 GMT</pubDate>
		<author>gvas_ru</author>
		<category>1с</category><category>MSSQL</category><category>c</category>
	</item>
	
	
	
	
	

	
		
	<item>		
		<title><![CDATA[SQL / [Из песочницы] MS SQL 2008, заметки на полях. Очень много случайный чисел]]></title>
		<guid isPermaLink="true">http://habrahabr.ru/blogs/sql/130567/</guid>
		<link>http://habrahabr.ru/blogs/sql/130567/</link>			
		<description><![CDATA[В решении многих задач необходимо вставить большое количество подобных строк, содержащие заранее заданную информацию, например тестирование слабых мест в приложении. Основной сложностью является ни столько алгоритм создания данных, сколько механизм позволяющий создать такое количество строк.<br/>
<br/>
Всех кого заинтересовала тема, добро пожаловать под кат…<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/sql/130567/#habracut">Читать дальше &rarr;</a> </div>]]></description>
		
		<pubDate>Mon, 17 Oct 2011 09:42:11 GMT</pubDate>
		<author>Emiya</author>
		<category>t-sql</category><category>mssql</category><category>performance</category><category>algorithms</category>
	</item>
	
	
	
	
	

		
	<item>		
		<title><![CDATA[SQL / Установка клиента DataStage]]></title>
		<guid isPermaLink="true">http://habrahabr.ru/blogs/sql/129714/</guid>
		<link>http://habrahabr.ru/blogs/sql/129714/</link>			
		<description><![CDATA[Я думаю, что многие сталкивались с некоторыми проблемами при установке IBM DataStage на клиентские рабочие станции. Перед установкой, ваша система должна выдержать ряд тестов на соответствие требованиям, которые предъявляются к ОС, пользователю, из под которого осуществляется установка, к «железу». Не всегда проверка возвращает адекватные результаты.<br/>
Вашему вниманию представлены некоторые пути обхода криво реализованных проверок очередного инсталятора компании IBM, пытающийся установить клиент к Information Server 8.5, в который входят клиенты для DataStage.<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/sql/129714/#habracut">Читать дальше &rarr;</a> </div>]]></description>
		
		<pubDate>Wed, 05 Oct 2011 09:14:58 GMT</pubDate>
		<author>Geckelberryfinn</author>
		<category>datastage</category><category>information server</category><category>ibm</category><category>ETL</category>
	</item>
	
	
	
	
	
	

		
	<item>		
		<title><![CDATA[SQL / Управление скриптами миграции или MyBatis Scheme Migration Extended]]></title>
		<guid isPermaLink="true">http://habrahabr.ru/blogs/sql/129290/</guid>
		<link>http://habrahabr.ru/blogs/sql/129290/</link>			
		<description><![CDATA[Я думаю, всем разработчикам так или иначе известно понятие “скрипт миграции”. Как правило, имеется ввиду sql-скрипт, созданный для поддержания актуальности БД. Путь создания и использования скриптов миграции весьма легок, поэтому вести этот процесс можно и вручную. Я же хочу рассказать об инструменте, который местами упрощает работу со скриптами миграции. <br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/sql/129290/#habracut">Читать дальше &rarr;</a> </div>]]></description>
		
		<pubDate>Tue, 27 Sep 2011 19:49:32 GMT</pubDate>
		<author>knowlix</author>
		<category>mybatis</category><category>migro</category><category>migrastion</category><category>скрипты миграции</category><category>github</category>
	</item>
	
	
	
	
	
	

		
	<item>		
		<title><![CDATA[SQL / Введение в IBM DB2]]></title>
		<guid isPermaLink="true">http://habrahabr.ru/blogs/sql/128932/</guid>
		<link>http://habrahabr.ru/blogs/sql/128932/</link>			
		<description><![CDATA[По работе пришлось в течение некоторого времени разбираться с СУБД IBM DB2. Т.к. система коммерческая, то в интернете не так много информации на русском языке, поэтому решил описать некоторые особенности работы этой СУБД.<br/>
<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/sql/128932/#habracut">Читать дальше &rarr;</a> </div>]]></description>
		
		<pubDate>Thu, 22 Sep 2011 07:57:26 GMT</pubDate>
		<author>videns</author>
		<category>ibm db2</category><category>db2 luw</category><category>db2 udb</category><category>db2 intro</category>
	</item>
	
	
	
	
	
	

	
		
	<item>		
		<title><![CDATA[SQL / [Из песочницы] О кэшировании ресурсоемких SQL-запросов на веб-сервере]]></title>
		<guid isPermaLink="true">http://habrahabr.ru/blogs/sql/127871/</guid>
		<link>http://habrahabr.ru/blogs/sql/127871/</link>			
		<description><![CDATA[В этой статье я постараюсь описать распространенную ошибку создателей систем кэширования<br/>
<br/>
Началось всё в далекие времена, когда я управлял сайтами, которые были расположены на хостинге в FreeBSD jail, который был весьма ограничен в ресурсах. Почему так? Потому, что я использовал для отображения отчетов и печатных форм расширение pdflib, которого в наборе расширений на стандартном хостинге не было. Я скомпилировал там свой apache и php, залил туда документы и сайт заработал. <br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/sql/127871/#habracut">Читать дальше &rarr;</a> </div>]]></description>
		
		<pubDate>Wed, 07 Sep 2011 07:05:01 GMT</pubDate>
		<author>dphilipo</author>
		<category>кэширование</category>
	</item>
	
	
	
	
	

		
	<item>		
		<title><![CDATA[SQL / Контроль изменения структуры БД]]></title>
		<guid isPermaLink="true">http://habrahabr.ru/blogs/sql/127009/</guid>
		<link>http://habrahabr.ru/blogs/sql/127009/</link>			
		<description><![CDATA[<h4>Преамбула</h4><br/>
Пару лет назад я и мои сотрудники столкнулись с проблемой сопровождения большого количества аналогичных БД на удаленных филиалах. Удалены они иногда на тысячи километров, а объемы исчислялись гигабайтами – что не позволяло использовать какое-либо зеркалирование серверов. Осложнялась ситуация мелкими отличиями, т.е. 95% бизнес-логики филиалов совпадало, но было ещё 5%, которые сильно мешали и ни о какой автоматической обработке группы филиалов не было и речи.<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/sql/127009/#habracut">Читать дальше &rarr;</a> </div>]]></description>
		
		<pubDate>Wed, 24 Aug 2011 15:27:04 GMT</pubDate>
		<author>jil</author>
		<category>sqlserver</category><category>.net</category><category>версионная миграция</category><category>версионирование</category><category>базы данных</category><category>системы контроля версий</category><category>continuous integration</category>
	</item>
	
	
	
	
	
	

		
	<item>		
		<title><![CDATA[SQL / Введение в многомерный анализ]]></title>
		<guid isPermaLink="true">http://habrahabr.ru/blogs/sql/126810/</guid>
		<link>http://habrahabr.ru/blogs/sql/126810/</link>			
		<description><![CDATA[Некоторое время назад мне довелось организовывать новую группу разработки, которая должна была заняться развитием OLAP и BI продуктов в дружеской софтверной компании. А так как группа была собрана из свежих выпускников ВУЗов, то мне пришлось написать «краткий курс молодого бойца» для того чтобы <b>максимально доступно </b>дать начальные понятия об OLAP людям, которые ни разу с ним не сталкивались, но уже имели опыт программирования и работы с БД.<br/>
<br/>
Выкладываю теперь это Введение в Общественное Достояние.<br/>
<br/>
В статье несколько смешиваются понятия OLAP, Business Intelligence, и Data Warehouse, но и в жизни часто сложно понять, где проходит граница. А уж в реальных проектах, так и подавно, все они ходят рядом. Поэтому прошу не судить строго.<br/>
<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/sql/126810/#habracut">Итак, что же такое OLAP.</a> </div>]]></description>
		
		<pubDate>Mon, 22 Aug 2011 10:15:43 GMT</pubDate>
		<author>barbalion</author>
		<category>OLAP</category><category>Mondrian</category><category>BI</category><category>Business Intelligence</category><category>MDX</category>
	</item>
	
	
	
	
	
	

		
	<item>		
		<title><![CDATA[SQL / Выпущен SQL Server 2008 R2 SP1, дополнительные инструменты для SQL Server Denali]]></title>
		<guid isPermaLink="true">http://habrahabr.ru/blogs/sql/124333/</guid>
		<link>http://habrahabr.ru/blogs/sql/124333/</link>			
		<description><![CDATA[<img title="image" alt="image" src="http://microgeek.ru/upload/blog/sqlserver/16b/16bf7e6f54a6bc4ce3d163418200906e.png"/><br/>
<br/>
Для загрузки доступна финальная версия первого сервисного пакета исправлений для <strong>SQL Server 2008 R2</strong>. Пакет SP1 содержит шесть вышедших ранее кумулятивных обновлений для сервера, плюс предлагает некоторые новые возможности.<br/>
<br/>
Загрузить пакет исправлений для разных языков и редакций можно по <a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;id=26727">следующей ссылке</a> (<a href="http://www.microsoft.com/download/en/details.aspx?id=26729">версия</a> для express-редакций). <br/>
<br/>
Кроме того, для загрузки доступны инструменты для сервера баз данных следующего поколения <strong>SQL Server Denali</strong>, который недавно был <a href="http://microgeek.ru/blogs/sqlserver/1511/">выпущен в очередной предварительной версии CTP3</a>. Среди доступных инструментов следующие:<ul>
<li>Product Documentation for Microsoft SQL Server Code-Named “Denali” CTP3 (<a href="http://www.microsoft.com/download/en/details.aspx?id=347">link</a>);<br/>
</li>
<li>Express Core CTP 3 (<a href="http://www.microsoft.com/download/en/details.aspx?id=26784">link</a>);<br/>
</li>
<li>PowerPivot for Microsoft Excel CTP 3 (<a href="http://www.microsoft.com/download/en/details.aspx?id=26721">link</a>);<br/>
</li>
<li>Semantic Language Statistics CTP 3 (<a href="http://www.microsoft.com/download/en/details.aspx?id=26724">link</a>);<br/>
</li>
<li>Report Builder CTP 3 (<a href="http://www.microsoft.com/download/en/details.aspx?id=26780">link</a>);<br/>
</li>
<li>Reporting Services Add-in for SharePoint Technologies CTP 3 (<a href="http://www.microsoft.com/download/en/details.aspx?id=26779">link</a>).<br/>
</li>
</ul>Кроме того, через средство Web Platform Installer доступна новая версия интегрированной среды разработки баз данных под <a href="http://www.microsoft.com/web/gallery/install.aspx?appid=JUNEAU10">кодовым именем Juneau</a> (для замены SQL Server Management Studio).<br/>
<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/sql/124333/#habracut">Читать дальше &rarr;</a> </div>]]></description>
		
		<pubDate>Sun, 17 Jul 2011 16:21:10 GMT</pubDate>
		<author>XaocCPS</author>
		<category>sql server 2008 r2</category><category>service pack</category><category>denali</category><category>microsoft</category><category>powerpivot</category><category>reporting services</category><category>report builder</category><category>juneau</category>
	</item>
	
	
	
	
	
	

	
		
	<item>		
		<title><![CDATA[SQL / [Из песочницы] Основы SQL на примере задачи]]></title>
		<guid isPermaLink="true">http://habrahabr.ru/blogs/sql/123636/</guid>
		<link>http://habrahabr.ru/blogs/sql/123636/</link>			
		<description><![CDATA[В этом руководстве мы рассмотрим основные sql команды на примере небольшой задачи. При прочтении желательно сидеть за консолью mysql и вводить все запросы для большей наглядности.<br/>
<br/>
<h3>Постановка задачи</h3><br/>
Дана база данных, в ней 3 таблицы следующего вида:<br/>
<img src="http://habrastorage.org/storage1/b4c6b9e6/0eec6da5/04dc0c46/8a365e8f.jpg"/><br/>
<img src="http://habrastorage.org/storage1/cb2b9275/acdf7ecb/8b10832e/989f7df2.jpg"/><br/>
<img src="http://habrastorage.org/storage1/d12f3786/c016003c/ef6422fb/613390b6.jpg"/><br/>
<br/>
table1: user_id (INT(5), PRIMARY KEY), username (VARCHAR(50), INDEX)<br/>
table2: phone_id (INT(5), PRIMARY KEY), user_id (INT(5), INDEX), phone_number (INT(10), INDEX)<br/>
table3: room_id (INT(5), PRIMARY KEY), phone_id (INT(5), INDEX), room_number(INT(4) INDEX)<br/>
<br/>
Необходимо выбрать номер комнаты в которой сидит пользователь с ником qux…<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/sql/123636/#habracut">Читать дальше &rarr;</a> </div>]]></description>
		
		<pubDate>Fri, 08 Jul 2011 09:35:26 GMT</pubDate>
		<author>hr6134</author>
		<category>sql</category><category>основы</category>
	</item>
	
	
	
	
	

	
		
	<item>		
		<title><![CDATA[SQL / [Из песочницы] Методы оптимизации производительности приложения при работе с РБД]]></title>
		<guid isPermaLink="true">http://habrahabr.ru/blogs/sql/123670/</guid>
		<link>http://habrahabr.ru/blogs/sql/123670/</link>			
		<description><![CDATA[Действуют они везде – хоть MySQL, хоть Oracle хоть самописная БД. Чем умнее БД – тем больше она старается оптимизировать сама, но лучше ей помочь<br/>
<br/>
1. Разделяй и властвуй, а попросту кластеризация БД – все данные одного типа можно еще разбить на кластеры – отдельные таблицы, в каждую таблицу попадают записи, которые удовлетворяют какому-то простейшему правилу, например в таблицу с индексом I попадают данные у которых ID%N==I, где N – кол-во кластеров. Таким образом очень просто и эффективно делим те данные, которые не надо считывать последовательно – например разбиваем все слова на 100-200-миллион блоков, в каждом блоке только слова у которых ID%N==I. В качестве примера в большой системе, типа социальной сети, можно поделить все данные по признаку принадлежности одному пользователю — например все фото разместить в N таблиц, информация о фото помещается в таблицу K=USER_ID%N<br/>
<br/>
2. Условно — работа с диском. Всегда пиши (вставляй) последовательно, кэшируй и буферизуй запись, читать старайся подряд от начала до конца. Ускорение записи может быть просто фантастическое – много порядков, просто от того что Вы правильно используете запись зная как работает Ваш (или производителя) алгоритм записи на диск. Данные почти всегда можно отсортировать до записи – в памяти ли, разные файлы ли с кускам текста – всегда можно построить индекс или простейший массив, который отсортирован по ID данных и читать-писать их в порядке как в индексе. Как один из вариантов – всегда можно придумать более оптимальную структуру хранения данных. К примеру когда надо вставить кусок таблицы в другую таблицу делать это лучше последовательно от меньшего ID к большему, заодно отключив механизм индексации. И включив его после вставки.<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/sql/123670/#habracut">Читать дальше &rarr;</a> </div>]]></description>
		
		<pubDate>Thu, 07 Jul 2011 22:52:14 GMT</pubDate>
		<author>cast</author>
		<category>БД</category><category>оптимизация</category><category>SQL</category>
	</item>
	
	
	
	
	

	
	
	
		
	<item>		
		<title><![CDATA[SQL / [Перевод] MS SQL 2011 — новое в SSMS]]></title>
		<guid isPermaLink="true">http://habrahabr.ru/blogs/sql/123664/</guid>
		<link>http://habrahabr.ru/blogs/sql/123664/</link>
		<description><![CDATA[Одна из наиболее интересных и захватывающих разработок от Майкрософт в технологическом плане была представлена 8 ноября 2010 года. В этот день состоялся релиз CTP 1 SQL Server 2011 (Codename Denali). CTP доступна как в х86, так и в х64. Как и ожидалось, новый сервер принес много вкусненького для всех поклонников MS SQL будь то разработчик, администратор или бизнес аналитик.<br/>
<br/>
За последние несколько лет Майкрософт внедрила много интересных технологий, которые были приняты разработчиками на вооружение. Самые значительные изменения были сделаны в 2005 SQL сервере и получили дополнительное развитие в 2008 выпуске. В этой статье (<i>заключительной</i>) будут рассмотрены изменения и новые возможности которые произошли в новой версии SQL Server.<br/>
<br/>
Если у вас возникнут проблемы при установке сервера, то рекомендую обратиться к <a href="http://www.kodyaz.com/articles/how-to-install-sql-server-2011-installation-guide.aspx">этой статье</a>.<br/>
Далее пойдет речь о новшествах в SQL Server Management Studio (SSMS).<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/sql/123664/#habracut">Читать дальше &rarr;</a> </div>]]></description>
		
		<pubDate>Thu, 07 Jul 2011 19:31:58 GMT</pubDate>
		<author>VioletTape</author>
		<category>mssql</category><category>ms sql 2011</category><category>SSMS</category><category>snippets</category>
	</item>
	
	
	

	
	
	
		
	<item>		
		<title><![CDATA[SQL / [Перевод] MS SQL 2011 – Модификация возвращаемого набора данных]]></title>
		<guid isPermaLink="true">http://habrahabr.ru/blogs/sql/123573/</guid>
		<link>http://habrahabr.ru/blogs/sql/123573/</link>
		<description><![CDATA[В оригинальном звучании и в жизни эта возможность звучит как <strong>With Result Set</strong>. Эта штука позволяет менять имена и типы данных в возвращаемом хранимой процедурой наборе данных.<br/>
<br/>
Перед тем, как мы углубимся в детали использования данной возможности, рассмотрим, как предыдущие версии SQL серверов обходились с данными, которые возвращает хранимая процедура. Какие возможности они предоставляли для работы с результатом.<br/>
<br/>
Для демонстрации работы будем использовать в качестве примера таблицу <strong>tbl_Test</strong> состоящую из 3 колонок.<br/>
<a href="http://softblog.violet-tape.ru/wp-content/uploads/2011/07/01.jpg"><img title="01" src="http://softblog.violet-tape.ru/wp-content/uploads/2011/07/01.jpg"/></a><br/>
<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/sql/123573/#habracut">Читать дальше &rarr;</a> </div>]]></description>
		
		<pubDate>Wed, 06 Jul 2011 18:01:37 GMT</pubDate>
		<author>VioletTape</author>
		<category>ms sql</category><category>sql server 2011</category><category>new features</category><category>with result set</category>
	</item>
	
	
	

	
	
	
		
	<item>		
		<title><![CDATA[SQL / [Перевод] MS SQL 2011 — Обработка ошибок]]></title>
		<guid isPermaLink="true">http://habrahabr.ru/blogs/sql/123507/</guid>
		<link>http://habrahabr.ru/blogs/sql/123507/</link>
		<description><![CDATA[Новое полезное дополнение для SQL Server 2011 (Denali) ­– выражение <strong>Throw</strong>. Разработчики на .Net уже догадались наверно, где и как оно будет использоваться.<br/>
<br/>
Это слово может использоваться в сочетании с управляющей конструкцией Try…Catch и позволяет послать уведомление о возникновении ошибки времени исполнения. Когда возникает исключение, программа ищет ближайший по иерархии вверх блок Catch который может обработать исключение. Используя это выражение внутри блока Catch можно изменить вывод ошибки. Более того, теперь вызывать исключение можно произвольно в любом месте скрипта.<br/>
<br/>
Далее рассмотрим различные способы поимки исключении, которые предоставляет SQL Server начиная с версии 2000 и до версии 2011, с указанием плюсов и минусов.<br/>
<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/sql/123507/#habracut">Читать дальше &rarr;</a> </div>]]></description>
		
		<pubDate>Wed, 06 Jul 2011 05:40:39 GMT</pubDate>
		<author>VioletTape</author>
		<category>ms sql</category><category>sql server 2011</category><category>new features</category><category>throw</category><category>обработка ошибок</category>
	</item>
	
	
	

	
	
	
		
	<item>		
		<title><![CDATA[SQL / [Перевод] MS SQL 2011 – новый оператор Offset]]></title>
		<guid isPermaLink="true">http://habrahabr.ru/blogs/sql/123491/</guid>
		<link>http://habrahabr.ru/blogs/sql/123491/</link>
		<description><![CDATA[В новом SQL Server 2011 (Denali) расширяются возможности команды Order By с помощью двух долгожданных дополнительных команд:<br/>
<ul>
<li>Offset (смещение)</li>
<li>Fetch First или Fetch Next (<strong>взять первые…</strong> или <strong>взять следующие…</strong>)</li>
</ul><br/>
<br/>
<h2>Offset</h2><br/>
Использование данной команды позволяет пропустить указанное количество строк перед тем как выводить результаты запроса. Что под этим подразумевается: Допустим, у нас есть 100 записей в таблице и нужно пропустить первые 10 строк и вывести строки с 11 по 100. Теперь это легко решается следующим запросом:<br/>
<pre><code class="sql">Select *
From  &lt;SomeTable&gt;
Order by  &lt;SomeColumn&gt;
Offset 10 Rows</code></pre><br/>
Для тех товарищей, которые практикуют .Net должен быть знаком метод расширения для коллекций <strong>Skip</strong>, который пропускает указанное количество строк. Так вот выражение <strong>Offset</strong> работает точно так же. После того как данные упорядочены каким-либо образом, можно применять выражение Offset.<br/>
<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/sql/123491/#habracut">Читать дальше &rarr;</a> </div>]]></description>
		
		<pubDate>Tue, 05 Jul 2011 17:34:04 GMT</pubDate>
		<author>VioletTape</author>
		<category>ms sql</category><category>sql server 2011</category><category>new features</category>
	</item>
	
	
	

	
	
	
		
	<item>		
		<title><![CDATA[SQL / [Перевод] MS SQL 2011 – новый объект Sequence]]></title>
		<guid isPermaLink="true">http://habrahabr.ru/blogs/sql/123446/</guid>
		<link>http://habrahabr.ru/blogs/sql/123446/</link>
		<description><![CDATA[Возможность, которой не удивишь нынче пользователей Oracle, DB2, PostgreSQL и множества других реляционных баз данных, наконец-то появилась и в MS SQL Server. На арене Sequence!<br/>
<br/>
Sequence – генерирует последовательность чисел так же как и identity. Однако основным плюсом sequence является то, что последовательность не зависит от какой-либо конкретной таблицы и является объектом базы данных.<br/>
<br/>
Рассмотрим пример скрипта написанного на SQL Server 2008. Создание простой таблицы с двумя колонками, одна из которых будет автоинкрементной.<br/>
<br/>
<pre><code class="sql">Create Table WithOutSequence1
(
	 EmpId int identity not null primary key
	,EmpName varchar(50) not null
)

Insert into WithOutSequence1
	Select 'Violet' Union All
	Select 'Tape'

Select * from WithOutSequence1</code></pre><br/>
Похожим образом создадим еще одну таблицу.<br/>
<pre><code class="sql">Create Table WithOutSequence2
(
	 EmpId int identity not null primary key
	,EmpName varchar(50) not null
)

Insert into WithOutSequence2
	Select 'Violet' Union All
	Select 'Tape'

Select * from WithOutSequence2</code></pre><br/>
Как можно заметить из примеров, мы записали значения в таблицу при этом значение инкрементального поля автоматически и независимо от нас заполнилось. Мы не можем повторно использовать значение этого поля в другой таблице. Давайте посмотрим как можно выйти из этой ситуации с помощью Sequence.<br/>
<br/>
Общий синтаксис для команды выглядит так:<br/>
<pre><code class="sql">CREATE SEQUENCE [schema_name . ] sequence_name
[ AS { built_in_integer_type | user-defined_integer_type } ]
| START WITH &lt;constant&gt;
| INCREMENT BY &lt;constant&gt;
| { MINVALUE &lt;constant&gt; | NO MINVALUE }
| { MAXVALUE &lt;constant&gt; | NO MAXVALUE }
| { CYCLE | NO CYCLE }
| { CACHE [&lt;constant&gt; ] | NO CACHE }</code></pre><br/>
<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/sql/123446/#habracut">Читать дальше &rarr;</a> </div>]]></description>
		
		<pubDate>Tue, 05 Jul 2011 09:28:41 GMT</pubDate>
		<author>VioletTape</author>
		<category>MS SQL 2011</category><category>Databases</category><category>Sequence</category>
	</item>
	
	
	

	

	
	
	
	
	
</channel>
</rss>

