Академия Специальных Курсов по Компьютерным Технологиям
    Главная страница Послать письмо
 
AskIt.ru  
   
   
   
   
   
   
 
 
  Главная / Заказные курсы / Microsoft SQL Server 2005 для администраторов
 
 

Получить учебные материалы по этому курсу


<-- Назад Читать дальше -->

1.2. Новые возможности SQL Server 2005 для программистов

CLR Integration, Native XML Web Services, тип данных XML, TRY ... CATCH, функции ранжирования RANK(), DENSE_RANK(), NTILE() и ROW_NUMBER(), модификатор MAX, Common Table Expression

В этом разделе кратко перечисляются те новые возможности, которые SQL Server 2005 предоставляет для программистов. Эти возможности подробно рассмотрены в другой книге автора, которая называется "SQL Server 2005 для программистов" и готовится к выходу в издательстве "БХВ-Петербург".

q      CLR (Common Runtime Language) Integration — интеграция среды выполнения .NET. Теперь можно обращаться к классам сборок .NET прямо из кода Transact-SQL. Это, с одной стороны, ответ Oracle, где можно обращаться к классам Java, а с другой стороны, расширение возможностей, реализованных в предыдущих версиях SQL Server при помощи хранимых процедур автоматизации (SP_OACreate, SP_OAMethod и т. п.), которые использовались для обращения к классам COM. Обращаться к сборкам .NET очень удобно во многих ситуациях. Например, когда вы хотите использовать уже готовый программный код (для выполнения операций в файловой системе, для работы с электронной почтой и т. д.), когда вам нужно реализовать выполнение некоторых ресурсоемких операций (например, шифрование) во внешних программных модулях, когда вы хотите использовать программные конструкции обычных языков программирования и т. п. Отметим только, что для всех баз данных SQL Server 2005 CLR Integration по умолчанию отключена (как и возможность применения хранимых процедур автоматизации SP_OACreate, SP_OAMethod и др.). Проще всего для включения этих возможностей использовать консоль SQL Server Surface Area Configuration (см. разд. 3.5).

q      Возможность создавать свои собственные агрегатные функции. В предыдущих версиях SQL Server можно было использовать только встроенные агрегатные функции (SUM(), MAX(), MIN(), AVG() и т. п.). В SQL Server 2005 можно создавать свои собственные агрегатные функции со своей программной логикой. Эти функции должны быть написаны на .NET-совместимых языках в виде классов с обязательным набором свойств и методов. Затем скомпилированную сборку нужно зарегистрировать в базе данных при помощи команды CREATE ASSEMBLY, а затем еще раз зарегистрировать ее в базе данных уже как пользовательскую агрегатную функцию при помощи команды CREATE AGGREGATE.

q      Возможность создавать свои пользовательские типы данных .NET. В предыдущих версиях SQL Server также можно было создавать пользовательские типы данных (на основе встроенных), но здесь имеется в виду совершенно другое. В SQL Server предыдущих версий пользовательские типы данных использовались в основном как дополнительное средство проверки вводимых пользователем значений (классический пример — пользовательский тип данных для почтового индекса). В SQL Server 2005 появилась возможность создавать пользовательские типы данных в виде классов .NET со своим набором свойств и методов. Затем эти типы можно использовать для столбцов таблиц, или для переменных в коде Transact-SQL, или для передачи параметров хранимых процедурам и функциям и т. п.

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

q      Создание программных объектов (хранимых процедур, триггеров, пользовательских функций) с применением кода .NET. С использованием средств .NET можно создавать не только агрегатные функции и пользовательские типы данных. Программный код .NET можно использовать и в хранимых процедурах, триггерах и пользовательских функциях. Реализация этой возможности похожа на работу с пользовательскими типами данных: вначале создаем сборку .NET с требуемым программным кодом и стандартным набором свойств и методов, затем регистрируем эту сборку в базе данных при помощи команды CREATE ASSEMBLY, а затем используем ее при создании программного объекта. Например, при создании хранимой процедуры с использованием кода .NET нам потребуется команда CREATE PROCEDURE ... AS EXTERNAL NAME;

q      Возможность обращения к SQL Server 2005 как к Web-службе (Native XML Web Services). При помощи этого средства клиенты могут обращаться на SQL Server напрямую по протоколу HTTP и передавать запросы в XML-совместимом формате SOAP. Результаты запроса возвращаются также в формате SOAP/XML. При этом SQL Server выглядит как стандартная Web-служба — с доступным стандартным определением на языке WSDL (Web Services Definition Language — язык определений Web-служб), со стандартными средствами аутентификации и шифрования данных и т. п.

