Массовая замена текста в объектах SQL Server

by Alexey Knyazev 27. сентября 2016 23:57
Если у вас возникнет потребность внести массовые изменения во все объекты БД (заменить одно значение на другое), то следующий скрипт сможет облегчить вам эту задачу. Кроме того, что он заменять указанный текст на новый, он ещё сохраняет на диск старую и новую версию файла, а это поможет вам в последствии легко заменить файлы в системе контроля версий, например, в TFS.
Скрипт написан на PowerShell и в текущей реализации работает с процедурами, функциями, триггерами и представлениями, но может быть легко дополнен. Для выгрузки скриптов в файлы используются два параметра: $backupFolder и $changeFolder. Кроме того, если вам не нужно заменять объекты на сервере, а только выгрузить файлы для последующей замены, то достаточно поменять параметр $alter с $true на $false.
[Ещё]

Tags: ,

PowerShell | SQL Server

Минимальное протоколирование (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