Улучшенные способы программирования (компонент Database Engine)

К расширениям компонента Компонент Database Engine в области программирования относятся таблицы FileTables, статистический семантический поиск, полнотекстовый поиск в области свойств и настраиваемый поиск по сходству, разбиение на страницы при нерегламентированном запросе, поддержка сегмента дуги для пространственных типов данных, поддержка объектов последовательности, доступная по умолчанию поддержка 15 000 секций, а также ряд улучшений и дополнений для Transact-SQL.

Собственные веб-службы XML (конечные точки SOAP/HTTP) удалены.

Начиная с версии SQL Server 2012, нельзя создавать и изменять конечные точки SOAP/HTTP с помощью инструкций CREATE ENDPOINT и ALTER ENDPOINT.

Таблицы FileTable

Функция FileTable реализована на основе технологии SQL Server FILESTREAM для поддержки пространства имен файлов Windows и совместимости с приложениями Windows для файлов данных, хранящихся в SQL Server. Это позволяет приложению интегрировать свои компоненты хранения и управления данными, а также обеспечивает работу интегрированных служб SQL Server (таких как полнотекстовый и семантический поиск) с неструктурированными данными и метаданными. Кроме того, упрощается управление политиками и администрирование данных.

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

Дополнительные сведения о возможностях FileTable см. в разделе Таблицы FileTable (SQL Server).

Статистический семантический поиск

Статистический семантический поиск обеспечивает глубокий анализ неструктурированных документов, хранящихся в базах данных SQL Server, путем извлечения статистически соответствующих ключевых фраз с последующим (на основе этих фраз) обнаружением похожих документов. Эти результаты предоставляются в виде структурированных данных с помощью трех функций наборов строк языка Transact-SQL.

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

Дополнительные сведения см. в разделе Семантический поиск (SQL Server).

Чтобы появилась возможность использования семантического поиска, необходимо установить, присоединить и зарегистрировать дополнительную базу данных. Дополнительные сведения см. в разделе Установка и настройка семантического поиска.

Свойства поиска

Начиная с SQL Server 2012, можно настроить в полнотекстовом индексе поддержку поиска, ограниченного определенными свойствами, например Author и Title, которые извлекаются фильтром IFilter. Такая форма поиска называется поиск свойств. Возможность поиска свойств для заданного типа документа зависит от того, извлекает ли соответствующий фильтр (IFilter) свойства поиска при полнотекстовом индексировании. К фильтрам IFilter, извлекающим ряд свойств документа, относятся фильтры IFilter для типов документов Microsoft Office 2007 (DOCX, XLSX, PPTX и др.) Дополнительные сведения см. в разделе Поиск свойств документа с использованием списков свойств поиска.

Настраиваемый параметр NEAR

Начиная с SQL Server 2012, можно настраивать поиск по сходству с помощью нового настраиваемого параметра NEAR предиката CONTAINS или функции CONTAINSTABLE. Настраиваемое выражение NEAR позволяет дополнительно указывать максимальное число слов, не включаемых в поиск, которое может разделять первое и последнее слово поиска для возвращения результата. Настраиваемое выражение NEAR также позволяет дополнительно указывать, что слова и фразы соответствуют критериям поиска, только если они встречаются в том порядке, в котором они указаны. Дополнительные сведения см. в разделе Поиск слов близких к другим с использованием оператора NEAR.

Новые средства разбиения по словам и парадигматические модули

