Алексей Шуленин

50

Upload: hung

Post on 14-Feb-2016

113 views

Category:

Documents


0 download

DESCRIPTION

DAT 201. Microsoft. SQL Server 2012 - комплексная платформа управления данными предприятия и повышения эффективности бизнеса. Алексей Шуленин . Содержание. Что нового в мире SQL Server Изменения в лицензировании Как SQL Server 2012 позволит повысить - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Алексей Шуленин
Page 2: Алексей Шуленин

DAT 201

SQL Server 2012 - комплексная платформа управления данными предприятия и повышения эффективности бизнеса

Алексей Шуленин Microsoft

Page 3: Алексей Шуленин

Содержание

Что нового в мире SQL Server Изменения в лицензированииКак SQL Server 2012 позволит повысить

Надежность и безопасность хранения данныхПроизводительность их обработкиЭффективность бизнес-анализаУдобство разработки...

Демонстрация на примере новых возможностей T-SQLРесурсы и материалы для дальнейшего изученияВопросы

Page 4: Алексей Шуленин

4

1996SQL Server 6.5

1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012

2005SQL Server 2005Unicode Support

Native XMLSQLCLR

Service BrokerIntegration Services

1993SQL Server 4.21

(NT)

1995SQL Server 6.0

1989SQL Server 1.0

(OS/2)

2000SQL Server 2000

Reporting Services

2010SQL Server 2008 R2

Data-tier AppsStreamInsight

PowerPivotMaster Data Services

2008SQL Server 2008Sparse Columns

Spatial TypesFILESTREAM

1998SQL Server 7.0

Dynamic LockingAuto-Tuning

Full-text searchReplication

Analysis Services

1991SQL Server 1.1

(OS/2)

2012SQL Server 2012

AlwaysOnColumnstore

FileTableSemantic Search

Power View

Apr 10 Jul 10 Oct 10 Jan 11 Apr 11 Jul 11 Oct 11

Aug 10SQL Azure SU4 RTW

Database CopyWeb Admin

Feb 10SQL Azure RTW

Feb 10SQL Azure SU1 RTW

Alter Edition

Apr 10SQL Azure SU2 RTW

MARS

Jun 10SQL Azure SU3 RTW

50 GB DbSpatial Type

HierarchyId Type

Dec 10SQL Azure SU6 RTW

DataSync CTP2

Apr 11SQL Azure SU V.Next

Multiple ServersServer Mgmt API

JDBCDAC Upgrade

Nov 10DataMarket RTW

SQL Azure Reporting CTP1

Feb 11SQL Azure Reporting CTP2

DataSync CTP2 Update

Jul 10DataSync CTP1

Aug 11New Portal Experience

Sparse ColumnsSQL Azure Reporting CTP3SQL Azure DataSync CTP3

DAC Import/Export ServiceDenali TSQL

Page 5: Алексей Шуленин

Что нового в мире SQL Server?

Page 6: Алексей Шуленин

По итогам PASS Summit 2011(Сиэтл, 11-14 окт.)

SQL Server “Denali” получил официальное название SQL Server 2012Crescent -> 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

Page 7: Алексей Шуленин

По итогам PASS Summit 2011(Сиэтл, 11-14 окт.)

Развитие мобильной бизнес-аналитикиПо словам Теда Куммерта (Microsoft VP, Business Platform Decision), выпуск веб-инструментов в области BI с поддержкой touch-интерфейса для платформ iOS, Android и Windows Phone произойдет во второй половине 2012 г. Более мощную разновидность аналитических клиентов планируется предусмотреть для планшетных компьютеров под управлением Windows 8

