- •Санкт-Петербург
- •Часть I. Общие сведения о субд Microsoft sql Server 2000 5
- •Часть II. Администрирование sql Server 2000 116
- •Введение
- •Часть I. Общие сведения о субд Microsoft sql server 2000
- •1.1. Возможности sql server 2000
- •1.2. Компоненты sql server 2000
- •Утилита Server Network
- •1.3. Архитектур бдв среде sql Server 2000
- •Логические компоненты базы данных
- •Встроенные мастера sql Server 2000
- •Режимы сопоставления
- •Идентификаторы пользователей, учетные имена, роли и группы
- •Физическая структура базы данных Страницы и экстенты
- •Файлы и группы файлов баз данных
- •Протокол tds
- •Архитектура обработчика запросов
- •Архитектура памяти
- •Архитектура ввода-вывода
- •Архитектура полнотекстовых запросов
- •Организация транзакций
- •Хранилища данных и оперативная аналитическая обработка (olap)
- •Oltp-системы
- •Olap-системы
- •Архитектура разработки приложений
- •Язык баз данных
- •1.4. Инструменты программирования sql server
- •Окно Query
- •Панель Results
- •Вкладка Grids
- •Окно Object Browser
- •Окно отладчика Transact-sql
- •Окно Object Search
- •Утилита командной строки isql
- •Утилита командной строки osql
- •1.5.Язык transact - sql
- •Операторы Transact-sql
- •Язык определения данных
- •Язык управления данными
- •Язык манипулирования данными
- •Идентификаторы
- •Переменные
- •Функции
- •Встроенные функции
- •Функции получения набора строк
- •Агрегатные функции
- •Скалярные функции
- •Скалярные функции
- •Табличные функции
- •Детерминированность функций
- •Типы данных
- •Выражения
- •Использование операторов в выражениях
- •Элементы языка управления ходом выполнения
- •Обработка оператора select
- •Обработка других операторов
- •Команда go
- •Обработка пакета
- •Хранимые процедуры и триггеры
- •Исполнение хранимых процедур и триггеров
- •Сценарии Transact-sql
- •Часть II. Администрирование sql server 2000
- •2.1. Создание и управление бд sql server 2000
- •Методы создания баз данных sql Server
- •Оператор create database
- •Управление базой данных sql Server
- •Просмотр сведений о базе данных
- •Модификация базы данных
- •Настройка параметров базы данных
- •Удаление базы данных sql Server
- •2.2. Импорт и экспорт данных
- •Использование утилиты Ьср и оператора bulk insert
- •Использование различных форматов данных
- •Использование dts
- •Инструменты dts
- •Задачи dts
- •Соединения dts
- •2.3. Копирование в среде sql server 2000
- •Терминология резервного копирования
- •Резервное копирование с использованием Transact-sql
- •Полное резервное копирование базы данных
- •Резервное копирование файла или группы файлов
- •Репликация
- •2.4. Восстановление в среде sql server 2000 Определение последовательности восстановления данных
- •2.5. Репликация Процесс репликации
- •Репликация моментальных снимков
- •2.6. Проверка подлинности в sql server 2000
- •Проверка подлинности средствами Windows
- •Проверка подлинности средствами sql Server 2000
- •Сравнение типов проверки подлинности
- •Клиентские сетевые библиотеки и проверка подлинности.
- •Выбор режима проверки подлинности для sql Server 2000
- •Проверка подлинности Windows
- •Смешанный режим проверки подлинности
- •Делегирование учетной записи пользователя
- •2.7.Разрешение уровня сервера
- •Фиксированные роли базы данных
- •2.8.1. Оптимизация работы sql server 2000
- •2.8.2. Индексы
- •Назначение и структура индексов
- •2.8.1. Конфигурация сети
- •Кластерные индексы
- •Не кластерные индексы
- •Свойства индекса
- •Уникальный индекс.
- •Составной индекс
- •Коэффициент заполнения и разреженность индекса
- •Порядок сортировки
- •2.8.3. Триггеры
- •Исполнение триггеров
- •2.8.4. Хранимые процедуры
- •Производительность
- •Временные хранимые процедуры
- •Расширенные хранимые процедуры
- •Удаленные хранимые процедуры
- •2.8.5. Представления
- •2.8.6. Мониторинг
- •Утилита System Monitor
- •Утилита Task Manager
- •Утилита sql Profiler
- •Утилита sql Query Analyzer
- •Использование Transact-sql
- •Системные хранимые процедуры
- •Команды dbcc
- •Встроенные функции
- •Флаги трассировки
- •Использование snmp
- •2.9. Системы безопасности
- •Шифрование объектов
- •Список литературы
Временные хранимые процедуры
Временная хранимая процедура похожа на локальную, однако она существует лишь до закрытия соединения, в котором создана, или до завершения работы SQL Server. В зависимости от типа такая процедура удаляется после завершения работы сервера или разрыва соединения. Непостоянство обусловлено тем, что временные хранимые процедуры находятся в базе данных TempDB. При каждом запуске сервера эта база создается заново, поэтому после закрытия сервера все объекты этой базы данных исчезают. Временные хранимые процедуры полезны при работе с более ранними версиями SQL Server, которые не поддерживают повторное использование планов исполнения, а также в тех случаях, когда нет смысла сохранять процедуру, поскольку значения ее параметров постоянно меняются. Существует три типа временных хранимых процедур: локальные (или закрытые), глобальные и создаваемые непосредственно в TempDB. Локальная процедура всегда начинается с символа #, а глобальная — с ##. Создание каждого типа временных хранимых процедур описано в занятии 2. При исполнении временной хранимой процедуры ее область действия ограничена соединением, в котором она создана. Однако такая процедура видима всем пользователям, установившим соединение с базой данных, в окне Object Browser в Query Analyzer. Ограниченность области ее действия исключает возникновение конфликтов имен с другими соединениями, в которых созданы временные хранимые процедуры. Чтобы гарантировать уникальность имени временной хранимой процедуры, SQL Server добавляет к нему набор символов подчеркивания и уникальный номер соединения. Привилегии для локальной процедуры не предоставляются другим пользователям. Временная хранимая процедура удаляется из TempDB при закрытии соединения, в котором она создана.
Глобальные временные процедуры разрешается исполнять в любом соединении. Подобно временным процедурам других типов, они создаются в базе данных TempDB, поэтому у них должны быть уникальные имена. Право на исполнение глобальной временной процедуры автоматически предоставляется роли public и не может быть изменено. Глобальные временные процедуры так же непостоянны, как и локальные. Они удаляются после закрытия соединения, в котором созданы.
Временные хранимые процедуры, которые создаются непосредственно в TempDB, отличаются от локальных и глобальных процедур следующим:
для них разрешается настроить права доступа;
они сохраняются даже после завершения соединения, в котором созданы;
они не удаляются до завершения работы SQL Server.
Поскольку процедуры этого типа создаются непосредственно в TempDB, важно полностью определять имя объекта базы данных в коде Transact-SQL. Например, на таблицу Authors из базы данных Pubs, принадлежащую dbo, следует ссылаться по имени pubs.dbo.authors.
Расширенные хранимые процедуры
Расширенные хранимые процедуры обращаются к внешним программам, скомпилированным в виде 32-разрядных DLL. Некоторые системные хранимые процедуры также рассматриваются как расширенные. Например, хранимая процедура xp_sendmail, которая посылает по заданному адресу почтовое сообщение с вложенным результирующим набором, является системной и расширенной одновременно. Соглашение об именовании предполагает использование в именах расширенных хранимых процедур префикса хр_. Однако имена некоторых расширенных процедур начинаются с префикса sp_, а в именах некоторых других, не расширенных процедур используется префикс хр_. Поэтому нельзя различить системные и расширенные хранимые процедуры, полагаясь лишь на отличия в именах.
Определить, является ли хранимая процедура расширенной, позволяет функция ОВ-JECTPROPERTY. Она возвращает для свойства IsExtendedProc значение 1, если процедура является расширенной, или 0, если процедура таковой не является. Следующие примеры демонстрируют, как можно выяснить, что процедура sp_prepare — расширенная, а хр logininfo — нет:
USE Master
— Расширенная хранимая процедура с префиксом sp_.
SELECT OBJECTPROPERTY(object_id('sp_prepare'), 'IsExtendedProc')
Этот пример возвращает значение 1. USE Master
Хранимая процедура, которая не является расширенной,
но имеет префикс хр_
SELECT OBJECTPROPERTY(objectjd('xp_logininfo'), 'IsExtendedProc')
Этот пример возвращает значение 0.
