500 likes | 890 Views
DAT 201. Microsoft. SQL Server 2012 - комплексная платформа управления данными предприятия и повышения эффективности бизнеса. Алексей Шуленин . Содержание. Что нового в мире SQL Server Изменения в лицензировании Как SQL Server 2012 позволит повысить
E N D
DAT 201 Microsoft SQL Server 2012- комплексная платформа управления данными предприятия и повышения эффективности бизнеса Алексей Шуленин
Содержание • Что нового в мире SQL Server • Изменения в лицензировании • Как SQL Server 2012 позволит повысить • Надежность и безопасность хранения данных • Производительность их обработки • Эффективность бизнес-анализа • Удобство разработки • ... • Демонстрация на примере новых возможностей T-SQL • Ресурсы и материалы для дальнейшего изучения • Вопросы
По итогам PASS Summit 2011(Сиэтл, 11-14 окт.) • SQL Server “Denali” получил официальное название SQL Server 2012 • Crescent -> Power View, Juneau -> SQL Server Developer Tools • Объявлено о взаимодействии с Hadoop • Передовой проект Apache на основе идей Google File System и вычислительной парадигмы MapReduce • Приложение распараллеливается на небольшие задания, каждое из которых может быть выполнено на любом из узлов кластера • Что позволяет масштабироваться на тысячи узлов и петабайты данных • В рамках соглашения о стратегическом сотрудничестве с основанной Yahoo компанией Hortonworks, Microsoft выпустила Hadoop Connector для SQL Server 2008 R2 • Набор Hadoop-сервисов для Windows Azure планируется выпустить в виде Community Technology Preview (CTP) до конца 2011 года, для Windows Server - в 2012 • Рассматривается также возможность интеграции Hadoop с Excel, PowerPivot и Power View
По итогам PASS Summit 2011(Сиэтл, 11-14 окт.) • Развитие мобильной бизнес-аналитики • По словам Теда Куммерта (Microsoft VP, Business Platform Decision), выпуск веб-инструментов в области BI с поддержкой touch-интерфейса для платформ iOS, Android и Windows Phone произойдет во второй половине 2012 г. • Более мощную разновидность аналитических клиентов планируется предусмотреть для планшетных компьютеров под управлением Windows8 • Консолидация тысяч БД в частном облаке • Квентин Кларк(MicrosoftVP, SQL Server) анонсировал доступность HP Enterprise Database Consolidation Appliance • SQL Azure • Макс.объем базы увеличен с 50 ГБ до 150 • Неограниченная масштабируемость за счет поддержки шардинга- распределения базы данных между несколькими SQL Serverами в Облаке • См. доклад РВС302, Денис Резник, «Масштабирование в SQL Azure - SQL Azure Federations» • Новые СТР для SQL Azure Reportingи SQL Azure Data Sync и новый SQL Azure Management Portal • См. доклад BIN105, Максим Кисельман, «BI в облачных вычислениях. SQL Azure Reporting»
Изменения в редакциях SQL Server 2012 • Три основных редакции (верхняя включает функциональность нижней) • Enterprise • BI (новая) • Standard • Уходят • DataCenter • Web – будет предлагаться только хостерам по SPLA • Workgroup • Остаются • PDW • Express • Developer • Evaluation • Compact • Добавляется LocalDB • SQL Express для разработчиков • Работает как отдельный процесс (не как сервис) • Такой же sqlservr.exe, что и Express;те жеограничения по памяти • В том же контексте безопасности, что и вызывающее приложение • На одной машине может запускаться несколько LocalDB-процессов • К базе можно соединяться a la SQL Compact (AttachDbFileName)
Сравнение редакций • http://www.microsoft.com/sqlserver/en/us/future-editions/sql2012-editions.aspx
Изменения в лицензировании SQL Server 2012 • Вместо лицензии per processor лицензия per core • Цена соотносится с процессорной из расчета 4-х ядер • Enterprise лицензируется per core • Предполагается теоретически неограниченная пользовательская нагрузка, для таких сценариев выгоднее per core • Можно будет отлицензировать как Server + CAL с момента выхода до 1 июля 2012 • BI (новая) – только как Server + CAL • Аналитические приложения – сравнительно невысокое число пользователей – выгоднее CAL • Standard – оба способа
Изменения в лицензировании SQL Server 2012 • Клиентская лицензия на 2012 дорожает на 27% • Дает право на доступ к любой редакции • Лицензирование SQL Server 2012 в виртуальных средах • Individual Virtual Machines • To license a VM with core licenses, customers can simply buy a core license for each virtual core allocated to the virtual machine (minimum of 4 core licenses per VM). • To license a VM with a server license (for Business Intelligence or Standard only), buy the server license and buy matching SQL Server CALs for each user. • Т.е. виртуалка лицензируется аналогично физ.машине, что облегчает ее переезд между хостерами • Maximum Virtualization • License all the physical cores on the server with Enterprise Edition core licenses and Software Assurance • Deploy an unlimited number of VMs • Подробнее – см. SQL Server 2012 Licensing Datasheet • http://www.microsoft.com/sqlserver/en/us/future-editions/sql2012-licensing.aspx
Изменения в лицензировании SQL Server 2012 • EA/EAP customers will have until their next EA/EAP renewal after 6/30/2012 to purchase additional server licenses for EE to complete currently planned projects. After that, all new EE licenses must be purchased per core. • All existing EE licenses under the Server and CAL model with Software Assurance can be upgraded to SQL Server 2012 at no additional cost, and EE server SA can be maintained to provide access to future software updates. • SQL Server 2012 Enterprise Edition, when licensed in the server + CAL license model, will be subject to a 20 core per server license maximum. If you purchased SQL Server 2008 R2 Enterprise Edition in the Server + CAL model with Software Assurance and at the launch of SQL Server 2012 are running on a server with > 20 physical cores, contact your Microsoft representative for help transitioning to the new licensing model. • Customers with processor licenses under SA can upgrade to SQL Server 2012 at no additional cost. At the end of the SA term, processor licenses will be exchanged for core licenses and customers can renew their SA on core licenses. • SQL Enterprise and Standard processor licenses under SA will be exchanged for a minimum of 4 core licenses per processor or for the actual number of cores in use. SQL Server Datacenter processor licenses will be exchanged for a minimum of 8 EE core licenses per processor or for the actual number of cores in use. • Подробнее – см. SQL Server 2012 Licensing Datasheet
Некоторые новые возможности SQL Server 2012
SQL Server 2012 как комплексная платформа данных * Новые/усовершенствованные возможности
Высокая доступность - AlwaysOn • Объединяет функциональность отказоустойчивых кластеров, зеркалирования и log shipping • Группа доступности включает несколько пользовательских БД, доступных в режиме чтения/записи • Их копии восстанавливаются (RESTORE WITH NO RECOVERY) на каждом экземпляре, к-й будет нести вторичные реплики • По желанию доступны в режиме чтения • Для данной группы доступности все экземпляры должны располагаться на узлах Windows Server Failover Cluster • При этом экземпляр может быть кластеризован или standalone – без разницы • Каждый экземпляр должен быть сконфигурирован как HADR-enabled • На каждом экземпляре должна иметься Database Mirroring Endpoint • Хотя в отл.от нынешнего зеркалирования реплик может быть не 1, а 4 (2 синхронных) • Создание групп доступности – см. в блоге Balmukund, SQL Server Denali - AlwaysON (HADR): Step-by-Setup setup guide
Высокая доступность - AlwaysOn • Имеется 2-узловой кластер. На каждый узел ставим SQL Server как некластеризованный экземпляр. • На каждом экземпляре из SQL Configuration Manager енейблим HADR Service • Создаем, собственно, высокодоступную группу (в SQL Mgmt Studio) • Добавляем в группу базы и экземпляры, на которых будут держаться реплики
Высокая доступность - AlwaysOn • При необходимости конфигурим конечные точки для зеркалирования • Собственно, все: • В кластер администраторе видим новый ресурс • Нажимаем кнопку Start Data Synchronization на экране слева внизу • Когда она заканчивается, в SQL Mgmt Studio в группе доступности появляются реплики (в скобках видим их роли) и ниже – какие БД входят в данную группу доступности
Высокая доступность - AlwaysOn • На primary меняем данные • И видим, что на secondary изменения тут же отразились • Делаем failover и видим, что роли поменялись • Таким образом, данная технология действительно сочетает в себе лучшие черты имевшихся • Надежную защиту кластерных ресурсов • В то же время мы кластеризуем не экземпляр целиком, а на уровне отдельных БД • Зеркалирование настраивается не для каждой базы по отдельности, а для группы баз сразу • В отличие от нынешнего зеркалирования может быть неск.вторичных реплик, как в log shipping • Централизованный удобный интерфейс для настройки и мониторинга
Управляемость – понятие самодостаточной (contained) базы • EXEC sp_configure 'contained database authentication', 1;RECONFIGURE WITH OVERRIDE;ALTER DATABASE ContainedDB1 SET CONTAINMENT = PARTIAL;USE ContainedDB;GOCREATE USER MyUser WITH PASSWORD = ‘Abra Cadabra';GO • Пока поддерживается частичная достаточность- SQL Server не препятствует созданию внешних сущностей, нарушающих достаточность базы; только показывает их • sys.dm_db_uncontained_entities • При переносе БД на другой сервер возникает проблема осиротевших пользователей, если соответствующие им логины на уровне сервера не созданы • Вообще перенос базы предполагает дополнительную головную боль еще о массе внешних моментов • Прилинкованные сервера, CLR-сборки, объекты сервис-брокера, задания SQL Agent, репликация, коллации, польз.ошибки в sys.messages, таблицы могут содержать внеш.ф-цию в ограничении или вычисляемой колонке, ... • Караул! • Простой пример • SELECT * FROM #foo AS aINNER JOIN dbo.foo AS bON a.bar = b.bar • Msg 468, Level 16, State 9, Line 1Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AI" and "Сyrillic_General_CI_AS" in the equal to operation. • Потому что база перенеслась в своей прежней коллации, а объекты tempdb по умолчанию создаются с коллацией нового сервера
Производительность • DAT303, Борис Барышников, «Использование столбцовых индексов для увеличения производительности запросов систем хранилищ данных» • DAT202, Борис Барышников, «Обзор SQL Server "Denali" Performance Dashboard Reports» • DAT305, Дмитрий Артемов, «Оптимизация приложений на базе SQL Server» • DAT304, Дмитрий Артемов, «Оптимизация инфраструктуры SQL Server» • DAT207, Вячеслав Гилев, «Особенности эксплуатации SQL Server 2008 R2 для 1С:Предприятие 8»
BISM – новый движок на стороне SSAS Business Intelligence Development Studio PowerPivot • BIN101, Максим Войцеховский/Иван Косяков, «Microsoft BI и SQL Server 2012- эволюция или революция?» • BIN303, Rafal Lukawiecki, «Что нового появится в Microsoft BI в 2012 году?» Существующие клиенты Crescent XML/A XML/A XML/A Режим BISM Режим OLAP/DataMining Multidimensional EDM Multidimensional DAX calculations (cкрипты MDX после SQL11) MDX calculations MOLAP ROLAP VertiPaq DirectQuery
Power View • Нынешние отчеты в большинстве своем статичны • Интерактивность исчерпывается параметрами, гиперссылками, подотчетами, сортировкой и раскрытием/сверткой • В остальном внешний вид отчета после его публикации фиксируется • Для добавления новых полей, переключения из табличного вида в матричный и т.д. отчет нужно открыть в Report Designer, изменить и переопубликовать • Не каждый бизнес-пользователь отважится открыть Visual Studio • Model Designer позволяет обеспечить некоторую свободу действий в пределах предлагаемых шаблонов отчетов • Сrescent – Web-based ad-hoc reporting tool • Приближен к сводным таблицам/графикам в Excel • Не отменяет Report Builder. Сосуществует. • Клиенты строят отчеты на основе семантической модели BI • Построен на основе Silverlight • Доступен при установке SSRS в режиме Sharepoint Integrated • См. BIN202, Rafal Lukawiecki, «Проект Crescent: эффективное средство работы с данными»
Data Quality Services • Основываются на разработках компании Zoomix, приобретенной в июле 2008 г. (пресс-релиз) • Примерно через год после Stratature, +EDM которой стали Master Data Services в 2008 R2 • И изначально позиционировались как акселератор для MDS • В настоящее время входят в SQL Server 2012 CTP3 • Cм. DAT206, Ярослав Помазков, «Управление качеством данных на базе SQL Server Master Data Services и Data Quality Services»
Последовательности • --Можно задействовать посл-ть в кач-ве значения колонки по умолчанию создав таким образом, автоинкрементную колонку. • alter table TestSeq add constraint df1 default (next value for Seq1) for id • insert TestSeq (fld) values ('ccc') • select * from TestSeq • --Можно задействовать посл-ть при массовой вставке записей. Чтобы гарантировать порядок, ставить over(order by ...). • select next value for Seq1 over (order by object_id) n, * into #MyObjects from sys.objects • select * from #MyObjects • --При откате транзакции значение не возвращается. • select current_value from sys.sequences where name = 'Seq1' • begin tran • insert TestSeq (id, fld) values (next value for Seq1, 'ccc') • rollback • select current_value from sys.sequences where name = 'Seq1' • if exists (select 1 from sys.sequences where name = 'Seq1') drop sequence Seq1 • create sequence dbo.Seq1 as int start with 1 increment by 1 maxvalue 1000 cycle • --Вот ее текущее значение. На начало работы оно = start with. • select current_value from sys.sequences where name = 'Seq1' • --Вызов next value возвращает current_value. • select next value for Seq1 • --В первый раз current_value не меняется • --Последующие вызовы увеличивают его на increment • --Вставка автоинкрементных значений в колонку таблицы. • create table TestSeq (id int, fld nvarchar(50)) • insert TestSeq (id, fld) values (next value for Seq1, 'aaa'), (next value for Seq1, 'bbb')
Последовательности • if exists (select 1 from sys.sequences where name = 'Seq1') drop sequence Seq1 • create sequence dbo.Seq1 as int start with 1 increment by 1 maxvalue 1000 cycle • Отдельный объект схемы • Счетчик, прирастающий на значение INCREMENT, начиная со значения start в пределах [MINVALUE, MAXVALUE] • Удобно по сравнению с identity, когда значение должно быть известно перед вставкой в автоинкрементную колонку • В отличие от identity колонки с sequences не защищены от перезаписи. Уникальность должна обеспечиваться приложением. • NO MINVALUE / NO MAXVALUE – будет взято минимальное / максимальное значение численного типа, определенного в AS • CYCLE – начинать по кругу при достижении MINVALUE / MAXVALUE (в зависимости от знака INCREMENT) или выкидывать exception • CACHE n – сколько след.значений будет храниться в памяти для повышения быстродействия. • Последнее кэшированное значение записывается в сист.табл. И сохраняется на диск • По достижении последнего значения следующие n значений записываются в память. Новое посл.зн-е сохр-ся в сист.табл. • При штатном гашении сервиса в сист.табл. записывается след.зн-е от достигнутого текущего • При нештатном – интервал от текущего до сохраненного пропадает • ALTER SEQUENCE – менять можно все • Метаданные - sp_sequence_get_range, sys.sequences
ORDER BY … OFFSET … FETCH … • Выбрать FETCH следующих записей, начиная с OFFSET, в порядке, заданном ORDER BY • Дань стандарту. До этого прекрасно делалось при помощи ROW_NUMBER() • declare @startpos int = 20, @n int = 10 • ;with cte as (select *, row_number() over (order by name) rowno from sys.objects) • select * from cte where rowno between @startpos + 1 and @startpos + @n • select * from sys.objects order by name offset @startpos rows fetch next @n rows only
Новые оконные предикаты и агрегатные функции • Возможность задания порядка при вычислении агрегата • select CustomerID, CompanyName, Weight, SUM(Weight) over (order by CustomerID rows between unbounded preceding and 1 preceding) from Customer • Значительно упрощает вычисление нарастающего итога • Ранее задачу можно было решить одним из трех способов: • Подзапрос • select CustomerID, CompanyName, Weight, (select SUM(Weight) from Customer t2 where t2.CustomerID < t1.CustomerID) from Customer t1 • Треугольное произведение таблицы саму на себя • select t2.CustomerID ID, t1.CustomerID ID_Preceding, t1.Weight from Customer t1 right join Customer t2 on t1.CustomerID < t2.CustomerID • --Сумма нарастающим итогом получается как сумма по группам ID: • select t2.CustomerID ID, sum(isnull(t1.Weight, 0)) s from Customer t1 right join Customer t2 on t1.CustomerID < t2.CustomerID group by t2.CustomerID • Курсор • Новый способ эффективнее
Новые оконные предикаты и агрегатные функции • Группировка по SalesOrderID (среднее число записей в группе = 17 • Сравнительная производительность на примере Sales.SalesOrderDetail из Adventure Works (121317 записей) • Без промежуточного группирования:
Новые оконные предикаты и агрегатные функции • Функция LAG(x, n) позволяет непосредственно получить значение из колонки х, отступив n записей назад • Третий аргумент позволяет задать значение по умолчанию, если отступ назад принес NULL • select *, lag(x, 1, 0) over (partition by grouping_id order by dt) from #t • Чтобы продвинуться вперед, следует использовать функцию LEAD • select *, lead(x, 1) over (partition by grouping_id order by dt) from #t
Новые оконные предикаты и агрегатные функции • Функции first_value() и last_value() возвращают первое и последнее значение в группе • select *, first_value(x) over (partition by grouping_id order by dt), last_value(x) over (partition by grouping_id order by dt) from #t • Когда внутри over() стоит order by, то по умолчанию диапазон действия функции - не целиком группа, а от ее начала и по текущую запись • select *, first_value(x) over (partition by grouping_id order by dt) first, last_value(x) over (partition by grouping_id order by dt rows between unbounded preceding and unbounded following) last from #t • Нарастающий итог по текущую запись • select *, sum(delta) over (partition by grouping_id order by dt rows between unbounded preceding and current row) as x from #t • Нарастающий итог до текущей записи • select *, sum(delta) over (partition by grouping_id order by dt rows between unbounded preceding and 1 preceding) as x from #t • Скользящее среднее • select *, avg(delta * 1.0) over (partition by grouping_id order by dt rows between 1 preceding and 1 following) as x from #t
Новые оконные предикаты и агрегатные функции • Для более подробной иллюстрации сошлюсь на свои посты в блоге • Нарастающий итог в Денали • Нарастающий итог - сравнение производительности • Нарастающий итог - обратная задача • Нарастающий итог - восполнение пропусков
THROW • Типовая ситуация применения: когда ловим ошибку в TRY ... CATCH обрабатываем какие-то случаи, а остальное перевыкидываем как есть в приложение • Такое проблематично сделать при помощи RAISERROR declare @i varchar(10) = 'aaa' --'0'; '0.001'; 'aaa' declare @j tinyint begin try select @j = 1.0 / cast(@i as decimal(10, 5)) end try begin catch if ERROR_NUMBER() = 8134 select 'Ошибка деления на ноль' else if ERROR_NUMBER() = 8115 select 'Арифметическое переполнение - в tinyint столько не влезает' else throw end catch • Если @i = '0', будет ошибка Msg 8134, Level 16, State 1 - Divide by zero error encountered. Мы ее ловим. • Если @i = '0.001', будет ошибка Msg 8115, Level 16, State 2 - Arithmetic overflow error converting expression to data type tinyint. Мы ее тоже ловим. • В случае появления какой-либо иной ошибки, мы ее не обрабатываем, а передаем вверх по стеку вызовов • Например,если @i = 'ааа', будет ошибка Msg 8114, Level 16, State 5 - Error converting data type varchar to numeric. • Она не будет обработана в блоке catch, а передана дальше в вызывающий модуль
THROW • В связи с появлением оператора THROW оператор RAISERROR стал deprecated. То есть он еще поддерживается, но пользоваться им не рекомендовано. • Основные отличия THROW от RAISERROR: • Если RAISERROR начинается не с сообщения об ошибке, а с ее номера, эта ошибка должна присутствовать в sys.messages ; THROW по барабану. • raiserror('Полный капец', 10, 1); raiserror(50001, 10, 1); throw 50001, 'Полный капец', 1 • THROW всегда считает, что severity level = 16 • В отличие от RAISERROR в THROW не поддерживается WITH: WITH LOG - сообщение об ошибке записывается в SQL Serverный Error Log и в Windowsовый Application Log. • THROW не поддерживает printfный стиль в сообщении об ошибке • Можно обойти при пом.ф-ции FORMATMESSAGE(), предварительно добавив сообщение об ошибке в sys.messages: • exec sp_addmessage @msgnum = 50001, @severity = 16, @msgtext = 'Полный %s', @replace = 'replace' • declare @s nvarchar(1000) = formatmessage(50001, 'успех'); • throw 50001, @s, 1 • exec sp_dropmessage @msgnum = 50001
EXEC WITH RESULT SETS use [Adventure Works DW 2008R2] exec sp_executesql @statement = N'select FirstName, MiddleName, LastName from DimCustomer where LastName like @x + ''%''; select EnglishProductName, SafetyStockLevel from DimProduct', @params = N'@x nvarchar(3)', @x = 'Y' with result sets ( ([Имя] nvarchar(5), [Отчество] nvarchar(3), [Фамилия] nvarchar(20)), ([Продукт] nvarchar(10), [Запас на складе] int))) • Если (n)varchar маленький по длине, произойдет обрезание • Если не может преобразовать фактический тип к декларированному – ошибка • Msg 8114, Level 16, State 2, Line ... Error converting data type nvarchar to int. • Наоборот, числа в строку преобразуются без проблем • См. такжеsys.dm_exec_describe_first_result_set(@tsql, @params) • sys.dm_exec_describe_first_result_set_for_object (Transact-SQL) and is similar to sp_describe_first_result_set (Transact-SQL).
Новое в GEOMETRY/GEOGRAPHY • Дуги • Известный еще с 2008-го метод STBuffer(@radius), как известно, дает не круг, а аппроксимирующий многоугольник • Кол-во точек варьируется в методе BufferWithTolerance(@radius, @tolerance, @relative) • Абсолютная погрешность (@relative = 0) – столько точек, чтобы откл-е от идеальной окружности не превышало погрешность (@tolerance) • Относительная (@relative= 1) = абсолютная / диаметр фигуры • STBuffer(@radius) =BufferWithTolerance(@radius, 0.001, 1) • В 2012 появилась честная поддержка дуг и окружностей • STBufferWithCurves(@radius) • Дуга задается 3 точками (в соответствии с OGC).CIRCULARSTRING – ломаная, состоящая из дуг (напр., окружность), СOMPOUNDCURVE – комбинация звеньев в виде дуг и отрезков (напр., сектор) • CURVEPOLYGON – область, границами которой являются СOMPOUNDCURVE • STCurveToLine(),CurveToLineWithTolerance(@tolerance, @relative) – аппроксимируют CIRCULARSTRING LINESTRING’ом, CURVEPOLYGON – POLYGON’ом
Новое в GEOMETRY/GEOGRAPHY • Геопространственные агрегатные функции • UnionAggregate строит суммарное объединение фигур в колонке • EnvelopeAggregate создает общий заключающий их прямоугольник • ConvexHullAggregate натягивает на всех минимальную выпуклую оболочку • CollectionAggregate добавляет их в результирующую GeometryCollection • В запросах аналогичны обычным агрегатам – SUM(), COUNT(), … • over(order by …) не поддерживается • Нелогично для GEOMETRYCOLLECTION, т.к. онапредполагается упорядоченной – метод STGeometryN()
Новое в GEOMETRY/GEOGRAPHY • Полный глобус • Для более подробной иллюстрации сошлюсь на свои посты в блоге: • Превращение последовательности точек в геометрическую фигуру • Продолжаем соединять точки в контур • Соединение точек в контур - обратная задача • Ориентация полигона на поверхности • EnvelopeCenter и EnvelopeAngle • Геопространственные агрегаты в Denali • STBuffer() и BufferWithCurves() • Центр и радиус дуги в географии • Тангаж, рысканье в норме. Выводим на орбиту ИСЗ.
FileTable • Хранить файлы в SQL Server ничуть не хуже, чем в файловой системе • На самом деле даже лучше, потому что при этом штатными средствами на раз обеспечивается • Транзакционность операций • Резервное копирование • Сортировка и поиск по атрибутам, полнотекстовый и семантический по содержанию • Безопасность, разделение доступа, администрирование на основе политик, ... • К сожалению, до последнего времени эти преимущества мало, что давали, потому что приложения привыкли работать с файлами при помощи Windows API • Чтобы открыть документ в Ворде, его придется выгрузить из SQL Server в файловую систему. Хотя бы на время. • Чтобы посмотреть фильм в плеере – аналогично и т.д. • FileTable – это способ засветить файлстримовский контент, хранящийся в SQLной базе, в виде файловой шары • \\<SQL-Server-Machine>\<InstanceShare>\<Database_Directory>\<FileTable_Directory>\ • Для Windows-приложения FileTable выглядит как обычная папка общего доступа, и оно может читать оттуда файлы, копировать туда новые, создавать директории и т.д. • SQL Server перехватывает эти вызовы и интерпретирует их внутри себя в привычные реляционные операции • Также над FileTable доступны прямые запросы, обновления и пр.операции ср-вами T-SQL • См. DAT210, Дмитрий Костылев, «FileTable - стирание границ между базой данных и файловой системой»
Полнотекстовый поиск • Можно искать не только по содержанию документа, но и по его расширенным св-вам, если IFilter их вытаскивает • Загружаем офисные фильтры (однократно для базы) • EXEC sp_fulltext_service 'load_os_resources',1; • EXEC sp_fulltext_service 'restart_all_fdhosts‘; • Создаем список свойств • CREATE SEARCH PROPERTY LIST p1; • Наполняем • ALTER SEARCH PROPERTY LIST [p1] ADD N'System.Author' WITH • (PROPERTY_SET_GUID = 'f29f85e0-4ff9-1068-ab91-08002b27b3d9', • PROPERTY_INT_ID = 4, PROPERTY_DESCRIPTION = N'System.Author') • Создаем/изменяем для него полнотекстовый индекс • ALTER FULLTEXT INDEX ON fttable SET SEARCH PROPERTY LIST = [p1]; • Ищем • SELECT * FROM fttable WHERECONTAINS(PROPERTY(ftcol, 'System.Author'), 'Пушкин');
Полнотекстовый поиск • Кастомизированный оператор NEAR позволяет задать порядок следования поисковых слов, а также макс.кол-во непоисковых, к-е разделяют пару поисковых • NEAR (( { <simple_term> | <phrase> | <prefix_term> } [,…n] ), [<maximum_distance> [, <match_order> ]) <maximum_distance> ::= { integer | MAX } <match_order> ::= { TRUE | FALSE } • SELECT candidate_name FROM CandidatesWHERE CONTAINS(Resume, NEAR((“SQL Server”, expertise),5)); • Новые XEvents для FTS • Index Reorganization Status / Progress • Execution Trace • Query Recompile Reason • Управление поточностью Master Merge • sp_fulltext_service 'master_merge_dop', <int_value, default 4>
Семантический поиск Keyphrases KeyphraseDocuments Исходная таблица ---------------------------------------------------------------------- На входе: текст(varchar, Office, PDF, HTML, email…) На выходе: ф-ции, возвр-е Rowset со стандартными SQL-запросами Illustrating example: ---------------------------------------------------------------------- ---------------------------------------------------------------------- 1 2b Полнотекстовая и семантическая обработка quarter, record, revenue… DocumentSimilarity 2a 3 Keyword Index (Full-Text)
Ближайшие семинары Russian SQL Server User Group 15 ноября 2011 г. «Что не хватает в BOL. Вопросы подготовки технического контента по SQL Server» Yelena House, Microsoft Corp., Program Manager, группа по разработке документации и работе с сообществом пользователей. «Улучшения полнотекстового поиска в Microsoft SQL Server 2012. Statistical Semantic Search» Denis Churin, Microsoft Corp., Principal Development Lead, US-SQL RDBMS Data Processing 30 ноября 2011 г. «Плагины к Microsoft Excel для работы с SQL Server и SQL Azure» Сергей Василенко, ген. директор "Гартл Технолоджи Корп.« Регистрация – на sql.ineta.ru -> Встречи Анонс
Ресурсы • System CLR Types • Remote Blob Store • Books On-line • Upgrade Advisor • Native Client • OLEDB Provider for DB2 v4.0 • Command Line Utilities (sqlcmd, bcp) • Service Broker External Activator • PowerShell Extensions • Shared Management Objects (SMO) • ADOMD.NET • Analysis Services OLE DB Provider • Analysis Management Objects (AMO) • Microsoft® Drivers 3.0 for PHP for SQL Server® CTP1 • StreamInsight v1.2 • Migration Assistant from Access, MySQL, Sybase, Oracle • См. DAT209 «Миграция с MySQL на SQL Azure» • Semantic Language Statistics • Report Builder • PowerPivot for Excel • Reporting Services Add-in for SharePoint® • Data-Tier Application Framework • Transact-SQL ScriptDom • Transact-SQL Compiler Service for Data-Tier Application Framework Build API • SQL Server® Compact 4.0 • SQL Server® JDBC Driver 4.0 • Microsoft® Connector 1.1 for SAP BW • SQL Server® code name 'Denali' CTP 3 Feature Pack (от 8 июля 2011 г.)
Ресурсы • SQL Server 2012 Developer Training Kit Web Installer Preview (от 11 окт. 2011 г.)
Ресурсы • SQL Server 2012 CTP3 • AdventureWorks 2008R2 SR1 • Adventure Works for SQL Server Denali CTP3 • Semantic Language Statistics Database • SQL Server 2012 CTP3 PowerPivot for Excel • SQL Server Developer Tools (“Juneau”) • См. DAT208, Александр Неволин, «Juneau - новый инструмент разработки баз данных в SQL Server 2012» • Visual Studio 2010 SP1 • Windows Azure SDK • Windows Azure Tools for VS2010
Обратная связь Уважаемые участники! Ваше мнение очень важно для нас! В блокноте, который находится в инфопаке участника, вы найдете анкету для оценки докладов Пожалуйста, оцените доклад и сдайте анкету при выходе из зала модератору Для участия в конкурсе заполненных анкет, отметьте в анкете номер, который указан на вашем бейдже Спасибо!
Вопросы • Код доклада: DAT201 • Докладчик: Алексей Шуленин, Microsoft • http://blogs.technet.com/b/isv_team/ • Вы сможете задать вопросы докладчику в зоне Microsoft в зале №17 в течение часа после завершения этой сессии