Очередная раздача книг по 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

ALTER TABLE SWITCH statement failed. Check constraints or partition function of source table [XXX] allows values that are not allowed by check constraints or partition function on target table [YYY].

by Alexey Knyazev 11. февраля 2014 16:22

Любой разработчик, который рано или поздно начинает работать с секционированными таблицами, может столкнуться при переключении секций на ошибку в формате

Msg 4972, Level 16, State 1, Line 1
ALTER TABLE SWITCH statement failed. Check constraints or partition function of source table [XXX] allows values that are not allowed by check constraints or partition function on target table [YYY].


Сейчас я покажу одну из самых частых причин подобных ошибок!

[Ещё]

Tags: ,

SQL Server

T-SQL - язык года (2013)

by Alexey Knyazev 30. января 2014 01:38

По итогам 2013-ого года T-SQL был признан языком года (по результатам исследований "TIOBE Software"). При этом за прошедший год популярность языка выросла более чем на 12 пунктов и Transact-SQL вошёл в десятку самых популярных языков в мире. По итогам 2012-ого года он находился всего лишь на 22 месте.

Что касаемо PL/SQL, то он тоже имеет положительный тренд по итогам года и его популярность увеличилась с 21 места до 17-ого, но при этом он всё-таки значительно уступает T-SQL.

Общий результат TOP20 популярности языков программирования на январь 2014 года ниже:

[Ещё]

Tags:

SQL Server

eBooks: бесплатные книги по SQL Server

by Alexey Knyazev 18. января 2014 21:54

Большая коллекция бесплатных книг по SQL Server от лучших экспертов по базам данных. Коллекция постоянно пополняется и эта страница будет периодически обновляться.




[Ещё]

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