В этом выпуске были обновлены все средства разбиения по словам и парадигматические модули, используемые полнотекстовым и семантическим поиском, за исключением тех, которые используются в корейском языке. Для обеспечения согласованности между содержимым индексов и результатами запросов рекомендуется после обновления версии выполнить повторное заполнение существующих полнотекстовых индексов.

  1. Средства разбиения по словам сторонних поставщиков для английского языка, входившие в предыдущие выпуски SQL Server, заменены компонентами Microsoft. Если необходимо сохранить поведение, существовавшее в предыдущем выпуске, см. раздел Изменение средства разбиения по словам, используемого для английского (США) и английского (Британского).

  2. Средства разбиения по словам сторонних поставщиков для датского, польского и турецкого языков, входившие в предыдущие выпуски SQL Server, заменены компонентами Microsoft. Эти новые компоненты включены по умолчанию.

  3. Добавлены средства разбиения по словам для чешского и греческого языков. В предыдущих выпусках SQL Server компонент полнотекстового поиска (Full-Text Search) не поддерживал эти два языка.

  4. Работа новых средств разбиения по словам изменилась. Дополнительные сведения см. в разделе Изменения в функциях полнотекстового поиска. Если необходимо сохранить способ работы, существовавший в предыдущем выпуске, см. раздел Перевод средств разбиения по словам, используемых поиском, на предыдущую версию.

  5. С этим выпуском устанавливаются последние версии средств разбиения по словам и парадигматических модулей Microsoft, однако не устанавливаются самые последние версии фильтров Microsoft. Чтобы загрузить последние фильтры, см. раздел Пакеты фильтров Microsoft Office 2010.

Новые и расширенные возможности работы с пространственными данными

Новые возможности работы с пространственными данными в SQL Server 2012 представляют новую ступень развития поддержки пространственных данных в SQL Server. Поддержка пространственных объектов полного земного шара и дуг на эллипсоиде предоставляется впервые в отрасли систем управления реляционными базами данных. Функциональные возможности типа данных geography и диапазон поддерживаемых для него методов сравнялись с возможностями типа данных geometry. Значительно повысилась общая производительность, в том числе производительность пространственных индексов и методов. Эти и другие усовершенствования в поддержке пространственных данных представляют собой значительный шаг вперед в развитии возможностей SQL Server по работе с пространственными данными.

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

Улучшенные типы пространственных данных

Новые дуги и связанные методы

  • Новые подтипы. Появилось 3 новых подтипа дуг:

    • CircularString

    • CompoundCurve

    • CurvePolygon

  • Новые методы. С этими дуговыми объектами работают все существующие методы. Также появились следующие новые методы.

    • BufferWithCurves() использует дуги для построения буферизованного объекта, используя намного меньшее число точек по сравнению с STBuffer().

    • Методы STNumCurves() и STCurveN() используются для прохода по списку дуговых границ.

    • Методы STCurveToLine() и CurveToLineWithTolerance() используются для аппроксимации дуг сегментами линий с погрешностью по умолчанию и задаваемой пользователем погрешностью.

Новые и обновленные методы и агрегаты для типов geometry и geography

  • Новые методы.

    • Метод IsValidDetailed() возвращает сообщение, помогающее выявить причину, по которой пространственный объект оказался недопустимым.

    • Метод HasZ возвращает значение 1 (true), если пространственный объект содержит хотя бы одно значение Z.

    • Метод HasM возвращает значение 1 (true), если пространственный объект содержит хотя бы одно значение M.

    • Метод AsBinaryZM() добавляет поддержку значений Z и M в формат OGC WKB.

    • Метод ShortestLineTo() возвращает объект LineString, представляющий кратчайшее расстояние между двумя объектами.

    • Метод STLength() обновлен и теперь работает и с допустимыми и с недопустимыми объектами LineString.

    • Новый MinDbCompatibilityLevel() используется для обеспечения обратной совместимости. Он показывает, могут ли пространственные объекты обрабатываться в SQL Server 2008 и SQL Server 2008 R2.

  • Новые агрегаты. Эти агрегаты доступны только в Transact-SQL и недоступны в клиентской библиотеке программирования.

    • UnionAggregate

    • EnvelopeAggregate

    • CollectionAggregate

    • ConvexHullAggregate

Повышенная точность.

Все операции построения объектов и создания связей теперь выполняются с точностью 48 бит (в SQL Server 2008 и SQL Server 2008 R2 точность составляла 27 бит). Это может уменьшить ошибки, вызванные округлением координат с плавающей запятой.