Преимущества обращения к SQL Server как к Web-службе очевидны:

·                упрощается интеграция с приложениями и средствами третьих фирм. Web-службы — это стандарт, который поддерживается практически всеми крупными производителями средств разработки;

·                протокол HTTP, который используется для обращения к Web-службам, очень удобен для работы с низкоскоростными и ненадежными соединениями, а также для выполнения асинхронных запросов. В результате резко упрощается реализация удаленных и мобильных клиентов;

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

При настройке SQL Server 2005 как Web-службы необходимо определить точки подключения по HTTP (HTTP Endpoints). Такие точки подключения создаются в базе данных при помощи команды CREATE ENDPOINT. Отметим только, что для работы с ними потребуется специальный драйвер HTTP.SYS, который поставляется только с Windows Server 2003 и Windows XP SP2. Поэтому такая возможность будет недоступна для SQL Server 2005, установленного на Windows 2000.

q      Новый тип данных XML. Он может использоваться для хранения документов XML и фрагментов документов XML (т. е. документов, для которых не предусмотрен корневой элемент) в столбцах таблиц. Кроме того, этот тип данных можно использовать для переменных Transact-SQL, для параметров хранимых процедур и функций и т. п. Его можно использовать для хранения данных в формате XML размером до 2 Гбайт.

Отметим, что для этого типа данных в SQL Server 2005 предусмотрен специальный набор методов, который позволяет, например, выполнять для документа XML запросы на языке XQuery, вносить в него изменения при помощи команд на специальном языке XML DML (XML Data Modification Language — язык изменения данных XML) и т. п.

q      Параметры для массовой загрузки данных в виде документов XML. В предыдущих версиях SQL Server можно было определять некоторые параметры массовой загрузки данных при помощи файлов форматирования. В этих файлах можно было указать соответствия между столбцами в текстовом файле и в таблице SQL Server, выбрать только нужные столбцы и т. п. В SQL Server 2005 для указания этих параметров можно использовать файлы XML (которые можно создать вручную или сгенерировать при помощи утилиты bcp). Про массовую загрузку данных средствами SSIS (SQL Server Integration Services) будет рассказано в разд. 10.8.

q      Возможность применения конструкции TRY ... CATCH для обработки исключений в коде Transact-SQL. Теперь ошибки, которые возникают в ходе выполнения команд Transact-SQL, можно перехватывать и обрабатывать при помощи тех же синтаксических конструкций, что и в .NET-совместимых языках, например, в C#. За счет этого значительно повысилось как удобство, так и надежность обработки исключений.

q      Служебные представления каталога баз данных. В SQL Server 2005 появилось множество новых служебных представлений, предназначенных для получения информации об объектах баз данных. Частично они повторяют служебные таблицы из предыдущих версий SQL Server (сама система служебных таблиц изменилась очень сильно), например, sys.sysobjects, но многие из них впервые появились в SQL Server 2005.

q      Новые функции ранжирования (RANK(), DENSE_RANK(), NTILE() и ROW_NUMBER()). Эти функции позволяют определить "ранг" для каждой записи в возвращаемом наборе по отношению к какому-нибудь значению, например, к сумме закупок для заказчика.

q      Выражение OUTPUT для команд INSERT, UPDATE и DELETE. С его помощью можно вернуть набор записей, для которых были произведены операции вставки, изменения или удаления. Этот возвращаемый набор удобно использовать для протоколирования, дополнительных проверок, выдачи подтверждающих сообщений в приложениях и т. п.

q      Модификатор max для типов данных varchar, nvarchar и varbinary. При использовании модификатора max эти типы данных могут использоваться для хранения информации размером до 2 Гбайт. Фактически, varchar(max) заменяет тип данных text, nvarchar(max) ntext, а varbinary(max) image. Традиционные типы данных text, ntext и image также оставлены, но только для обеспечения обратной совместимости. Преимуществом такого подхода является то, что с большими текстовыми и двоичными значениями теперь можно работать, как с обычными (получать их при помощи курсоров, передавать текстовые значения строковым функциям и т. п.)

q      Общие табличные выражения (Common Table Expression). Это специальный набор записей, который определяется при выполнении запроса и может быть использован в этом запросе (например, для соединения — join). Работа с общими табличными выражениями очень похожа на работу с вложенными запросами, однако общие табличные выражения гибче. Например, к данным в общем табличном выражении можно обращаться несколько раз в рамках одного запроса.

