Очередная раздача книг по SQL Server (Microsoft_eBooks)

by Alexey Knyazev 11. июля 2014 13:51

Troubleshooting
SQL Server
AlwaysOn

5 Tips for a Smooth
SSIS Upgrade to
SQL Server 2012

A Hitchiker's Guide
to Microsoft StreamInsight
Queries

Data Mining Extensions
(DMX) Reference

Data Quality Services

High Availability
Solutions

Master Data Services

Monitor and Tune
for Performance
[Ещё]

Tags: , , ,

SQL Server

Database Engine Permissions (Постеры)

by Alexey Knyazev 1. июля 2014 17:59

Tags: , , ,

SQL Server

Секционированные представления и магические 64 таблицы

by Alexey Knyazev 30. июня 2014 17:31

Хочу показать на живом примере, как план запроса может меняться в зависимости от того, сколько таблиц фигурирует в секционированном представлении (или просто в запросе). При этом и производительность может существенно "просесть" на таких запросах. Пример из реальной жизни, но с тестовыми данными.

Ситуация воспроизводится на разных версиях SQL Server, в том числе и на версии SQL Server 2014.

[Ещё]

Tags: , ,

SQL Server

Индексы в табличных переменных

by Alexey Knyazev 9. апреля 2014 18:22

Сегодня я немного расскажу о том, как создать индексы на табличных переменных (это которые @table) в SQL Server 2014 и в ранних версиях. При этом я не буду останавливаться на том, зачем нужны индексы и не буду сравнивать табличные переменные с временными таблицами, т.к. на эту тему достаточно статей, например: http://www.sql-server-performance.com/2007/temp-tables-vs-variables/ или http://www.mssqltips.com/sqlservertip/2825/sql-server-temp-table-vs-table-variable-performance-testing/. При этом сразу оговорюсь, что одним из недостатков табличных переменных было именно отсутствие возможности явно создать индекс. Но давайте по порядку.

[Ещё]

Tags: ,

SQL Server

SQL Server 2014

by Alexey Knyazev 1. апреля 2014 14:08

Ссылка на скачивание: http://technet.microsoft.com/ru-ru/evalcenter/dn205290.aspx

Подробности выхода: http://blogs.technet.com/b/dataplatforminsider/archive/2014/04/01/sql-server-2014-now-generally-available.aspx
Что нового: http://msdn.microsoft.com/en-us/library/bb500435(v=sql.120).aspx
Список фич, которые будут доступны в разных редакциях: http://msdn.microsoft.com/en-us/library/cc645993(v=sql.120).aspx

Обсуждение на форуме SQL.RU: http://www.sql.ru/forum/1083532/sql-server-2014-releases-april-1

[Ещё]

Tags:

SQL Server

SQL Server 2014: Защита от администратора

by Alexey Knyazev 11. июля 2013 00:53

SQL Server 2014

Такая странная тема для очередной заметки про SQL Server 2014 CTP1 выбрана не случайно. С завидным постоянством на форумах по MS SQL Server появляются вопросы из разряда:

"Как мне защитить мои данные от администратора БД?".

До недавнего времени эта задача была нерешаемой, но, благодаря появлению в SQL Server 2014 трёх новых разрешений уровня сервера (CONNECT ANY DATABASE, IMPERSONATE ANY LOGIN, и SELECT ALL USER SECURABLES), у нас появилась возможность более гибко управлять серверными ролями. В том числе мы можем создать администраторскую серверную роль с полным запретом на доступ к пользовательским данным.

Напомню, что возможность создавать серверные роли появилась впервые в SQL Server 2012 (CREATE SERVER ROLE), а в версии SQL Server 2014 разработчики пошли чуть дальше.

[Ещё]

Tags: ,

SQL Server

SQL Server 2014: ONLINE операции над отдельными секциями секционированных объектов

by Alexey Knyazev 10. июля 2013 00:03

SQL Server 2014

Продолжу серию заметок о новых возможностях SQL Server 2014. И сегодня поговорим об ещё одной приятной конструкции - ONLINE перестроение отдельных секций секционированных объектов (таблиц или индексов).

Напомню, что некоторые редакции SQL Server (Enterprise, Evaluation, Developer) позволяют выполнять ряд операций в режиме ONLINE. Основное преимущество этого режима - это то, что в момент создания/изменения индекса мы можем продолжать работать с данными, в том числе вносить изменения в эти данные. Происходит это за счёт того, что блокировка схемы (Sch-M) не удерживается на всём этапе создания/изменения. С более полным списком возможностей, поддерживаемых различными выпусками, можно ознакомиться по ссылке: http://msdn.microsoft.com/ru-ru/library/cc645993.aspx


