Поделиться через


Улучшенные способы программирования ядра СУБД

В SQL Server 2005 в компоненте Database Engine введен ряд улучшений, а также новые функции, расширяющие возможности и продуктивность работы программистов. Объекты баз данных могут быть написаны на языках на основе Microsoft .NET Framework, например на Microsoft Visual C#. Разработка и отладка интегрированы в среду Microsoft Visual Studio, что позволяет при проектировании объектов базы данных использовать те же самые средства, что и для компонентов и служб на основе .NET Framework. Язык Transact-SQL расширен такими возможностями, как улучшенная обработка ошибок и поддержка рекурсивных запросов.

Кроме того, для повышения производительности программистов улучшены интерфейсы, используемые приложениями для доступа к экземплярам компонента Database Engine. Дополнительные сведения см. в разделе Улучшенные интерфейсы доступа к данным.

Ниже представлены основные улучшения языка Transact-SQL. Дополнительные сведения о новых возможностях Transact-SQL см. в разделе Нововведения и усовершенствования Transact-SQL (Transact-SQL).

Улучшенные возможности программирования

Microsoft .NET Framework: интеграция со средой CLR

В компоненте SQL Server Database Engine теперь поддерживается среда CLR Microsoft .NET Framework. Интеграция со средой CLR поддерживает процедурные объекты базы данных, включая функции, хранимые процедуры и триггеры, написанные на языках на основе .NET Framework, например Microsoft Visual C# или Visual Basic .NET. Языки на основе .NET Framework поддерживают логику и функции, отсутствующие в языке Transact-SQL, поэтому в объекты базы данных может быть встроена более сложная логика. Кроме того, определяемые пользователем типы и статистические функции могут быть написаны на языках .NET Framework, что позволяет создавать более сложные типы данных, чем в предыдущих версиях SQL Server.

Интегрированная среда программирования CLR теперь встроена в среду разработки Visual Studio. Для разработки и отладки объектов баз данных разработчики используют те же инструментальные средства, что и для разработки клиентских компонентов или компонентов и служб .NET среднего уровня.

Дополнительные сведения см. в разделе Introduction to Common Language Runtime (CLR) Integration.

Microsoft .NET Framework: определяемые пользователем статистические функции

Определяемые пользователем статистические функции, написанные на языках на основе .NET Framework, дополняют такие базовые статистические функции языка Transact-SQL, как SUM, MIN и MAX. Статистической функцией называется функция, обрабатывающая несколько значений данных и возвращающая в результате одно значение. Вместо передачи в приложение всего результирующего набора для применения к нему сложной статистической логики статистические функции языка .NET Framework могут выполнять обработку в экземпляре компонента Database Engine и возвращать в приложение только конечное значение.

Дополнительные сведения см. в разделе CLR User-Defined Aggregates.

Microsoft .NET Framework: определяемые пользователем типы

Определяемые пользователем типы данных CLR позволяют реализовывать типы данных базы данных в любом языке, поддерживаемом средой .NET Framework CLR. Определяемые пользователем типы данных CLR реализованы в языке на основе .NET Framework как классы и могут иметь сложную структуру и поведение, определяемые полями, методами и свойствами класса. Определяемые пользователем типы данных среды CLR интегрированы с системой типов компонента Database Engine и могут использоваться во всех контекстах, в которых используются встроенные типы.

Дополнительные сведения см. в разделе CLR User-Defined Types.

Microsoft .NET Framework: хранимые процедуры, триггеры и определяемые пользователем функции

Для реализации более сложной логики, чем в языке .NET Framework, процедурные объекты базы данных могут быть написаны на языках на основе Transact-SQL. Программисты разрабатывают объекты на том же языке и в той же среде разработки, что и для разработки компонентов и служб среды .NET Framework.

Дополнительные сведения см. в разделах CLR Stored Procedures, CLR Triggers, CLR User-Defined Functions.

Веб-доступ: доступ при помощи собственного HTTP SOAP

В экземплярах компонента Database Engine можно настроить конечные точки или адреса HTTP, на которые могут отправляться SOAP-запросы из приложений. Пакеты принимаются непосредственно экземпляром компонента Database Engine, не требуя настройки службы среднего уровня, например сервера служб IIS.

Дополнительные сведения см. в разделе Использование собственных веб-служб с поддержкой XML в SQL Server 2005.

Улучшения языка Transact-SQL: новый тип данных XML

В компоненте Database Engine вводится новый тип данных xml, поддерживающий хранение фрагментов XML и XML-документов в базах данных. Экземпляры XML можно хранить в столбцах, параметрах хранимой процедуры или в переменных, созданных с помощью типа данных xml.

Дополнительные сведения см. в разделе Тип данных xml.

Улучшения языка Transact-SQL: новые возможности инструкции FOR XML