q      Оператор APPLY. Этот оператор позволяет вызвать функцию, возвращающую табличный набор записей, для каждой записи из первой (внешней таблицы) и передать ей значение из столбца этой таблицы. Оператор APPLY можно использовать в двух вариантах:

·                CROSS APPLY проверяет, возвращает ли эта табличная функция непустой набор значений, и если да, то записывает в возвращаемый набор результатов запись из внешней таблицы;

·                OUTER APPLY возвращает все записи из внешней таблицы (а не только те, для которых табличная функция вернула непустое значение). Но если табличная функция возвращает NULL, то в тот столбец, в который должно подставляться ее значение, также будет записываться NULL.

Например, при помощи оператора APPLY можно пройти по всем записям таблицы MyTable, для каждой записи передать значение из столбца Column1 этой таблицы функции MyFunction и получить в результате только те записи из MyTable, для которых эта функция возвращает непустое значение:

   SELECT * FROM MyTable CROSS APPLY MyFunction(MyTable.Column1)

q      Операторы PIVOT и UNPIVOT. Эти операторы позволяют менять местами столбцы и строки в возвращаемых результатах, что может быть очень удобно при создании отчетов (особенно отчетов в виде перекрестных таблиц — cross-tabs). В принципе, то же самое можно было сделать и в предыдущих версиях SQL Server, но для этого потребовалось бы создать программный код на языке Transact-SQL. В SQL Server 2005 за счет возможности применения этих операторов выполнение такой операции значительно упростилось.

q      Уведомление об изменениях в базе данных (Query notification). Это еще одна новая и очень удобная возможность SQL Server 2005, которая позволяет отслеживать изменения в таблицах базы данных и реагировать на эти изменения. Обычный пример применения такого уведомления выглядит так: предположим, что наше приложение должно показывать какую-то информацию из базы данных, например, список всех заказчиков с суммой продаж по каждому. Запрос, который генерирует эту информацию, является достаточно ресурсоемким, и мы заинтересованы в том, чтобы выполнять его как можно реже. Поэтому приложение, выполняя этот запрос, одновременно передает на SQL Server 2005 запрос на уведомление. Затем оно использует кэшированные данные выполненного запроса. Как только данные, которые использовались в запросе, изменятся на SQL Server, приложению сразу придет уведомление об изменении. Оно очистит кэш и выполнит запрос заново.

Для работы с уведомлениями необходимо настроить службу Service Broker для базы данных. Применения Notification Services (специального программного компонента SQL Server 2005) или уведомлений о событиях (event notifications) не требуется.

q      Выражение BULK для функции OPENROWSET(). С его помощью функция OPENROWSET(), которая традиционно использовалась для обращения к удаленным источникам данных, теперь может применяться и для массовой загрузки данных (bulk load) на SQL Server. При этом можно загружать как обычный табличный набор записей, так и большие двоичные и текстовые данные. Для этой цели в SQL Server 2005 предусмотрен специальный тип поставщика массовой вставки — BULK Provider.

q      Возможность оператором TOP принимать выражения и использоваться в командах INSERT, UPDATE и DELETE. Раньше для этого оператора можно было применять только числовые значения. Теперь ему можно передавать выражения, которые будут вычисляться в момент выполнения (например, переменные). Теперь оператор TOP можно использовать и в командах INSERT, UPDATE и DELETE, например, чтобы вставить во временную таблицу записи о десяти самых крупных заказчиках.

q      Оператор AT для команды EXECUTE. Этот оператор позволяет выполнить хранимую процедуру на подключенном (linked) сервере.

q      Выражение TABLESAMPLE. Это выражение позволяет вернуть только определенное количество строк в наборе записей. Оно может использоваться, например, для отладки запросов, которые в обычном режиме возвращают большое количество данных. Можно указать процент от общего числа записей, которые нужно вернуть, или явно указать количество записей. В отличие от оператора TOP, возвращаются случайно выбранные значения.

q      Параметры SET NULL и SET DEFAULT для каскадного обновления данных. Теперь в выражении REFERENCES при создании таблицы можно указать, кроме параметра CASCADE, еще и эти два значения. Параметр SET NULL означает, что при каскадном обновлении данных для столбцов в таблицах с внешними ключами будет устанавливаться значение NULL, а параметр SET DEFAULT — значение по умолчанию.

