Знакомимся с новыми возможностями SQL Server 2016

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

В SQL Server многое менялось со времени появления продукта 27 лет назад. В прошлом версии SQL Server 6.0 и 6.5 считались базой данных подразделения компании, непригодной для корпоративных рабочих нагрузок. Все изменилось после того, как в 1998 году Microsoft выпустила SQL Server 7.0. В версии SQL Server 7.0 была преобразована архитектура реляционной базы данных и добавлены службы OLAP Services и Data Transformation Services (DTS), закладывающие фундамент платформы обработки данных. В SQL Server 2000 разработчики Microsoft добавили поддержку XML и увеличили масштабируемость. В SQL Server 2005 появились среда SQL Server Management Studio и зеркальное отображение базы данных. Кроме того, произошла замена DTS на Integration Services, а службы OLAP Services уступили место Analysis Services. Версия SQL Server 2008 была дополнена функциями сжатия базы данных и регулятором ресурсов. В SQL Server 2008 R2 появились PowerPivot и Master Data Services. Версия SQL Server 2012 была дополнена группой доступности AlwaysOn и индексом columnstore. В SQL Server 2014 появились выполняющаяся в памяти OLTP и интеграция с гибридным «облаком».

После выхода SQL Server 2016 не осталось никаких сомнений в том, что SQL Server представляет собой полноценную корпоративную платформу обработки данных, которая постоянно совершенствуется. В объединившем в себе несколько статей «Путеводителе по основам SQL Server 2016» будут рассмотрены следующие важнейшие улучшения.

  • Безопасность. Учитывая все более тесную интеграцию с «облаком» и широко известные уязвимые места, раскрытые такими компаниями, как Home Depot и Target, неудивительно, что проблема безопасности стала основной в новом выпуске SQL Server 2016. Благодаря новым функциям безопасности, таким как Always Encrypted («Всегда зашифровано») и защита на уровне строк, SQL Server укрепляет свою репутацию самой надежно защищенной корпоративной базы данных.
  • Производительность. В прежних версиях SQL Server Microsoft представила несколько реализованных в памяти технологий, таких как индекс columnstore и механизм выполняющейся в памяти OLTP. Выпуская версию SQL Server 2016, компания Microsoft продолжила совершенствование реализованных в памяти технологий, обеспечивая большую совместимость с запросами на основе традиционных дисков.
  • Большие Данные и аналитика. Большие Данные и новые формы аналитики — два других очень перспективных тренда в развитии баз данных. Версия SQL Server 2016 дополнена функцией Polybase и обеспечивает переход к обработке больших массивов данных для семейства SQL Server. Кроме того, благодаря новой интеграции с языком R становятся более мощными функции анализа данных SQL Server.
  • Мобильность. Несомненно, мобильность и возможность приносить на работу личные устройства — два самых «горячих» тренда в современных информационных технологиях. SQL Server 2016 располагает новыми мобильными отчетами, встроенными в службы Reporting Services.

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

Повышаем эффективность хранилища SQL Server

Одно из важнейших новшеств версии SQL Server 2016 — работа с базами данных расширяемого типа Stretch. Это компонент, позволяющий распространять базу данных вашего локального экземпляра SQL Server в «облако» Azure. С помощью баз данных Stretch можно явным образом перенести исторические данные в Microsoft Azure. В отличие от обычного хранилища редко используемых данных, ваши исторические данные в Azure всегда подсоединены к сети и доступны для запросов. Базы данных Stretch помогут повысить эффективность вашей работы благодаря увеличению времени хранения данных в недорогих хранилищах Azure без необходимости масштабировать более дорогостоящие локальные хранилища.

В каких случаях выгодно использовать базы данных Stretch? Вам стоит обратить внимание на базу данных Stretch, если:

  • вам необходимо иметь в сети большие объемы данных в течение длительного времени;
  • вам нужно направлять запросы к историческим данным;
  • вы хотите сэкономить на характеристиках локального хранилища данных;
  • вы не можете создать резервные копии таблиц исторических данных и восстановить их в рамках выделенного для резервного копирования и восстановления времени.