Усовершенствования типа geography

  • Полный земной шар. Теперь SQL Server поддерживает пространственные объекты крупнее логического полушария. В SQL Server 2008 географические объекты должны были быть меньше логического полушария. В SQL Server 2012 они могут достигать размеров всего земного шара. Новый тип объектов FULLGLOBE доступен для создания новых объектов и в качестве результата операции.

  • Новые методы.

    • Для недопустимых объектов. Теперь тип geography позволяет вставлять в таблицу недопустимые объекты. Методы STIsValid() и MakeValid() позволяют обнаруживать и исправлять недопустимые объекты типы geography аналогично объектам типа geometry.

    • Для ориентации кольца. Полигоны типа geography теперь могут размещаться без учета ориентации кольца. Это может привести к непредвиденным последствиям. Метод ReorientObject() может изменить ориентацию колец многоугольников в случаях, если они построены с неправильной ориентацией.

    • Методы типа geometry, добавленные для типа geography. Методы STWithin(), STContains(), STOverlaps() и STConvexHull() ранее были доступны только для типа geometry, а теперь добавлены и для типа geography. За исключением STConvexHull(), эти новые методы поддерживаются пространственными индексами.

  • Новый идентификатор SRID. Новый идентификатор пространственной ссылки (SRID) 104001 добавлен в список поддерживаемых систем пространственных ссылок. Этот новый идентификатор представляет сферу единичного радиуса и может использоваться с типом geography для выполнения оптимизированных вычислений, когда не требуются более точные эллиптические формулы.

Повышение производительности пространственных данных

Усовершенствования пространственных индексов

  • Новая автоматическая сетка. Новый пространственный индекс автоматической сетки доступен для обоих пространственных типов (geometry_auto_grid и geography_auto_grid). Новая автоматическая сетка использует другую стратегию, чтобы выбрать оптимальное соотношение производительности и эффективности. Дополнительные сведения см. в разделе CREATE SPATIAL INDEX (Transact-SQL).

  • Новое указание пространственного индекса SPATIAL_WINDOW_MAX_CELLS. Это новое указание пространственного индекса исключительно важно для настройки производительности запросов с помощью пространственного индекса. Для плотных пространственных данных часто необходимо увеличенное значение SPATIAL_WINDOW_MAX_CELLS, а для оптимальной производительности разреженных пространственных данных необходимо уменьшенное значение SPATIAL_WINDOW_MAX_CELLS. Это указание не гарантирует, что пространственный индекс будет использоваться в плане запроса. Однако если оно используется, то переопределяется параметр WINDOW_MAX_CELLS по умолчанию.

  • Сжатие для пространственных индексов. Дополнительные сведения см. в разделе CREATE SPATIAL INDEX (Transact-SQL).

Дополнительное усовершенствование производительности

  • При использовании определенного синтаксиса доступен оптимизированный план запроса ближайшего соседа.

  • Оптимизировано несколько других методов для распространенных сценариев.

  • Пространственные агрегаты имеют повышенную производительность из-за улучшения, которое затрагивает все агрегаты определяемого пользователем типа CLR.

Другие усовершенствования пространственных данных

Вспомогательные хранимые процедуры для пространственных данных

Доступны две новые вспомогательные хранимые процедуры. Эти процедуры могут использоваться для оценки распределения пространственных данных в таблице по заданному пространственному столбцу.

Поддержка материализованных вычисляемых столбцов

Определяемые пользователем типы и пространственные типы теперь могут сохраняться в вычисляемых столбцах.

Изменения в клиентской библиотеке программирования

Обнаружение метаданных

Параметр SET FMTONLY для определения формата ответа без фактического выполнения запроса заменен процедурами sp_describe_first_result_set, sp_describe_undeclared_parameters, sys.dm_exec_describe_first_result_set и sys.dm_exec_describe_first_result_set_for_object.

EXECUTE, инструкция

Инструкция EXECUTE теперь может указывать метаданные, возвращаемые инструкцией с помощью аргумента WITH RESULT SETS. Дополнительные сведения см. в разделе EXECUTE (Transact-SQL).

Поддержка UTF-16

Параметры сортировки дополнительных символов (SC) UTF-16

Новое семейство параметров сортировки дополнительных символов (SC) можно использовать с типами данных nchar, nvarchar и sql_variant. Например: Latin1_General_100_CI_AS_SC или (при использовании параметров сортировки для японского языка) Japanese_Bushu_Kakusu_100_CI_AS_SC. Эти параметры сортировки кодируют символы Юникода в формате UTF-16. Символы со значениями кодовой точки больше 0xFFFF требуют двух последовательных 16-разрядных слов. Они называются дополнительными символами, а два последовательных 16-разрядных слова — суррогатной парой. Параметры сортировки SC могут улучшить возможности поиска и сортировки в функциях, использующих типы данных Юникода nchar и nvarchar. Дополнительные сведения см. в разделе Поддержка параметров сортировки и Юникода.