Действительно, возможность очень полезная, особенно, если у вас доступность данных - это одно из ключевых требований к системе. Но до версии SQL Server 2014 у нас возникает ряд ограничений, если мы работаем с секционированными объектами. Основное ограничение в том, что мы не можем проводить ONLINE операции над отдельно взятой секцией, а только над всем объектом целиком.

При попытке выполнить инструкцию:

alter table [MyTable] rebuild partition = 1 with (online = on)

мы получим исключение:

'online' is not a recognized ALTER INDEX REBUILD PARTITION option


Без указания режима ONLINE для секции мы получаем блокировку Sch-M на всю таблицу, что, согласитесь не приятно. При этом мы можем изменить режим эскалации (LOCK_ESCALATION) для нашей таблицы в надежде избавиться от укрупнения блокировки до уровня таблицы, т.к. в BOL сказано, что по умолчанию укрупнение стоит = TABLE, а для секционированной таблицы мы можем задать режим AUTO:


В секционированных таблицах допускается укрупнение блокировки до секций. После укрупнения блокировки до уровня секции дальнейшее укрупнение до гранулярности TABLE выполняться не будет.


Но для операций REBUILD это правило не действует и мы все-равно получаем блокировку уровня таблицы. И в том же BOL есть об этом упоминание:

Перестроение секционированного индекса нельзя выполнять в режиме в сети(ONLINE). Во время этой операции вся таблица блокируется.


А теперь представьте, что нам необходимо провести сжатие данных (data_compression) лишь в одной из секций, а при этой операции мы заблокируем всю таблицу. На эту тему даже есть фидбэк на официальном сайте: http://connect.microsoft.com/SQLServer/feedback/details/709976/table-lock-during-partition-compression.


И выдержка из ответа:

We are currently working on supporting Online Index Rebuild for a single partition and hopefully this will be available in our next release.


И это случилось! Поддержка ONLINE операций на уровне одной секции появилась в SQL Server 2014.

[Ещё]

Tags: , ,

SQL Server

SQL Server 2014 CTP1: новые системные объекты

by Alexey Knyazev 9. июля 2013 02:04

SQL Server 2014

На данный момент не так много информации в сети о всем изменениях, которые нас ждут в SQL Server 2014. При этом не стоит забывать, что это всего лишь первая публичная версия СТР (Community Technology Preview), а это значит, что до RTM (Release To Manufacturing) нас ещё ждёт очень много сюрпризов.

Но прежде, чем мы увидим публичное описание новых объектов, мы можем уже сейчас сравнить список системных объектов в SQL Server 2014 CTP1 со списком системных объектов в SQL Server 2014 SP1.

Для этого я прилинкую к экземпляру SQL Server 2014 экземпляр с SQL Server 2012 SP1. В моём случаи это именованный экземпляр: [ALOHAPC\SQL2012].


Теперь мы можем сравнить какие объекты появились в системном представлении sys.all_objects, а какие исчезли.

[Ещё]

Tags: ,

SQL Server

SQL Server 2014: Параллельная операция SELECT INTO

by Alexey Knyazev 30. июня 2013 01:07

SQL Server 2014Совсем недавно в общем доступе появилась версия SQL Server 2014 CTP1 - http://technet.microsoft.com/ru-ru/evalcenter/dn205290.aspx.

Microsoft SQL Server 2014 представляет на рынке новые возможности памяти, встроенные в основную базу данных, включая встроенную в память оперативную обработку транзакций (OLTP), дополняющую существующие возможности бизнес-аналитики и хранения данных в памяти, для создания самого многофункционального решения хранящейся в памяти базы данных. SQL Server 2014 также предлагает новые облачные возможности, позволяющие упростить перемещение существующих баз данных SQL в облако и открыть для себя новые сценарии гибридного развертывания.

Поэтому пора начать смотреть, что нового, что интересного нас ждёт в новой версии самой популярной промышленной СУБД.
Говоря о новинках стоит обратиться к ряду документов, которые так же появились в общем доступе:

Но обо всём по порядку, и начнём с одной очень интересной возможности, которая появилась в SQL Server 2014 - это параллельное выполнение операции SELECT...INTO.

[Ещё]

Tags: ,

SQL Server