Обзор принципов работы баз данных Stretch в SQL Server 2016 приведен на рисунке 1. Здесь мы видим, что пользовательские запросы направляются в локальный экземпляр SQL Server. База данных Stretch явным образом перемещает часть данных из локального экземпляра в базу данных Azure SQL. SQL Server 2016 будет одинаково успешно извлекать как локальные, так и удаленные данные в ответ на пользовательский запрос. При обслуживании удаленных запросов наблюдается небольшая задержка, которая возникает лишь в тех случаях, когда требуется обратиться к удаленным данным.

 

Принципы работы баз данных Stretch в SQL Server 2016
Рисунок 1. Принципы работы баз данных Stretch в SQL Server 2016

Microsoft предоставляет мастер Enable Database for Stretch («Включение переноса для базы данных»), с помощью которого можно выбрать таблицы базы данных для расширения в Azure. Новый мастер можно запустить из среды SQL Server Management Studio (SSMS), открыв обозреватель объектов и выбрав базу данных, для которой нужно включить функцию Stretch Database. Щелкните правой кнопкой мыши базу данных, выберите Tasks («Задачи»), а затем пункт Stretch («Растянуть»), чтобы запустить мастер. Вы можете перенести всю таблицу или указать фильтр на основе даты. Вы предоставляете учетные данные Azure и указываете, в каком месте Azure хранятся данные. Функция Stretch Database в SQL Server 2016 позаботится о перемещении данных в фоновом режиме. Функция Stretch Database гарантирует, что данные не будут потеряны, даже в случае аварии во время миграции. Для устранения проблем с подключением существует логика повторных попыток. Таблица всегда доступна в сети и к ней можно направлять запросы. Миграцию данных можно приостановить для диагностики неполадок на локальном сервере или увеличения пропускной способности сети. Динамическое административное представление sys.dm_db_rda_migration_status (https://msdn.microsoft.com/en-us/library/dn935017(v=sql.130).aspx) показывает состояние миграции.

Базы данных Stretch полностью совместимы с технологией прозрачного шифрования данных (TDE), а также с новыми функциями Always Encrypted и безопасности на уровне строк. Для работы с функцией Stretch Database требуется учетная запись Microsoft Azure. Можно оформить бесплатную пробную подписку, а подписки Azure предоставляются на основе действительно занимаемых вами вычислительных ресурсов и места в памяти. Дополнительные сведения о ценах SQL Server Stretch Database и Azure можно найти на странице SQL Server Stretch Database Pricing (https://azure.microsoft.com/en-us/pricing/details/sql-server-stretch-database/).

Интеграция гибридного «облака» с SQL Server 2016 

Безусловно, «облако» уже стало неотъемлемой составной частью большинства современных компаний. Однако администраторы баз данных SQL Server и специалисты по базам данных, как правило, относятся к числу потребителей, неохотно внедряющих «облачные» технологии. Microsoft признает, что большинство компаний не откажутся от локальной инфраструктуры в обозримом будущем. Поэтому было разработано несколько гибридных «облачных» решений, которые могут оказаться очень полезными даже непоколебимым профессионалам в области SQL Server. Возможности гибридного «облака» могут пригодиться компаниям любых размеров, даже если те располагают широко масштабируемым оборудованием, таким как HPE Superdome X. Версия SQL Server 2016 отличается от всех предшествующих более глубокой интеграцией с «облаком». Рассмотрим подробнее возможности гибридного «облака» и SQL Server 2016.

Реплики групп обеспечения доступности Always On в Azure

Группы обеспечения доступности (AG) Always On встроены в Azure, что позволяет создавать реплики Always On в «облаке». Интеграция Always On Azure в SQL Server 2016 позволяет создавать в Azure асинхронные реплики, используемые для автономного аварийного восстановления. Реплики Azure AG выполняются в виртуальных машинах Azure IaaS. Функция Azure AlwaysOn полностью интегрирована в среду SMSS. Среда SMSS в SQL Server 2016 предоставляет мастер, который проводит пользователя по процессу настройки реплик Azure.

Базы данных Stretch

Базы данных Stretch в SQL Server 2016 позволяют без труда распространить базу данных с локального экземпляра SQL Server на Azure. Базы данных Stretch явным образом переносят старые или редко используемые данные из локального хранилища в базу данных SQL Microsoft Azure. Можно поместить в Azure таблицы целиком или настроить фильтр даты для выборочного перемещения старых данных в Azure. Пользователи могут обращаться к ним точно так же, как если бы они размещались в локальном хранилище. SQL Server 2016 будет одинаково успешно извлекать как локальные, так и удаленные данные в ответ на пользовательские запросы. При обслуживании удаленных запросов наблюдается небольшая задержка, которая возникает лишь в тех случаях, когда требуется обратиться к удаленным данным.

Файлы данных SQL Server в Microsoft Azure

Другой способ использования преимуществ гибридного «облака» в SQL Server обеспечивают файлы данных SQL Server в Microsoft Azure. Файлы данных SQL Server в Microsoft Azure позволяют переместить файлы базы данных SQL Server из локального экземпляра SQL Server в хранилище больших двоичных объектов BLOB в Azure. Сохранение файлов базы данных в Azure поможет перемещать базы данных между компьютерами, а также переносить базы данных в Azure. Кроме того, можно хранить неиспользуемые данные в недорогих хранилищах Azure, что поможет снизить требования к локальному хранилищу. Файлы данных SQL Server в Microsoft Azure используются как с локальными экземплярами SQL Server, так и с экземплярами SQL Server на виртуальных машинах Azure IaaS.

Резервное копирование в Azure

Другой способ использования гибридного «облака» с SQL Server 2016 — для резервного копирования баз данных. Microsoft Azure может быть целевой папкой архивации для SQL Server 2016. Резервное копирование в Azure поддерживается как T-SQL, так и SSMS. В SQL Server 2016 усовершенствован механизм резервного копирования в Azure, обеспечивающий высокую производительность и функциональность благодаря применению больших двоичных объектов Azure. Максимальный размер резервной копии увеличен с 1 до 12,8 Тбайт.

Управляемое резервное копирование в Microsoft Azure

Управляемое резервное копирование SQL Server — еще один вариант резервного копирования баз данных SQL Server в Azure. Управляемое резервное копирование в Microsoft Azure отличается от резервного копирования SQL Server в Azure. Управляемое резервное копирование — инструмент для небольших и средних компаний, не имеющих в штате квалифицированных специалистов по SQL Server. Управляемое резервное копирование SQL Server в Windows Azure автоматизирует процесс резервного копирования SQL Server. Резервные копии пересылаются в хранилище BLOB-объектов Azure. Частота резервного копирования зависит от срока хранения и интенсивности обработки транзакций базы данных.

Интеграция SSIS и Azure

Службы SQL Server Integration Services (SSIS) интегрированы с инфраструктурой данных Azure и хранилищем данных SQL Azure. Инфраструктура данных — «облачная» служба интеграции данных, которая координирует и автоматизирует перемещение и преобразование данных. Задача инфраструктуры данных Azure — получать, готовить, преобразовывать и публиковать данные в «облаке». Хранилище данных SQL Azure — расширяемое распределенное хранилище данных с мультипараллельной обработкой и функциональностью корпоративного уровня. На сегодня SQL Server 2016 SSIS обеспечивает загрузку данных в обе названные службы Azure.

Использование динамического маскирования данных SQL Server 2016

Важно понимать, что динамическое маскирование данных — это не шифрование. Безопасность — одна из ключевых областей, в которой в новой версии SQL Server 2016 появилось множество важных новшеств. Разработчики Microsoft добавили функции Always Encrypted («Всегда зашифровано»), защиту на уровне строк и динамическое маскирование данных. Задача новых элементов безопасности — ограничить доступ к конфиденциальным данным, но применяемые для этого методы весьма различны. Динамическое маскирование данных, в сущности, скрывает конфиденциальные данные от пользователей, не имеющих достаточных прав. Динамическое маскирование данных помогает ограничить доступ к конфиденциальным данным с минимальными последствиями для уровня приложения. Оно реализуется на уровне базы данных и не влияет на уровень приложения. Благодаря динамическому маскированию данных специалисты могут работать с производственными таблицами, не раскрывая конфиденциальных данных, а сотрудники могут ограничить круг данных, видимых техническому персоналу при обращениях в службу поддержки или центр обработки вызовов.

Ключевое различие между динамическим маскированием данных и шифрованием состоит в том, что динамическое маскирование скрывает данные от конечного пользователя. Однако при этом данные, сохраненные на диске, не изменяются и не шифруются. Динамическое маскирование данных применяется, когда таблица строится с использованием инструкции CREATE TABLE или с помощью инструкции ALTER COLUMN. Динамическое маскирование данных столбца не мешает уполномоченным пользователям обновлять этот столбец. Даже если конечные пользователи видят маскированные данные при выполнении запроса к маскированному столбцу, они все же могут обновлять, вставлять и удалять данные, если у них есть разрешения на запись.

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

 

Встроенные функции маскирования данных

Предоставление разрешения UNMASK позволяет пользователю увидеть данные без маскирования. Ниже приведены примеры использования разрешений MASK и UNMASK.

  • Добавление разрешения UNMASK:
GRANT UNMASK TO User1
  •  Отмена разрешения UNMASK:
REVOKE UNMASK TO User1

Применяя динамическое маскирование данных, следует учитывать некоторые обстоятельства. Нельзя использовать его со столбцами Always Encrypted и данными типа FILESTREAM. Хотя данные, хранящиеся в базе данных, не маскированы, если пользователь выполняет команду SELECT INTO или INSERT INTO, чтобы скопировать данные из маскированного столбца в другую таблицу, то результат в целевой таблице будет маскирован. Вы можете воспользоваться представлением sys.masked_columns, чтобы увидеть столбцы, к которым применено маскирование. Это динамическое административное представление (DMV) возвращает все столбцы, и столбцы is_masked и masking_function указывают, маскирован ли столбец и какая функция маскирования применялась.

Динамическое маскирование данных можно сочетать с функцией Always Encryp­ted, защитой на уровне строк и прозрачным шифрованием данных (TDE), чтобы создать исчерпывающую многоуровневую стратегию безопасности.

Выбираем технологию обеспечения доступности SQL Server

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

Экземпляры отказоустойчивого кластера (FCI) AlwaysOn

Название AlwaysOn, на первый взгляд описательное, стало источником недоразумений, когда компания Microsoft представила эту технологию в версии SQL Server 2012. Оно не обозначает какой-то один компонент, на самом деле это общий термин для двух различных технологий доступности. Первая из них — экземпляры отказоустойчивого кластера (FCI) AlwaysOn, вторая — группы доступности (AG) AlwaysOn. AlwaysOn FCI построена на основе отказоустойчивой кластеризации Windows и обеспечивает защиту от незапланированных отключений серверов. FCI защищает SQL Server на уровне экземпляров и обеспечивает автоматическую отработку отказа в случае выхода сервера из строя. Служба SQL Server запускается на одном из оставшихся узлов кластера. Время, необходимое для запуска службы, зависит от уровня активности сервера. Прежде чем можно будет перезапустить службу, все зафиксированные транзакции в журнале транзакций должны быть применены повторно, а все незафиксированные транзакции отменены. Для неактивного сервера это займет всего несколько секунд. Для очень активного сервера выполнение такой задачи может потребовать нескольких минут. Редакция QL Server 2016 Enterprise поддерживает до 64 узлов, а редакция Standard — до двух узлов кластеров FCI.

Группы доступности (AG) AlwaysOn

Между группами доступности AlwaysOn и AlwaysOn FCI есть существенные различия. Группы доступности обеспечивают защиту на уровне базы данных. Впервые появившиеся в SQL Server 2012, группы доступности могут защитить несколько баз данных и отличаются очень высокой скоростью автоматической и ручной отработки отказов для всех защищенных баз данных. Отработка отказа выполняется всего за несколько секунд. Группам доступности необходим кластер Windows Server, но, в отличие от FCI, каждый узел кластера работает с собственным экземпляром SQL Server. Группы доступности пересылают записи журнала транзакций из первичной реплики во вторичные. Вторичные реплики можно сделать удобными для чтения и использовать для подготовки отчетов или резервного копирования. Одно из важных достоинств групп доступности состоит в том, что они позволяют сочетать синхронные и асинхронные реплики. Пользователи версии SQL Server 2016 могут иметь до восьми вторичных и трех синхронных реплик. Синхронные реплики, как правило, используются для достижения высокой доступности при автоматической отработке отказов и обычно подключаются к сетям с высокой задержкой в отдельных регионах или в «облаке». Редакция SQL Server 2016 Enterprise поддерживает до восьми вторичных реплик, а редакция Standard — до двух вторичных реплик. Вы можете сочетать AlwaysOn FCI и группы доступности AlwaysOn для защиты на уровне сервера и базы данных.

Зеркальное отображение базы данных

Зеркальное отображение базы данных появилось в SQL Server 2005 и было предшественником групп доступности. Как и группы доступности, зеркальное отображение базы данных осуществляется путем пересылки записей журнала транзакций в дублируемый сервер. Зеркальное отображение базы данных обеспечивает защиту одной базе данных, и администратор должен выбрать синхронную или асинхронную реализацию. Зеркальные базы данных не поддерживают доступ на чтение. Редакция SQL Server 2016 Enterprise поддерживает синхронное или асинхронное зеркальное отображение базы данных. Редакции Standard и Business Intelligence Edition поддерживают режим Safety Full Only Mode (синхронный). Зеркальное отображение базы данных — простой метод, для которого не требуется кластер Windows Server. Однако специалисты Microsoft планируют удалить зеркальное отображение базы данных из следующей версии SQL Server, так что это определенно технология прошлого, а не будущего.

Пересылка журналов

Пересылка журналов — изначальная технология аварийного восстановления SQL Server, всегда существовавшая как способ самостоятельного устранения неполадок. Компания Microsoft ввела пересылку журналов как встроенную функцию в SQL Server 2008. В этом случае также применяется пересылка записей журнала транзакций на один или несколько целевых серверов. В отличие от групп доступности и зеркального отображения базы данных, пересылка журналов в реальном времени не работает. Журнал транзакций периодически архивируется, а затем пересылается и восстанавливается на вторичных экземплярах. Доставка журналов поддерживает ограниченный доступ на чтение к вторичным базам данных во всех редакциях SQL Server.

Усовершенствования In-memory OLTP в SQL Server 2016

Технология выполнения обработки In-memory OLTP, реализованная в версии SQL Server 2014, стала самым важным улучшением, внесенным Microsoft в реляционную базу данных, на протяжении нескольких версий. In-memory OLTP, первоначально известная под условным названием Hekaton, повышает производительность OLTP-запросов путем перемещения избранных таблиц в память, а также компилирования хранимых процедур в собственном коде x86. Это не ограниченная команда консоли базы данных PINTABLE в версии SQL Server 6.5. Механизм In-memory OLTP располагает совершенно новым обработчиком запроса без блокировок с управлением оптимистическим параллелизмом. Новый механизм In-memory OLTP предназначен для работы на скоростях оперативной памяти. Для него требуется редакция SQL Server 2016 Enterprise, но он работает со всеми стандартными серверами x86 (при наличии достаточного объема памяти). В зависимости от области применения, In-memory OLTP обеспечивает повышение производительности до 30 раз. Каждый, кому приходилось заниматься оптимизацией производительности, знает, что даже двукратный выигрыш очень важен для большинства критичных бизнес-приложений. Чтобы упростить перенос приложений в In-memory OLTP, компания Microsoft предоставляет инструмент Analysis Migrate Report (AMR). С его помощью можно проанализировать рабочую нагрузку базы данных и выбрать таблицы и хранимые процедуры, наиболее подходящие для переноса в In-memory OLTP.

Хотя новый механизм In-memory OLTP обеспечивает поразительное увеличение производительности, его первоначальной реализации в SQL Server 2014 были свойственны некоторые ограничения. Рекомендовалось, чтобы общий размер таблиц в памяти не превышал 256 Мбайт; поддерживались не все типы таблиц, как и не вся функциональность базы данных SQL Server. Например, не поддерживались большие объекты (LOB) и XML. Среди отсутствующих важных функций базы данных была поддержка кластеризованных индексов, проверочных ограничений и внешних ключей.

В SQL Server 2016 многие из этих ограничений сняты. Рекомендуемый максимальный размер таблицы увеличен до 2 Гбайт. Другое превосходное новшество — возможность сочетать индекс columnstore с таблицами In-Memory OLTP, в сущности удваивающая выигрыш в производительности памяти. Теперь поддерживаются тип данных FileStream и прозрачное шифрование данных (TDE). Среди других усовершенствований — поддержка внешних ключей и проверочные ограничения, а также поддержка нескольких активных результирующих наборов (режим MARS). Вложенные вызовы собственных процедур и скомпилированные в собственном коде скалярные, определяемые пользователем функции также поддерживаются. Частично поддерживается операция ALTER TABLE. В предыдущей версии приходилось удалять и воссоздавать таблицы в памяти, чтобы внести изменения в схему. В версии SQL Server 2016 можно добавлять и удалять столбцы, индексы и ограничения в автономном режиме. Кроме того, теперь можно работать с таблицами в памяти с использованием конструктора таблиц SQL Server Management Studio (SSMS).

В новой версии SQL Server 2016 устранены многие проблемы, которые мешали внедрению In-memory OLTP. В результате больше компаний смогут воспользоваться преимуществами в производительности, которые обеспечивает данная технология.

Новые возможности службы Reporting Services в SQL Server 2016

Трудно переоценить вклад служб Reporting Services со времени своего появления, однако в нескольких последних версиях SQL Server в них не вносилось значительных улучшений. С выходом версии SQL Server 2016 положение определенно изменилось. Службы Reporting Services в SQL Server 2016 дополнены рядом очень важных новых функций.

Службы Reporting Services, новшество версии SQL Server 2005, превратились в одну из важнейших подсистем SQL Server. С помощью Reporting Services можно составлять и выполнять отчеты с использованием данных из реляционных баз данных SQL Server и баз данных Analysis Services. Новый внутренний механизм визуализации HTML5 обеспечивает более единообразное и верное отображение службами Reporting Services отчетов в различных браузерах, в том числе Edge, Chrome, Firefox и Safari Printing. Среди более заметных новшеств поддержка мобильных отчетов, разбиение отчетов на страницы и новый веб-портал. Рассмотрим эти функции подробнее.

Мобильные отчеты

Несомненно, самое важное новшество SQL Server 2016 Reporting Services — поддержка мобильных отчетов.

В последнее время очень важной тенденцией было внедрение потребительских ИТ-технологий в компаниях, и большинство из них предусмотрело меры для использования сотрудниками личных устройств. По данным отчета U. S. Mobile Forecast, подготовленного IDC, 70% сотрудников компаний в США пользуются мобильной связью. Ожидается, что в предстоящие годы этот показатель будет только расти, как и число мобильных устройств в эксплуатации. Компаниям требуется найти способ отображения корпоративных данных на этих мобильных устройствах. Microsoft приобрела компанию Datazen и использовала ее технологии создания мобильных отчетов в SQL Server 2016. Мобильные отчеты SQL Server 2016 изначально совместимы с Windows, iOS, Android и HTML 5. Кроме того, имеется несколько настраиваемых макетов для различных формфакторов. Конструктор отчетов располагает визуальной палитрой перетаскивания для создания интерактивных визуализаций данных, а также позволяет быстро строить прототипы с применением имитационных данных. Мобильные отчеты могут обращаться к корпоративным источникам данных через подключение к службам Reporting Services. Пример мобильных отчетов SQL Server 2016 показан на экране 1.

 

Мобильные отчеты
Экран 1. Мобильные отчеты

Компонент SQL Server 2016 Mobile Reports предоставляет одно мобильное приложение для Power BI и мобильных отчетов SSRS. В нем предусмотрены собственные мобильные функции, оптимизированные для сенсорных устройств, а также возможность своевременно обновлять мобильные данные с использованием запросов, выполняемых в реальном времени, или периодических плановых обновлений данных. Пользователи также могут работать с мобильными отчетами, даже когда они отключены от сети. Новый издатель мобильных отчетов SQL Server позволяет создавать и публиковать мобильные отчеты SQL Server в новом веб-портале Reporting Services.

Новый веб-портал

На смену диспетчеру отчетов предыдущих выпусков пришел новый веб-портал Reporting Services. Он располагает обновленным современным интерфейсом, в котором представлены ключевые индикаторы производительности (KPI), мобильные отчеты, отчеты с разбивкой на страницы, файлы Excel и Power BI Desktop (см. экран 2). Новый веб-портал может быть дополнен логотипом и цветами компании с использованием пакета брендинга.

 

Веб-портал Reporting Services
Экран 2. Веб-портал Reporting Services

Новые отчеты с разбиением на страницы

Reporting Services 2016 также поддерживают новые отчеты с разбиением на страницы. Построитель отчетов был усовершенствован благодаря более современному и рациональному пользовательскому интерфейсу. Появились новые стили диаграмм и датчиков, в том числе типы диаграмм «дерево» и «солнечные лучи». Кроме того, предусмотрена функция закрепления элементов отчетов на информационной панели Power BI. Можно закреплять датчики, карты, диаграммы и изображения как плитки на информационных панелях Power BI с возможностью углубленной детализации до исходных отчетов. Можно экспортировать презентации PowerPoint из отчетов с разбивкой на страницы. Изменились и функции печати, для которой больше не нужны надстройки ActiveX. Служба Reporting Services 2016 располагает современной функциональностью печати на основе формата PDF, совместимой со многими браузерами.

SQL Server 2016: интеграция с JSON

До появления версии SQL Server 2016 желающим реализовать нотацию объектов JavaScript в SQL Server приходилось самостоятельно заботиться о поддержке языка JSON. Версия SQL Server 2016 дополнена встроенной поддержкой JSON с возможностью форматировать и экспортировать данные в нотации JSON; загружать текст JSON в таблицы; извлекать значения из текста JSON; индексировать свойства в тексте JSON.

Главная тема версии SQL Server 2016 — широкое применение «облака» и «облачных» служб, но при этом легко упустить из виду такое новшество, как встроенная поддержка JSON (нотация объектов JavaScript). JSON — упрощенный формат обмена данными на основе подмножества языка программирования JavaScript. Его просто понять человеку и удобно анализировать и формировать компьютеру. Поэтому JSON представляет собой широко распространенный формат для обмена данными в современном «облаке», Интернете и мобильных приложениях. JSON также используется для хранения неструктурированных данных в файлах журналов и базах данных, отличных от SQL, таких как Hadoop, Couchbase Server и Microsoft Azure DocumentDB. Многие веб-службы REST возвращают результаты и принимают входные данные в формате JSON.

Базовая структура JSON

Если вы не знакомы с JSON, важно понять, что в его основе лежат две базовые структуры: коллекция пар имя/значение и упорядоченный список значений. Пример структуры имя/значение JSON показан ниже:

{
    "id": 1,
    "name": "A green door",
     "price": 12.50,
    "tags": ["home", "green"]
}

Эта текстовая структура очень удобна для обмена данными между системами.

Поддержка JSON в SQL Server 2016

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

Поддержка JSON в SQL Server 2016 отличается от поддержки языка XML, располагающего собственным типом данных. JSON, напротив, реализуется как тип NVARCHAR. Это избавляет от необходимости изменять схему базы данных и перезагружать данные для использования новой интеграции JSON. Применение NVARCHAR также приводит к тому, что JSON поддерживается всеми компонентами SQL Server, которые поддерживают тип NVARCHAR. В сущности, это означает, что JSON будет поддерживаться всюду, в том числе при использовании технологии In-memory OLTP, индекса columnstore, служб SSIS и SSAS. Даже новые функции безопасности, такие как Always Encrypted («Всегда зашифровано»), безопасность на уровне строк и прозрачное шифрование данных, будут поддерживать JSON.

Интеграция реляционных данных и JSON

SQL Server 2016 позволяет экспортировать реляционные данные в формате JSON для удобного использования в веб-службах и «облачных» службах, а также преобразовывать данные JSON в реляционные данные. Обзор поддержки JSON в SQL Server 2016 представлен на рисунке 2.

 

Интеграция SQL Server 2016 с JSON
Рисунок 2. Интеграция SQL Server 2016 с JSON

Чтобы экспортировать реляционные данные в формате JSON, необходимо задействовать новый оператор FOR JSON с предложениями T-SQL SELECT. Добавление оператора FOR JSON в запрос T-SQL SELECT приведет к форматированию результатов запроса как JSON и возвратит данные в формате JSON клиенту. Каждая строка в наборе результатов будет форматирована как один объект JSON.

Для преобразования текста JSON в реляционные данные специалисты Microsoft добавили функцию OPENJSON. OPENJSON — функция с табличным значением (TVF), которая принимает в качестве входных данных текст JSON и формирует для каждого элемента одну строку реляционных данных в результатах выполнения. OPENJSON обеспечивает представление документа JSON в виде набора строк с возможностью указать столбцы в наборе строк и пути к свойству для заполнения столбцов. Результаты функции OPENJSON можно использовать в предложении T-SQL FROM, как любой другой набор столбцов.

Функции JSON

SQL Server 2016 также располагает несколькими встроенными функциями для работы с данными JSON:

  • JSON_VALUE — извлекает скалярное значение из строки JSON;
  • JSON_QUERY — извлекает объект или массив из строки JSON;
  • ISJSON — проверяет, содержит ли строка допустимый JSON.