Минимальное протоколирование (MIN_LOGGED) и полная (FULL) модель восстановления

by Alexey Knyazev 2. апреля 2016 19:14

SQL Server позволяет повысить производительность ряда операций за счёт минимального протоколирование изменений в журнал транзакций.
Минимальное протоколирование — это протоколирование только информации, необходимой для восстановления транзакции без поддержки восстановления на момент времени.
Список таких операций впечатляет (https://msdn.microsoft.com/ru-ru/library/ms190925.aspx):
  • Операции массового импорта (bcp, BULK INSERT и INSERT... SELECT)
  • Операции SELECT INTO
  • Инструкции WRITETEXT и UPDATETEXT при вставке или добавлении новых данных в столбцы с типом данных text, ntext и image
  • Частичные обновления типов данных с большими значениями с помощью предложений. WRITE инструкции UPDATE при вставке или добавлении новых данных
  • Операции с индексами (CREATE INDEX [включая индексированные представления], ALTER INDEX REBUILD или DBCC DBREINDEX, DROP INDEX), тесты над индексами я проводил ранее - http://t-sql.ru/post/index_minimally_logged.aspx
[Ещё]

Tags: ,

SQL Server

24 Hours of PASS, 2016

by Alexey Knyazev 30. марта 2016 19:55


16 - 17 марта 2016 года прошла 5-ая конференция https://www.youtube.com/user/russianvc.

Мой доклад SQL Server 2016. Temporal Tables:

Temporal Tables - это один из новых функционалов, который появится в SQL Server 2016.
В докладе мы подробно рассмотрим эту технологию, поговорим о преимуществах от её использования на примере реальных задач. Сравним с другими способами отслеживания изменений, такими, как логирование с помощью DML-триггеров, Change Tracking (CT) и Change Data Capture (CDC).


Презентация и архив с примерами.

Temporal_Tables.pptx (2,90 mb)

Demo.zip (6,44 kb)

[Ещё]

Tags: ,

SQL Server

Error 5161: An unexpected file id was encountered. File id %d was expected but %d was read from

by Alexey Knyazev 8. февраля 2016 20:38

Ошибка 5161 - An unexpected file id was encountered. File id %d was expected but %d was read from "%.*ls". Verify that files are mapped correctly in sys.master_files. ALTER DATABASE can be used to correct the mappings.
может возникнуть, когда вы пытаетесь подменить файлы БД.

Сценарий: у вас есть в наличии физические файлы базы данных (например, перенесены с другого сервера после краха) и вам нужно эти файлы подключить к серверу. Основной порядок действий в этом случаи может быть следующий:
  • Создать новую БД с аналогичной структурой
  • С помощью операции ALTER DATABASE ... MODIFY FILE указать расположение файлов, которые нам нужно "подцепить"
  • Перезапуск SQL Server
После этого, вместо того, чтобы получить доступ к данным, ваша БД переходит в статус Recovery Pending. [Ещё]

Tags: ,

SQL Server

Compress и Decompress

by Alexey Knyazev 28. декабря 2015 02:16

Рассмотрим ещё одну новую возможность, которая появилась в SQL Server 2016 CTP 3.1. Это встроенная поддержка сжатия GZIP: COMPRESS и DECOMPRESS.

В данной статье я попробую оценить эффективность использования встроенного сжатия. Посмотрим, какой объём занимают сжатые данные и оценим время, которое SQL Server тратит на сжатие и извлечение данных.

Для начала убедитесь, что вы используете SQL Server 2016 CTP 3.1 и выше. Я использую Microsoft SQL Server 2016 (CTP3.2) - 13.0.900.73 (X64)   Dec 10 2015 18:49:31   Copyright (c) Microsoft Corporation  Enterprise Evaluation Edition (64-bit) on Windows 10 Enterprise 6.3 <X64> (Build 10586: ).

[Ещё]

Tags: ,

SQL Server

DROP IF EXISTS

by Alexey Knyazev 5. ноября 2015 02:52

С выходом SQL Server 2016 CTP3 нас ожидает приятное дополнение в синтаксисе.

Изменения касаются DDL операций DROP и ALTER TABLE.

Теперь любую операцию по удалению объекта (таблицы, процедуры, функции, триггеры, индексы и т.д.), или столбца таблицы можно выполнить проще с помощью инструкции DROP IF EXISTS.

[Ещё]

Tags: ,

SQL Server

Как на t-sql узнать запущена ли служба SQL Server, а если запущена, то под кем?

by Alexey Knyazev 29. сентября 2015 00:00

Вопросы, которые периодически задают многие:

"Как узнать статус служб SQL сервер?"

"Как узнать под кем стартует сервис?"

"Как всё это сделать с помощью запроса T-SQL?"

 

Ответ на этот вопрос можно легко получить через стандартную оснаску Windows "Службы (Services)" - services.msc


[Ещё]

Tags: , ,

PowerShell | SQL Server

Live Query Statistics

by Alexey Knyazev 19. августа 2015 03:40

В родном клиенте SQL Server Management Studio 2016 появилась возможность в режиме реального времени просматривать, как выполняется запрос. Отслеживать построение плана и оперативно оптимизировать его.

Функционал поддерживается, как для новой версии SQL Server 2016, так и для SQL Server 2014 SP1.


[Ещё]

Tags: ,

SQL Server

SQL Server 2016: Новые ON-Line операции

by Alexey Knyazev 2. августа 2015 03:10

С выходом каждой новой версии SQL Server появляется всё больше операций, которые могут быть проведены ON-Line, т.е. без длительных блокировок и ожиданий. В SQL Server 2014, например, мы увидели ON-Line операции над отдельными секциями секционированных объектов.

Новая версия SQL Server 2016 так же добавит несколько операций ON-Line.

Во первых появится возможность совершать операцию TRUNCATE над отдельными секциями, а не только над всей таблицей. О преимуществах операции TRUNCATE над операцией DELETE я не буду останавливать в этой статье, просто скажу, что за счёт минимального количества операций протоколирования, операция TRUCATE выполняется в разы быстрее, чем операция DELETE. При этом мы можем указывать не только отдельную секцию, но и целый диапазон.

[Ещё]

Tags: , ,

SQL Server

SQL Server 2016: Row-Level Security

by Alexey Knyazev 3. июля 2015 02:48

Одна из интересных новинок в SQL Server 2016 - это Row-Level Security (RLS). Технология RLS (row-level security или безопасность на уровне строк) предоставляет возможность создания политик безопасности, которые ограничивают доступ пользователям к информации в БД.

Данная технология поддерживается во многих современных СУБД, но, к сожалению, в предыдущих версиях SQL Server реализовать RLS было не самой простой задачей. На сайте Microsoft есть целый документ, как это можно реализовать - http://download.microsoft.com/download/8/8/0/880F282A-AA4E-4351-83C0-DFFA3B56A19E/SQL_Server_RLS-CLS_White_paper.docx

Теперь рассмотрим, как это реализовано в SQL Server 2016. [Ещё]

Tags: ,

SQL Server

24 Hours of PASS, материал с моего доклада "Внутреннее устройство страниц и экстентов SQL Server"

by Alexey Knyazev 20. марта 2015 21:35

Tags:

SQL Server