С помощью вложенных инструкций FOR XML можно создавать иерархии XML-документов. Результат инструкции FOR XML можно сохранить в столбце, передать в качестве параметра в хранимую процедуру или переменную, определенную с помощью нового типа данных xml.

Дополнительные сведения см. в разделе Новые возможности FOR XML.

Улучшения языка Transact-SQL: улучшенная обработка ошибок

Программисты, разрабатывающие пакеты, хранимые процедуры, триггеры и определяемые пользователем функции Transact-SQL, для перехвата и обработки ошибочных ситуаций могут использовать знакомую логику TRY-CATCH.

Дополнительные сведения см. в разделе Обработка ошибок компонента Database Engine.

Улучшения языка Transact-SQL: новые представления метаданных

В компоненте SQL Server 2005 Database Engine введено два новых набора представлений для запроса метаданных. Представления системного каталога обеспечивают сведения о таких объектах, как таблицы, хранимые процедуры и ограничения, определенных в базах данных SQL Server. Динамические административные представления предоставляют данные о текущем состоянии экземпляра компонента Database Engine. Динамические административные представления показывают данные из структур памяти, не хранящихся на диске, например сведения о блокировках, потоках и задачах.

Дополнительные сведения см. в разделе Запрос к системному каталогу сервера SQL Server.

Улучшения языка Transact-SQL: ранжирующие функции

В компоненте Database Engine появляется новая категория функций, называемых ранжирующими функциями. В эту категорию входят следующие функции:

  • RANK
  • DENSE_RANK
  • NTILE
  • ROW_NUMBER

Эти функции возвращают ранжирующее значение для каждой строки в секции.

Дополнительные сведения о списке этих функций см. в разделе Ранжирующие функции (Transact-SQL).

Улучшения языка Transact-SQL: триггеры языка определения данных (DDL)

Наряду с триггерами поддержки, которые запускаются инструкциями языка обработки данных, изменяющими данные (INSERT, UPDATE и DELETE), компонент Database Engine содержит новый класс триггеров, запускаемых инструкциями DDL, изменяющими объекты базы данных, например инструкциями, начинающимися с предложений CREATE, ALTER или DROP. Триггеры DDL могут использоваться для аудита или регулирования изменений в схеме базы данных.

Дополнительные сведения см. в разделе Триггеры DDL.

Улучшения языка Transact-SQL: уведомления о событиях

В компоненте Database Engine могут программироваться объекты нового типа — уведомления о событиях. Уведомления о событиях посылают в службу компонента Service Broker сведения об инструкциях Transact-SQL DDL и событиях SQL Trace. Уведомления о событиях могут использоваться для записи в журнал и просмотра изменений или действий, происходящих в базе данных. Они выполняются асинхронно и могут представлять собой программную альтернативу триггерам DML, DDL и SQL Trace.

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

Улучшения языка Transact-SQL: расширения обработки очередей

Ряд улучшений Transact-SQL упрощает построение приложений с очередями сообщений в слабо связанных, надежных системах автоматизации бизнес-процессов, ориентированных на работу через Интернет. Инструкции INSERT, UPDATE и DELETE теперь поддерживают предложение OUTPUT, возвращающее данные, основанные на строках, которые изменены инструкцией. В инструкциях UPDATE и DELETE теперь можно задавать предложение READPAST, позволяя пропускать строки очереди, удерживаемые другими задачами, и выбирать следующую строку из очереди.

Дополнительные сведения см. в разделах Предложение OUTPUT (Transact-SQL) и Подсказки блокировок.

Улучшения языка Transact-SQL: унифицированная модель программирования больших объектов

В ранних версиях SQL Server большие строки длиной более 8000 байт должны были храниться в данных типа text, ntext и image, модель программирования для которых отличается от модели типов данных для более коротких строк (char, nchar, varchar, nvarchar, binary и varbinary). Компонент Database Engine теперь поддерживает спецификацию длины MAX для коротких типов данных. Если задается спецификация MAX, эти типы данных позволяют хранить строки того же размера, что и значения text, ntext и image — вплоть до 2 гигабайт (ГБ), которые при этом обрабатываются так же, как при хранении коротких строк.

Дополнительные сведения см. в разделе Использование типов данных больших значений.

Улучшения языка Transact-SQL: рекурсивные запросы

Обобщенные табличные выражения (CTE) — это наборы результатов, временно хранящиеся при выполнении инструкций SELECT, INSERT, UPDATE или DELETE. Выражения CTE позволяют применять рекурсивные запросы, а их использование вместо временных таблиц и представлений может упростить логику обработки.

Дополнительные сведения см. в разделе Применение обобщенных табличных выражений.

Улучшения языка Transact-SQL: новый оператор APPLY

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

Дополнительные сведения см. в разделе Использование APPLY.

Улучшения языка Transact-SQL: новые операторы PIVOT и UNPIVOT

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

Дополнительные сведения см. в разделе Использование операторов PIVOT и UNPIVOT.