q      Снятие ограничения на максимальный размер записи в таблице в 8060 байт. Если превышение размера в 8060 байт возникло из-за данных в столбцах nvarchar, varchar, varbinary и sql_variant, то ошибки при вставке или изменении данных не возникает. Механизм реализации этой возможности выглядит так же, как и при работе со столбцами text, ntext и image: на странице, принадлежащей таблице, помещается указатель, а сами данные перемещаются на другую страницу. Такое решение может снизить производительность, но, с другой стороны, в некоторых ситуациях может оказаться очень удобным.

q      Возможность изменения плана выполнения запроса без внесения изменений в текст запроса (руководства по запросам — plan guides). Эта новая возможность SQL Server 2005 очень пригодится администраторам и специалистам, которые работают с уже готовыми приложениями. Для создания таких руководств на SQL Server 2005 предусмотрена хранимая процедура sp_create_plan_guide. Подробнее про нее и про работу с планами выполнения запросов будет рассказываться в разд. 11.5.8.

q      Форсированная параметризация (forced parameterization). При использовании этой возможности любое явно определенное значение, которое передается команде SELECT, INSERT, UPDATE или DELETE, будет трактоваться как параметр. В некоторых ситуациях при применении такой форсированной параметризации можно получить выигрыш в производительности за счет снижения повторных компиляций планов выполнения команд Transact-SQL.

q      Параметр PERSISTED для вычисляемых столбцов. Этот параметр позволяет рассчитывать значения для таких производных столбцов не в момент выполнения запроса, а при занесении данных в таблицу. Если расчеты в вычисляемом столбце могут потребовать значительных ресурсов, то такое решение может оказаться очень удобным. В предыдущих версиях SQL Server заранее рассчитывать значения для вычисляемых столбцов можно было только при помощи индексированных представлений.

q      Множественные активные наборы результатов MARS (Multiple Active Result Set). Эта новая возможность, которая обеспечивается средствами SQL Native Client, в некоторых ситуациях позволяет очень сильно повысить производительность работы клиентских приложений. Ее смысл очень прост: приложение может посылать новый запрос, не дожидаясь возврата результатов предыдущего. Фактически запросы теперь можно производить в асинхронном режиме.

q      Управление блокировками для страниц индексов. В SQL Server 2005 появилась возможность определять, как именно будут налагаться блокировки на элементы индекса: на уровне записей (ALLOW_ROW_LOCKS) или на уровне страниц (ALLOW_PAGE_LOCKS). Эти параметры определяются при создании или изменении индекса при помощи команд CREATE INDEX и ALTER INDEX соответственно. Более дробный режим блокировок (на уровне записей) обычно больше подходит для систем OLTP, а блокировки на уровне страниц — для хранилищ данных.

q      Индексы для столбцов с типом данных XML. Сами столбцы с типом данных XML также являются новой возможностью SQL Server. Индексы для таких столбцов позволяют серьезно ускорить доступ к данным. Индексы, которые бывают двух типов — первичные и вторичные, позволяют проиндексировать имена элементов XML, пути к ним в документе XML, значения атрибутов и т. п.

q      Новые хинты оптимизатора (optimizer hints). Они позволяют более точно определить план и особенности выполнения запросов. В SQL Server 2005 предусмотрено четыре новых хинта:

·                RECOMPILE — план выполнения такого запроса не будет использоваться повторно для аналогичных запросов. Обычно такой хинт применяется для запросов, параметры которых изменяются очень сильно, и кэшированный план может оказаться неоптимальным;

·                OPTIMIZE FOR — этот хинт позволяет оптимизировать план выполнения под конкретное значение передаваемого параметра для запроса;

·                USE PLAN — этот хинт предписывает запросу использовать явно определенный план (передав его явно в виде строкового значения в формате XML);

·                PARAMETRIZATION — позволяет переопределить для запроса режим параметризации, если тот режим, который установлен на уровне всей базы данных, для данного запроса неоптимален.

q      Библиотека SQL Server Native Client. Этот новый программный интерфейс практически представляет собой надстройку над набором драйверов OLE DB, которая позволяет использовать новые возможности SQL Server 2005, например, множественные активные наборы результатов (Multiple Active Result Set, MARS), поддержку типа данных XML и т. п.

 

   
   
   
   
   
   
   
   
   
   
 
<-- Назад Читать дальше -->

Получить учебные материалы по этому курсу


 
© 2004-2016, Академия Специальных Курсов
по Информационным Технологиям
.
Все права защищены.

Разработка NevaStudio
г. Санкт-Петербург, Васильевский остров,
20-я линия, д. 7
Офис 101, 2-й этаж
Телефон: 8(812)922-47-60
E-mail: info@askit.ru