Консолидация тысяч БД в частном облакеКвентин Кларк (Microsoft VP, 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»

Page 8: Алексей Шуленин

Изменения в лицензировании SQL Server 2012

Page 9: Алексей Шуленин

Изменения в редакциях SQL Server 2012

Три основных редакции (верхняя включает функциональность нижней)

EnterpriseBI (новая)Standard

УходятDataCenterWeb – будет предлагаться только хостерам по SPLAWorkgroup

ОстаютсяPDWExpressDeveloperEvaluationCompact

Добавляется LocalDBSQL Express для разработчиковРаботает как отдельный процесс (не как сервис)Такой же sqlservr.exe, что и Express; те же ограничения по памятиВ том же контексте безопасности, что и вызывающее приложениеНа одной машине может запускаться несколько LocalDB-процессовК базе можно соединяться a la SQL Compact (AttachDbFileName)

Page 10: Алексей Шуленин

Сравнение редакций

http://www.microsoft.com/sqlserver/en/us/future-editions/sql2012-editions.aspx

Ent. BI Std.

Maximum Number of Cores OS Max16 Cores-DBOS Max-BI

16 Cores

Basic OLTP + + +

Programmability (T-SQL, Spatial Support, FileTable) + + +Manageability (SQL Server Management Studio, Policy-based Management)

+ + +

Corporate Business Intelligence (Reporting, Analytics, Multidimensional BI Semantic Model)

+ + +

Self-Service Business Intelligence (Alerting, Power View, PowerPivot for SharePoint Server)

+ +

Enterprise data management (Data Quality Services, Master Data Services)

+ +

In-Memory Tabular BI Semantic Model + +

Advanced Security (Advanced auditing, transparent data encryption) +

Data Warehousing (ColumnStore, compression, partitioning) +

High availability (AlwaysOn) + 2 nodes 2 nodes

Page 11: Алексей Шуленин

Изменения в лицензировании SQL Server 2012

Вместо лицензии per processor лицензия per core

Цена соотносится с процессорной из расчета 4-х ядер

Enterprise лицензируется per coreПредполагается теоретически неограниченная пользовательская нагрузка, для таких сценариев выгоднее per coreМожно будет отлицензировать как Server + CAL с момента выхода до 1 июля 2012

BI (новая) – только как Server + CALАналитические приложения – сравнительно невысокое число пользователей – выгоднее CAL

Standard – оба способа

Page 12: Алексей Шуленин

Изменения в лицензировании SQL Server 2012

Клиентская лицензия на 2012 дорожает на 27%Дает право на доступ к любой редакции

Лицензирование SQL Server 2012 в виртуальных средах

Individual Virtual MachinesTo 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 VirtualizationLicense all the physical cores on the server with Enterprise Edition core licenses and Software AssuranceDeploy an unlimited number of VMs

Подробнее – см. SQL Server 2012 Licensing Datasheet

http://www.microsoft.com/sqlserver/en/us/future-editions/sql2012-licensing.aspx

Page 13: Алексей Шуленин

Изменения в лицензировании 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

Page 14: Алексей Шуленин

Некоторые новые возможности SQL Server 2012

Page 15: Алексей Шуленин

SQL Server 2012 как комплексная платформа данных

15

Database Services

SQL Server*SQL Azure*

ReplicationSQL Azure DataSync*

Full Text & Semantic Search*

Data Integration Services

Integration Services*

Master Data Services*

Data Quality Services*

StreamInsight*Project “Austin”*

Analytical Services

Analysis Services*

Data Mining

PowerPivot*

Reporting Services

Reporting Services*SQL Azure Reporting*

Report Builder

Power View*

* Новые/усовершенствованные возможности

Page 16: Алексей Шуленин

Высокая доступность - 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

Page 17: Алексей Шуленин

Высокая доступность - AlwaysOnИмеется 2-узловой кластер. На каждый узел ставим SQL Server как некластеризованный экземпляр.

На каждом экземпляре из SQL Configuration Manager енейблим HADR Service

Создаем, собственно, высокодоступную группу (в SQL Mgmt Studio)

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

Page 18: Алексей Шуленин

Высокая доступность - AlwaysOnПри необходимости конфигурим конечные точки для зеркалирования

Собственно, все:

В кластер администраторе видим новый ресурс

Нажимаем кнопку Start Data Synchronization на экране слева внизу

Когда она заканчивается, в SQL Mgmt Studio в группе доступности появляются реплики (в скобках видим их роли) и ниже – какие БД входят в данную группу доступности

Page 19: Алексей Шуленин

Высокая доступность - AlwaysOnНа primary меняем данные

И видим, что на secondary изменения тут же отразились

Делаем failover и видим, что роли поменялись

Таким образом, данная технология действительно сочетает в себе лучшие черты имевшихся

Надежную защиту кластерных ресурсовВ то же время мы кластеризуем не экземпляр целиком, а на уровне отдельных БДЗеркалирование настраивается не для каждой базы по отдельности, а для группы баз сразуВ отличие от нынешнего зеркалирования может быть неск.вторичных реплик, как в log shippingЦентрализованный удобный интерфейс для настройки и мониторинга

Page 20: Алексей Шуленин

Управляемость – понятие самодостаточной (contained) базы

При переносе БД на другой сервер возникает проблема осиротевших пользователей, если соответствующие им логины на уровне сервера не созданы

Вообще перенос базы предполагает дополнительную головную боль еще о массе внешних моментов

Прилинкованные сервера, CLR-сборки, объекты сервис-брокера, задания SQL Agent, репликация, коллации, польз.ошибки в sys.messages, таблицы могут содержать внеш.ф-цию в ограничении или вычисляемой колонке, ...

Караул!

Простой примерSELECT * FROM #foo AS a INNER JOIN dbo.foo AS b ON 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 по умолчанию создаются с коллацией нового сервера

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

Page 21: Алексей Шуленин

Производительность

DAT303, Борис Барышников, «Использование столбцовых индексов для увеличения производительности запросов систем хранилищ данных»DAT202, Борис Барышников, «Обзор SQL Server "Denali" Performance Dashboard Reports»DAT305, Дмитрий Артемов, «Оптимизация приложений на базе SQL Server»DAT304, Дмитрий Артемов, «Оптимизация инфраструктуры SQL Server»DAT207, Вячеслав Гилев, «Особенности эксплуатации SQL Server 2008 R2 для 1С:Предприятие 8»

Page 22: Алексей Шуленин

BISM – новый движок на стороне SSAS

BIN101, Максим Войцеховский/Иван Косяков, «Microsoft BI и SQL Server 2012 - эволюция или революция?»BIN303, Rafal Lukawiecki, «Что нового появится в Microsoft BI в 2012 году?»

MDX calculations

MOLAP

Multidimensional

Реж

им

OLA

P/D

ataM

inin

g

DAX calculations (cкрипты MDX после SQL11)

VertiPaq

Multidimensional EDM

Реж

им

BIS

M

DirectQueryROLAP

XML/A XML/A XML/A

Существующие клиенты Crescent

PowerPivotBusiness Intelligence Development Studio

Page 23: Алексей Шуленин

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: эффективное средство работы с данными»

Page 24: Алексей Шуленин

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»

Качество Цель Проблема

Формат Данные соответствуют принятым правилам форматирования

Телефонный номер может встретиться как xxxxxxxxxx, (xxx) xxx-xxxx, +7 (xxx) xxx-xx-xx и т.д.

Стандарт Элементы данных определены и понимаются единым образом

Пол кодируется как = M\Ж в одной системе, M\F в другой, 0\1 в третьей и т.д.

Целостность Величины означают одно и то же

Всегда ли денежные суммы означают рубли или могут попадаться доллары (евро)

Полнота Присутствуют все необходимые данные

У 20% клиентов имя пустует или обозначено инициалом, в половине случаев почтовый индекс вбит как 111111

Точность (актуальность)

Данные получены из надежных источников и реальны

Поставщик значится ‘Активным’, хотя уже давно вышел из бизнеса

Валидность Значения попадают в приемлемые диапазоны

Номер месяца 1-12, зарплата меньше кол-ва атомов во Вселенной, ...

Дубликаты Одна сущность встречается неск.раз

Напр., Мария Исабель и Исабель Мария – это разные особы или в дан.случае одна?

Page 25: Алексей Шуленин

Немного подробнее о новшествах в T-SQL

Page 26: Алексей Шуленин

Последовательностиif exists (select 1 from sys.sequences where name = 'Seq1') drop sequence Seq1create 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')

--Можно задействовать посл-ть в кач-ве значения колонки по умолчанию создав таким образом, автоинкрементную колонку.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.objectsselect * from #MyObjects

--При откате транзакции значение не возвращается.select current_value from sys.sequences where name = 'Seq1'begin traninsert TestSeq (id, fld) values (next value for Seq1, 'ccc')rollbackselect current_value from sys.sequences where name = 'Seq1'

Page 27: Алексей Шуленин

Последовательностиif exists (select 1 from sys.sequences where name = 'Seq1') drop sequence Seq1create 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 – будет взято минимальное / максимальное значение численного типа, определенного в ASCYCLE – начинать по кругу при достижении MINVALUE / MAXVALUE (в зависимости от знака INCREMENT) или выкидывать exceptionCACHE n – сколько след.значений будет храниться в памяти для повышения быстродействия.

Последнее кэшированное значение записывается в сист.табл. И сохраняется на дискПо достижении последнего значения следующие n значений записываются в память. Новое посл.зн-е сохр-ся в сист.табл.При штатном гашении сервиса в сист.табл. записывается след.зн-е от достигнутого текущего При нештатном – интервал от текущего до сохраненного пропадает

ALTER SEQUENCE – менять можно всеМетаданные - sp_sequence_get_range, sys.sequences

Page 28: Алексей Шуленин

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

Page 29: Алексей Шуленин

Новые оконные предикаты и агрегатные функции

Возможность задания порядка при вычислении агрегата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

Курсор

Новый способ эффективнее

Page 30: Алексей Шуленин

Новые оконные предикаты и агрегатные функции

Группировка по SalesOrderID (среднее число записей в группе = 17

Без промежуточного группирования:

Сравнительная производительность на примере Sales.SalesOrderDetail из Adventure Works (121317 записей)

Page 31: Алексей Шуленин

Новые оконные предикаты и агрегатные функции

Функция LAG(x, n) позволяет непосредственно получить значение из колонки х, отступив n записей назад

Третий аргумент позволяет задать значение по умолчанию, если отступ назад принес NULLselect *, 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

Page 32: Алексей Шуленин

Новые оконные предикаты и агрегатные функцииФункции 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

Page 33: Алексей Шуленин

Для более подробной иллюстрации сошлюсь на свои посты в блоге

Нарастающий итог в ДеналиНарастающий итог - сравнение производительностиНарастающий итог - обратная задачаНарастающий итог - восполнение пропусков

Новые оконные предикаты и агрегатные функции

Page 34: Алексей Шуленин

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 trybegin catch if ERROR_NUMBER() = 8134 select 'Ошибка деления на ноль' else if ERROR_NUMBER() = 8115 select 'Арифметическое переполнение - в tinyint столько не влезает' else throwend 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, а передана дальше в вызывающий модуль

Page 35: Алексей Шуленин

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, 1exec sp_dropmessage @msgnum = 50001

Page 36: Алексей Шуленин

EXEC WITH RESULT SETSuse [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).

Page 37: Алексей Шуленин

Новое в 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’ом

Page 38: Алексей Шуленин

Новое в GEOMETRY/GEOGRAPHY

Геопространственные агрегатные функцииUnionAggregate строит суммарное объединение фигур в колонкеEnvelopeAggregate создает общий заключающий их прямоугольник ConvexHullAggregate натягивает на всех минимальную выпуклую оболочкуCollectionAggregate добавляет их в результирующую GeometryCollection

В запросах аналогичны обычным агрегатам – SUM(), COUNT(), …

over(order by …) не поддерживаетсяНелогично для GEOMETRYCOLLECTION, т.к. она предполагается упорядоченной – метод STGeometryN()

Page 39: Алексей Шуленин

Новое в GEOMETRY/GEOGRAPHYПолный глобус

Для более подробной иллюстрации сошлюсь на свои посты в блоге:

Превращение последовательности точек в геометрическую фигуруПродолжаем соединять точки в контурСоединение точек в контур - обратная задачаОриентация полигона на поверхностиEnvelopeCenter и EnvelopeAngleГеопространственные агрегаты в DenaliSTBuffer() и BufferWithCurves()Центр и радиус дуги в географииТангаж, рысканье в норме. Выводим на орбиту ИСЗ.

Page 40: Алексей Шуленин

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 - стирание границ между базой данных и файловой системой»

Page 41: Алексей Шуленин

Полнотекстовый поиск

Можно искать не только по содержанию документа, но и по его расширенным св-вам, если 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 WHERE CONTAINS(PROPERTY(ftcol, 'System.Author'), 'Пушкин');

Page 42: Алексей Шуленин

Полнотекстовый поиск

Кастомизированный оператор NEAR позволяет задать порядок следования поисковых слов, а также макс.кол-во непоисковых, к-е разделяют пару поисковых

NEAR (( { <simple_term> | <phrase> | <prefix_term> } [,…n] ), [<maximum_distance>      [, <match_order> ])

<maximum_distance> ::= { integer | MAX }<match_order> ::= { TRUE | FALSE }

SELECT candidate_name FROM Candidates WHERE CONTAINS(Resume, NEAR((“SQL Server”, expertise), 5));

Новые XEvents для FTSIndex Reorganization Status / ProgressExecution TraceQuery Recompile Reason

Управление поточностью Master Mergesp_fulltext_service 'master_merge_dop', <int_value, default 4>

Page 43: Алексей Шуленин

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

На входе: текст (varchar, Office, PDF, HTML, email…)На выходе: ф-ции, возвр-е Rowset со стандартными SQL-запросами

Illustrating example:

Key Title Document

D1 Annual Budget …

D2 Corporate Earnings …

D3 Marketing Reports …

… … …

---------------------------------------------------------

----------------------------------------------------------------------

----------------------------------------------------------------------

-------------

Исходная таблица

ID Keyword Colid … compDocid CompOc CompPid

K1 revenue 1 … 10,23,123 (1,4),(5,8),(1,34) 2,5,6,8,4,3

K2 growth 1 … 10,23,123 (1,5),(5,9),(1,34) 2,5,6,8,5,4

… … … … … …

Keyword Index (Full-Text)

Keyphrases KeyphraseDocumentsID DocID

T1 (revenue growth) D1 (Annual Budget)

T1 (revenue growth) D2 (Corporate Earnings)

T2 (Windows Azure) D3 (Marketing Reports)

… …

T1 (revenue growth) D7 (Finance Report)

… …

T2 (Windows Azure) D11 (Azure Strategy)

… …

ID Keyword

T1 revenue

T1 growth

T2 Windows

T2 Azure

… …

DocumentSimilarityDocID MatchedDocID

D1 (Annual Budget) D2 (Corporate Earnings)

D1 (Annual Budget) D7 (Finance Report)

D3 (Marketing Reports) D11 (Azure Strategy)

… …

Полнотекстовая и семантическая обработка

quarter, record, revenue…

2b

3

2 a1

Page 44: Алексей Шуленин

Анонс

Ближайшие семинары 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 -> Встречи

Page 45: Алексей Шуленин

РесурсыSQL Server® code name 'Denali' CTP 3 Feature Pack (от 8 июля 2011 г.)

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 APISQL Server® Compact 4.0 SQL Server® JDBC Driver 4.0 Microsoft® Connector 1.1 for SAP BW

System CLR TypesRemote Blob Store Books On-line Upgrade AdvisorNative Client OLEDB Provider for DB2 v4.0Command Line Utilities (sqlcmd, bcp)Service Broker External Activator PowerShell Extensions Shared Management Objects (SMO)ADOMD.NETAnalysis Services OLE DB Provider Analysis Management Objects (AMO)Microsoft® Drivers 3.0 for PHP for SQL Server® CTP1StreamInsight v1.2

Page 46: Алексей Шуленин

РесурсыSQL Server 2012 Developer Training Kit Web Installer Preview (от 11 окт. 2011 г.)

Page 48: Алексей Шуленин

Обратная связь

Уважаемые участники!Ваше мнение очень важно для нас!В блокноте, который находится в инфопаке участника, вы найдете анкету для оценки докладовПожалуйста, оцените доклад и сдайте анкету при выходе из зала модераторуДля участия в конкурсе заполненных анкет, отметьте в анкете номер, который указан на вашем бейдже

Спасибо!

Page 49: Алексей Шуленин

Вопросы

Код доклада: DAT201 Докладчик: Алексей Шуленин, Microsoft

http://blogs.technet.com/b/isv_team/

Вы сможете задать вопросы докладчику в зоне Microsoft в зале №17 в течение часа после завершения этой сессии

Page 50: Алексей Шуленин