Опубликован: 11.12.2006 | Доступ: свободный | Студентов: 5365 / 282 | Оценка: 4.42 / 3.86 | Длительность: 57:15:00
Лекция 13:

Введение в Transact-SQL и SQL Query Аnalyzer

< Лекция 12 || Лекция 13: 12345 || Лекция 14 >

Обзор новых возможностей T-SQL

В T-SQL для Microsoft SQL Server 7 появились многочисленные добавления и улучшения, в том числе новые хранимые процедуры, системные таблицы, функции, типы данных, операторы и новые возможности для старых операторов. Все было сохранено и в SQL Server 2000, и мы сейчас дадим краткий обзор этих новых возможностей (если вы не знаете о них по опыту своей работы с SQL Server 7). Однако их слишком много, чтобы мы смогли дать подробные описания, поэтому мы рассмотрим лишь несколько примеров для каждой их разновидности.

Дополнительная информация. Чтобы получить полный список новых возможностей T-SQL, обратитесь к SQL Server Books Online, к теме "New Features in Transact-SQL" (Новые возможности в Transact-SQL). Чтобы открыть эту тему, нажмите на Transact-SQL Reference во вкладке Contents, а затем нажмите на New Features in Transact-SQL.
Системные хранимые процедуры

В SQL Server имеются системные хранимые процедуры, с помощью которых можно выполнять администрирование и другие задачи, требующие обновления системных таблиц и извлечения информации из системных таблиц. Системные хранимые процедуры инсталлируются вместе с SQL Server, их имена начинаются с sp_ или с xp_. Эти процедуры хранятся в базе данных master (главной системной базе данных) (а также базе msdb. – Прим. ред.), их владелец – системный администратор, но многие из них могут запускаться из любой пользовательской базы данных, извлекая при этом информацию из системных таблиц этой базы данных. Когда вы исполняете системную хранимую процедуру, она работает с системными таблицами текущей базы данных.

Дополнительная информация. Дополнительную информацию о системных хранимых процедурах вы найдете в Books Online, в теме "Extended Stored Procedures" (Расширенные хранимые процедуры).

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

Таблица 13.1. Процедуры, появившиеся в SQL Server 7, имеющиеся и в SQL Server 2000
Системная хранимая процедура Описание
sp_cycle_errorlog Закрывает текущий файл-журнал ошибок и переименовывает его в errorlog.1 (если необходимо, переименовывает старый errorlog.1 в errorlog.2 и так далее) и открывает новый файл-журнал ошибок >
sp_helpfile Возвращает физические имена и атрибуты файлов, сопоставленных с текущей базой данных
sp_helpfilegroup Возвращает имена и атрибуты групп файлов, сопоставленных с текущей базой данных
sp_helprole Возвращает информацию о ролях в текущей базе данных
sp_help_alert Возвращает информацию о предупреждениях, заданных для сервера
sp_start_job Приказывает, чтобы SQL Server Agent начал выполнять задание

Некоторые из этих хранимых процедур не только немедленно выдают информацию, но могут и сохранять для дальнейшего применения важную информацию о пользовательских базах данных. Например, процедуры, возвращающие информацию о базе данных пользователя, могут оказаться полезными при исполнении в сценариях T-SQL, когда выдаваемая ими информация будет сохраняться в файле. Вы можете сохранять информацию, выдаваемую после запуска хранимых процедур sp_helpfile, sp_helpfilegroup и sp_helpdb, примененных к нужной базе данных (процедура sp_helpdb, хоть и старая, но по-прежнему пользуется популярностью). Это пригодится в случае, если придется воссоздавать базу данных и понадобится информация о первоначально созданных и сконфигурированных файлах, группах файлов и опциях базы данных. Список остальных новых системных процедур, появившихся в SQL Server 7, вы найдете в Books Online, в теме "New Features in Transact-SQL" (Новые возможности в Transact-SQL).

Системные таблицы

Системные таблицы служат для хранения информации о конфигурации SQL Server и хранения заданных для баз данных определений объектов, пользователей и полномочий доступа. Каждая пользовательская база данных имеет свои собственные системные таблицы, в которых хранится информация для этой базы данных. Системные таблицы, хранящие информацию о конфигурации на уровне сервера, хранятся только в базе данных master (главной системной базе данных). Для доступа к системным таблицам нужно применять системные хранимые процедуры, а не осуществлять доступ непосредственно. Список новых системных таблиц, появившихся первоначально в SQL Server 7, вы найдете в Books Online, в теме "New Features in Transact-SQL". Ниже перечисленные некоторые интересные системные таблицы.

  • backupfile. Эта таблица находится в базе данных msdb. В ее строках хранится информация обо всех резервных копиях журналов и файлов базы данных. Хранится информация об идентификаторах файлов, о группах, к которым принадлежат файлы, и о буквах для обозначения физических дисков, на которых расположены файлы.
  • restorehistory. Эта таблица находится в базе данных msdb. В ее строках хранится информация обо всех операциях восстановления файлов и баз данных. В этой таблице содержится информация о дате и времени выполненного резервного копирования, о целевой базе данных, о моменте времени, когда было восстановление, и о типе восстановления.
  • sysfiles.  Это – виртуальная таблица, поэтому она не может обновляться непосредственно. В ней содержится информация обо всех файлах базы данных, например, физические и логические имена файлов, размеры и максимальные размеры файлов и приращение роста (если эти значения заданы).
    Внимание. Для доступа к системным таблицам пользуйтесь только системными хранимыми процедурами. (Другой рекомендованный способ доступа к системным таблицам – это использование так называемых Представлений Информационной Схемы – Information_Schema views. – Прим. ред.) Системные хранимые процедуры являются как бы "изолирующей прокладкой", не дающей вам изменять те данные, которые изменять не следует. Осуществляя доступ к системным таблицам вручную, вы рискуете испортить свою базу данных, изменив важную системную информацию, из-за чего эта база данных станет бесполезной.