Улучшения языка Transact-SQL: уведомления о запросах

Уведомления о запросах позволяют приложению заносить в кэш результирующий набор и запрашивать у компонента Database Engine уведомление об изменении соответствующих данных другим приложением. Приложениям, использующим уведомления о запросах, не требуется регулярно проверять состояние данных в базе данных. Они должны проверять данные, только если компонент Database Engine уведомляет их об изменении.

Дополнительные сведения см. в разделе Использование уведомлений запросов.

Улучшения языка Transact-SQL: массовые операции с функцией OPENROWSET

Функция OPENROWSET теперь поддерживает операцию BULK для массового копирования данных из файлов данных. Управление массовыми операциями OPENROWSET осуществляется с помощью новых табличных подсказок и параметров массовых операций, таких как BULK_BATCHSIZE и FORMATFILE. Новое предложение bulk_column_alias поддерживает назначение имен столбцов данным массовых операций.

Дополнительные сведения см. в разделах OPENROWSET (Transact-SQL) и Табличная подсказка (Transact-SQL).

Улучшения языка Transact-SQL: улучшенный оператор TOP

Теперь улучшенный оператор TOP может принимать количество строк, возвращаемых оператором, не только как целое число, но и как числовое выражение (например имя переменной). TOP может теперь также задаваться в инструкциях INSERT, UPDATE и DELETE.

Дополнительные сведения см. в разделе TOP (Transact-SQL).

Улучшения языка Transact-SQL: распределенный запрос

Инструкция EXECUTE теперь поддерживает предложение AT связанный_сервер, которое задает выполнение хранимой процедуры на связанном сервере. Для выполнения запросов на связанных серверах полнотекстовый предикат CONTAINS поддерживает имена, состоящие из четырех частей. Распределенные запросы также поддерживают новые типы данных больших объектов nvarchar(max), varchar(max) и varbinary(max). Для облегчения анализа взаимодействия распределенных запросов и поставщиков OLE DB добавлены новые события SQL Trace.

Дополнительные сведения см. в разделах EXECUTE (Transact-SQL), CONTAINS (Transact-SQL), Сопоставление типов данных в распределенных запросах и Категория событий OLEDB.

Улучшения языка Transact-SQL: предложение TABLESAMPLE

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

Дополнительные сведения см. в разделе Ограничение результирующего набора с помощью предложения TABLESAMPLE.

Улучшения языка Transact-SQL: новые ограничения целостности CASCADE

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

Дополнительные сведения см. в разделе Каскадные ограничения ссылочной целостности.

Улучшения языка Transact-SQL: данные переполнения могут превысить размер страницы

Строки могут превышать ограничение в 8060 байт, если они содержат столбцы переменной длины с данными типов nvarchar, varchar, varbinary и sql_variant. Если общая ширина этих столбцов переменной длины увеличивает размер строки настолько, что превышается предельный размер страницы, компонент Database Engine может перенести данные из столбцов переменной длины в отдельные страницы.

Дополнительные сведения см. в разделе Превышающие размер страницы данные строки, превышающие 8 КБ.

Программирование администрирования базы данных: Новые API-интерфейсы для объектов SMO в SQL Server

Объектная модель SMO расширяет и замещает объектную модель Distributed Management Objects (DMO). Объектная модель SMO предоставляет классы для настройки и управления экземплярами компонента Database Engine. Объектная модель Replication Management Objects (RMO) дополняет объектную модель SMO, предоставляя классы для настройки репликации и управления ими.

Дополнительные сведения см. в разделе SQL Server Management Objects (SMO).

Программирование администрирования базы данных: Новые поставщики инструментария WMI для SQL Server

Поставщик инструментария WMI для управления компьютером является поставщиком экземпляра. Назначением этого слоя является предоставление унифицированного способа взаимодействия с вызовами функций API-интерфейса, которые управляют операциями с реестром, запрашиваемыми сетевыми программами сервера и клиента, и предоставляют улучшенные методы контроля и управления выбранными службами SQL оснастки «Управление компьютером».

Дополнительные сведения см. в разделе WMI Provider for Configuration Management.

Поставщик инструментария WMI для событий сервера позволяет использовать инструментарий управления Windows (WMI) для контроля над событиями в SQL Server. В ходе своей работы поставщик преобразует SQL Server в управляемый объект инструментария WMI. Этот поставщик позволяет инструментарию WMI использовать все события, которые могут формировать уведомления о событии в SQL Server. Кроме того, агент SQL Server, играя роль управляющего приложения, взаимодействующего с инструментарием WMI, может реагировать на эти события, расширяя область событий, охватываемых агентом SQL Server предыдущих версий.

Дополнительные сведения см. в разделе WMI Provider for Server Events.

См. также

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

Улучшения компонента Database Engine

Справка и поддержка

Получение помощи по SQL Server 2005