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