Функции

При помощи встроенных функций SQL Server возможно быстрое и удобное решение некоторых задач. Некоторые новые функции появились в SQL Server 7, и они остались доступными и в SQL Server 2000. Зная об имеющихся функциях, вам будет проще программировать приложения SQL Server. Полный список новых функций вы найдете в Books Online, в теме "New Transact-SQL Functions" (Новые функции Transact-SQL). Ниже приведены описания лишь нескольких из новых функций, которые могут вам пригодиться:

  • NEWID. Создает глобально уникальный идентификатор (GUID, globally unique identifier), он имеет тип данных uniqueidentifier. Эту функцию можно применять для ввода значений в колонки, имеющие тип данных uniqueidentifier. Применение: NEWID(). (Этой функции не нужны параметры.)
  • YEAR. Возвращает целое число, соответствующее году для заданной даты. Применение: YEAR(дата). Пример: оператор SELECT YEAR('07/11/01') выдаст значение 2001.
  • MONTH. Возвращает целое число, соответствующее месяцу для заданной даты. Применение: MONTH(дата). Пример: оператор SELECT MONTH('07/11/01') выдаст значение 7.
  • DAY. Возвращает целое число, соответствующее дню для заданной даты. Применение: DAY(дата). Пример: оператор SELECT DAY('07/11/01') выдаст значение 11.
  • FILE_NAME. Возвращает логическое имя файла, соответствующее заданному номеру идентификатора файла. Применение: FILE_NAME (номер_идентификатора_файла). Пример: оператор SELECT FILE_NAME(4) вернет имя файла, имеющего идентификатор  4. Если в базе данных нет файла с таким идентификатором, то будет возвращено значение NULL.
Типы данных

В SQL Server 7 появилось несколько новых типов данных, а некоторые из имеющихся типов данных получили новые размеры. В SQL Server 2000 помимо этих новшеств появилось еще три новых типа данных. Про большинство типов данных было рассказано в "Создание таблиц баз данных" . Ниже дан список изменений, относящихся к типам данных, появившихся в SQL Server 7 и оставшихся и в SQL Server 2000:

  • Появился новый тип данных, cursor, для переменных-курсоров. Дополнительную информацию о курсорах вы найдете в Books Online, в теме "Cursors".
  • Появились новые типы данных для кодировки Unicode: nchar, nvarchar и ntext. При использовании кодировки Unicode на один символ расходуется по 2 байта, и эта кодировка может поддерживать символы всех имеющихся в мире языков.
  • Появился новый тип данных uniqueidentifier, применяемый для хранения глобально уникальных идентификаторов (GUID).
  • Максимальная длина строк с символьными и с двоичными данными увеличилась до 8000 байт. Эта длина допустима для типов данных char, varchar, binary и varbinary.

А ниже перечислены три новых типа данных, появившихся в SQL Server 2000:

  • bigint   – хранит 8-байтные целые числа.
  • sql_variant   – позволяет хранить значения разных типов в одной и той же колонке. В колонках этого типа хранятся как сами данные, так и сведения о них (базовый тип данных, масштаб, точность, максимальный размер и свойства для сравнения (collation)).
  • table   – этот тип данных аналогичен временным таблицам, описание данных включает в себя список колонок с типами данных. Этот тип данных можно применять для задания локальных переменных или для возвращаемых значений пользовательских функций.
Операторы

В SQL Server 7 появилось много новых операторов T-SQL, а имеющиеся операторы приобрели новые возможности, и все это вошло и в SQL Server 2000. Эти операторы соответствуют некоторым из новых возможностей, появившихся в SQL Server 7. Например, оператор ALTER DATABASE получил следующие новые опции для работы с файлами и группами файлов: MODIFY FILE, ADD FILEGROUP, MODIFY FILEGROUP, REMOVE FILE и REMOVE FILEGROUP. А для групп файлов новый оператор DBCC CHECKFILEGROUP проверяет размещение и структурную целостность всех таблиц в заданной группе файлов.

В SQL Server 7 и SQL Server 2000 появилось еще два оператора DBCC – DBCC SHRINKFILE и DBCC SHRINKDATABASE. Первый из них сжимает заданный файл данных, уменьшая его размер, а второй оператор сжимает все файлы в заданной базе данных, освобождая неиспользуемое место на диске.

У SQL Server 7 и SQL Server 2000 была усовершенствована архитектура для резервного копирования и восстановления. Новый оператор BACKUP позволяет выполнять полные и частичные резервные копирования базы данных и журнала, а новый оператор RESTORE позволяет восстанавливать базы данных и журналы после этого резервного копирования. Эти операторы применяются вместо операторов DUMP и LOAD из старых версий SQL Server. Полный список новых операторов и опций, появившихся в SQL Server 7 и SQL Server 2000, вы найдете в Books Online, в теме "New Features in Transact-SQL". Более подробно о резервном копировании и о восстановлении после резервного копирования будет рассказано в "Резервное копирование Microsoft SQL Server" и  "Восстановление и воспроизведение базы данных" .

< Лекция 12 || Лекция 13: 12345 || Лекция 14 >
Анатолий Федоров
Анатолий Федоров
Россия, Москва, Московский государственный университет им. М. В. Ломоносова, 1989
Игорь Соловьев
Игорь Соловьев
Россия, Братск