Параметр сортировки дополнительных символов (SC) UTF-16 для XML

В версии SQL Server 2012 добавлен новый параметр сортировки — SC (дополнительные символы), который определяет, учитывают ли параметры сортировки символы UTF-16. Дополнительные сведения см. в разделе Поддержка параметров сортировки и Юникода. SQL Server 2012 также поддерживает данный параметр сортировки в XML-схеме типов SQL и вообще везде, где SQL Server обеспечивает доступ или использование этих сведений в XML-контексте. Это следующие области.

  • Схема XML типов SQL. Текущая версия схемы: 1.2. Схема обеспечивает обратную совместимость; целевое пространство имен изменилось. Теперь схема предоставляет глобальный атрибут supplementaryCharacters.

  • Директива XMLDATA для FOR XML. Новый глобальный атрибут доступен во встроенных схемах и аннотациях экземпляров, формируемых директивой XMLSCHEMA, параллельно со схожими атрибутами, например localeId и sqlCompareOptions. Эта директива поддерживается для FOR XML в режимах RAW и AUTO, но не в режимах EXPLICIT или PATH.

  • Коллекция схем XML sys.sys. Новый глобальный атрибут заранее заполняется во встроенной коллекции схем XML sys.sys и неявно доступен всем другим коллекциям XML-схем, импортирующих XML-схему типов SQL.

  • Представления каталога. Новый глобальный атрибут теперь перечисляется в следующих представлениях каталога:

    • sys.xml_schema_components

    • sys.xml_schema_attributes

    • sys.xml_schema_component_placements

  • Обновленные коллекции схем XML. После перехода с предыдущей версии SQL Server новый глобальный атрибут предоставляется во всех коллекциях схем XML, импортирующих схему XML типов SQL.

  • Наборы XML-столбцов. Новый глобальный атрибут добавляется в значения набора XML-столбцов, представляющие строки sql_variant, в которых используются новые параметры сортировки UTF-16. Он также может применяться во время вставки и обновления для установки строковых значений типа sql_variant в разреженных столбцах для использования параметров сортировки, учитывающих символы UTF-16.

Реализация разбиения на страницы при нерегламентированном запросе

Можно указать диапазон строк, возвращаемых инструкцией SELECT на основе заданных значений смещения строк и количества строк. Это удобно, если нужно управлять количеством строк, отправляемых клиентскому приложению в ответ на определенный запрос. Дополнительные сведения см. в разделе Предложение ORDER BY (Transact-SQL).

Объекты последовательности

Объект последовательности представляет собой определяемый пользователем объект, привязанный к схеме, который формирует последовательность числовых значений в соответствии со спецификацией, с которой эта последовательность создавалась. Он работает сходным образом со столбцом идентификаторов, но использование порядковых номеров не ограничено одной таблицей. Дополнительные сведения см. в разделе Порядковые номера.

Инструкция THROW

С помощью инструкции THROW можно вызывать и передавать исключение блоку CATCH конструкции TRY…CATCH. Дополнительные сведения см. в разделе THROW (Transact-SQL).

14 новых функций и 1 измененная

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

Новые функции:

Функции преобразования

Функции даты и времени

Логические функции

Строковые функции

Помимо появления 14 новых функций, изменилась одна из существующих. Существующая функция LOG (Transact-SQL) теперь имеет необязательный второй параметр base.

SQL Server Express LocalDB

SQL Server Express LocalDB — это облегченная версия Express, которая имеет все программные функции, запускается в пользовательском режиме, быстро устанавливается, не требует настройки и имеет низкие системные требования. Выпуск LocalDB SQL Server предназначен для разработчиков программ. При установке LocalDB выполняется копирование минимального набора файлов, необходимых для запуска компонента Компонент SQL Server Database Engine. После установки LocalDB разработчики могут установить соединение с помощью специальной строки подключения. При соединении необходимая инфраструктура SQL Server создается и запускается автоматически, что позволяет приложению использовать базу данных без выполнения сложной настройки, занимающей много времени. Средства разработчика позволяют использовать Компонент SQL Server Database Engine для написания и проверки кода Transact-SQL без необходимости управления полным экземпляром сервера SQL Server. Управление экземпляром SQL Server Express LocalDB можно осуществлять с помощью служебной программы SqlLocalDB.exe. SQL Server Express LocalDB следует использовать вместо устаревшего компонента пользовательского экземпляра SQL Server Express. Дополнительные сведения см. в разделе SQL Server 2012 Express LocalDB.

Новые и улучшенные указания оптимизатора запросов

Синтаксис табличной подсказки FORCESEEK был изменен. Теперь можно более точно управлять доступом к индексам путем задания метода доступа к индексам и их столбцам. Существующий синтаксис FORCESEEK остался без изменений и может использоваться как и прежде. Если вы не планируете пользоваться новыми функциями, то никакие изменения в приложения вносить не потребуется.

Добавлена табличная подсказка FORCESCAN. Она дополняет указание FORCESEEK, указывая, что оптимизатор запросов должен использовать в качестве пути доступа к таблице или представлению, на которые ссылается запрос, только операцию просмотра индекса. Указание FORCESCAN может оказаться полезным в тех запросах, где оптимизатор недооценивает число затрагиваемых строк и выбирает операцию поиска, а не просмотра. Указание FORCESCAN может быть указано с указанием INDEX или без него. Дополнительные сведения см. в разделе Табличные указания (Transact-SQL).

Улучшения расширенных событий

Имеются следующие улучшения в области расширенных событий.

page_allocated:

  • Поля: worker_address, number_pages, page_size, page_location, allocator_type, page_allocator_type, pool_id

page_freed:

  • Поля: worker_address, number_pages, page_size, page_location, allocator_type, page_allocator_type, pool_id

allocation_failure:

  • Поля: worker_address, failure_type, allocation_failure_type, resource_size, pool_id, factor

Были изменены следующие расширенные события.

resource_monitor_ring_buffer_record:

  • Удалены поля: single_pages_kb, multiple_pages_kb

  • Добавлены поля: target_kb, pages_kb

memory_node_oom_ring_buffer_recorded:

  • Удалены поля: single_pages_kb, multiple_pages_kb

  • Добавлены поля: target_kb, pages_kb

Улучшена поддержка предложения OVER

В предложение OVER была добавлена поддержка оконных функций. Оконные функции выполняют вычисления, охватывающие набор строк, которые имеют определенную связь с текущей строкой. Например, можно использовать предложение ROWS или RANGE в наборе строк для вычисления скользящего среднего или совокупного значения. Дополнительные сведения см. в разделе Предложение OVER (Transact-SQL).

Кроме того, в агрегатных функциях, допускающих задание предложения OVER, теперь допускается упорядочивание строк в секциях.

Аналитические функции

Были добавлены следующие аналитические функции.

CUME_DIST (Transact-SQL)

LAST_VALUE (Transact-SQL)

PERCENTILE_DISC (Transact-SQL)

FIRST_VALUE (Transact-SQL)

Предложение LEAD (Transact-SQL)

PERCENT_RANK (Transact-SQL)

Предложение LAG (Transact-SQL)

PERCENTILE_CONT (Transact-SQL)

В функциях XQuery учитываются суррогаты

Рекомендация W3C для функций и операторов XQuery требует, чтобы в них суррогатная пара, представляющая символ Юникода из старших диапазонов, считалась единым глифом в кодировке UTF-16. Однако в версиях SQL Server до SQL Server 2012 строковые функции не определяли суррогатные пары как один символ. Некоторые строковые операторы, например для вычисления длины строк и извлечения подстрок, возвращали неправильные результаты. Теперь SQL Server 2012 полностью поддерживает UTF-16 и правильную обработку суррогатных пар. Дополнительные сведения см. в пункте «Функции XQuery учитывают суррогаты» раздела Критические изменения в функциях компонента ядра СУБД в SQL Server 2012.

См. также

Основные понятия

Новые возможности (компонент Database Engine)