- •Н.И. Коваленко
- •Коваленко н.И., Банчук г.Г.
- •Коваленко Надежда Ивановна
- •Тема I. Общие сведения о ms sql Server 2000
- •1. Базы данных типа клиент/сервер
- •Система типа клиент/сервер
- •2. История sql Server
- •Основные количественные показатели системы sql – сервер
- •3. Обзор sql Server 2000
- •4. Стандартные объекты sqlServer
- •ТемаIi. Работа с ms sqlServer2000 и его компонентами
- •1. Запуск, приостановка и завершение работы sqlServer
- •2. SqlServerEnterpriseManager
- •3. Программа sqlServerQueryAnalyzer
- •Панель инструментов утилиты Query Analyzer
- •4. Обслуживание баз данных
- •Файлы операционной системы, используемые sql Server 2000:
- •Структура базы данных
- •5. УстановкаMicrosoftSqlServer2000
- •Ограничения инсталляции sql-сервера
- •ТемаIii. Работа с базой данных создание и использование индексов и ключей
- •1. Базы данных и их свойства
- •Описание ролей, используемых для доступа к базе данных и серверу баз данных
- •Дополнительные опции настройки базы данных
- •Настройка параметров доступа к базе данных
- •2. Таблицы базы данных.
- •3. Типы данных, используемые в sql-сервере
- •Текстовые типы данных
- •Типы данных даты и времени
- •Типы данных для хранения больших объемов информации
- •Типы данных специального назначения:
- •4. Основные операции с базами данных
- •5. Восстановление бд (администрированиеSqlServer2000)
- •6. Создание и использование индексов и ключей в системе sql Server.
- •7. Использование ограничений
- •8. Использование диаграмм для разработки структуры базы данных
- •9. Создание представлений (видов)
- •ТемаIv. Правила и создание значения
- •1. Инструменты контроля целостности данных
- •2. Создание правил и стандартных значений
- •ТемаV. Триггеры в системеSql–сервер
- •1. Понятие триггера. Типы триггеров
- •2. Создание триггеров
- •3. Использование триггеров. Виды триггеров
- •ТемаVi. Оптимизация запросов и основы sql
- •1. Оптимизация запросов
- •2. Основные операторы sql в sql Server 2000
- •3. Объединение таблиц в операторе select
- •From titles
- •4. Использование директив group by иHaving
- •5. Оператор insert
- •6. ОператорUpdate
- •7. ОператорDelete
- •8. ОператорCreatetable
- •ТемаVii. Создание и работа с представлениями
- •1. Основные сведения о представлениях
- •2. Создание представлений. Отображение представлений
- •3. Редактирование представлений. Отображение зависимостей представлений. Создание представлений и представлений
- •4. Переименование столбцов представлений. Переименование представлений. Удаление представлений
- •5. Изменение данных посредством представлений. Обновление данных с помощьюSqlServerEnterpriseManager
- •ТемаViii. Создание и использование курсоров
- •1. Понятие курсора
- •2. Выборка данных из курсора
- •3. Операторы и глобальные переменные для работы с курсорами
- •4. Примеры использования курсоров
- •ТемаIx. Использование хранимых процедур
- •1. Достоинства и недостатки хранимых процедур
- •2.Создание хранимой процедуры
- •3. Операторы языка управления программой. Оператор declare
- •4. Операторы goto, begin…end и if…else
- •5. Операторы waitfor, return, while, break и continue
- •6. Операторы print и raiserror
- •7. Использование параметров в хранимых процедурах
- •8. Глобальные переменные. Отладка хранимых процедур
- •Тема X. Транзакции и блокировки
- •1. Определение транзакции. Ограничения для транзакций. Уровни изоляции транзакций
- •2. Базовая информация о блокировках. Типы блокировок
- •3. Создание транзакций и работа с ними. Точки сохранения
- •4.Отображение информации о блокировках. Явное задание блокировки
- •Описание параметров для явного задания блокировок
- •ТемаXi. Система безопасностиSqlServer2000
- •1. Типы безопасности. Создание и управление бюджетами пользователей
- •Стандартные роли сервера
- •Стандартные роли базы данных
- •2. Добавление новых пользователей. Удаление идентификаторов и пользователей
- •3. Создание ролей. Удаление ролей
- •4. Права доступа. Управление правами доступа
- •ТемаXii. Использование распределенных объектов управления.
- •1.Sql-dmo. Назначение, возможности
- •2. Экспорт данных с помощью команды вср
- •3. Использование объектовSql-dmOв хранимых процедурах
- •ТемаXiii. Основные сведения о хранилищах данных
- •1. Хранилища данных. Системы поддержки принятия решений (dss). Интерактивная аналитическая обработка (olap)
- •Сравнение субд и хранилища данных
- •2. Компоненты хранилища данных. Хранилища данных и магазины данных
- •3. Преобразование данных. Метаданные
- •4. Разработка плана хранилища данных
- •Microsoft Repository
- •С помощью мастера dts можно выполнять также простые преобразования данных, сложные преобразования выполняются с помощью dts Designer.
- •ТемаXiv. Использование служб преобразования данных
- •1. Службы преобразования данных (dts).DtSи хранилища данных
- •2. СредствоDtsDataPump
- •3. МастераDts
- •4. ИспользованиеDtsDesigner
- •Тема XV. Службы olap Microsoft sql Server
- •1.OlaPи многомерные данные
- •2. Хранение данных в бдolap
- •3. Оптимизация базы данныхOlap
- •4. Доступ к многомерным данным
8. Глобальные переменные. Отладка хранимых процедур
В SQL Server предусмотрено несколько глобальных переменных, которые можно использовать при написании хранимых процедур. Глобальная переменная имеет в начале имени @@:
@@ERROR – используется для проверки кода ошибки оператора, выполняемого SQL Server. Эта переменная содержит 0, если оператор выполняется корректно. Для каждого сеанса работы создается отдельная копия переменной @@ERROR, поэтому её значение не может быть изменено операторами, выполняемыми в других сеансах.
@@FETCH_STATUS – используются для анализа результатов выполнения команды FETCH, для каждого сеанса работы создается отдельная копия этой переменной.
@@ROWCOUNT – содержит число строк, подвергнувшихся воздействию последнего оператора SQL, для каждого сеанса создается отдельная копия переменной.
@@SERVERNAME – определяет имя локального SQL Server.
@@TRANCOUNT – содержит число текущих активных транзакций для текущего пользователя.
@@VERSION – содержит номер версии SQL Server.
Отладить хранимую процедуру можно:
средствами Transact SQL;
другими средствами отладки.
При отладка средствами Transact SQL используют:
оператор PRINT – служит для отображения содержимого только строковых переменных. Помогает установить, выполнялась ли определенная строка кода
оператор SELECT – используется для отображения содержимого переменных любого типа.
Другие средства отладки:
SQL Server Debugger (отладчик SQL Server) – входит в состав Microsoft Visual C++ 6.0 Enterprise Edition и Microsoft Visual Basic 6.0. Среда отладки схожа со средой отладчика MS VB: точки останова, отображение нужных переменных и т.д.
Трассировка средствами ODBC. Чтобы активизировать это средство необходимо открыть панель управления Windows и щелкнуть на элементе ODBC Data Source (32 bit), затем вкладка Tracing (трассировка) и кнопка Start Tracing Now (начать трассировку).
Утилита SQL Server Profiler – выполняет протоколирование активности SQL Server, позволяет отследить параметры, передаваемые в хранимую процедуру.
Тема X. Транзакции и блокировки
1. Определение транзакции. Ограничения для транзакций. Уровни изоляции транзакций
При написании многопользовательского приложении для обслуживания баз данных очень важно хорошо понимать смысл транзакций и блокировок. Даже для создания однопользовательского приложения требуется иметь какое-то представление о блокировках, хотя их значение для такого приложения не идет ни в какое сравнение с использованием блокировок в сети предприятия с тысячами пользователей.
Следует всегда стремиться к минимизации количества блокировок, этим уменьшается вероятность того, что пользователи будут мешать друг другу.
Основные требования ACID (Atomicity, Consistency, Isolation, Durability — Атомарность, Постоянство, Изолированность, Устойчивость) к транзакциям не зависят от того, чем они вызваны — непосредственно системой SQL Server или косвенно вашим приложением.
Атомарность предполагает, что транзакция должна быть либо завершена, либо не начата. Например, при переводе денег с одного счета на другой они помещаются на целевой счет и изымаются с исходного счета. Либо оба этих действия выполняются, либо, в случае неожиданного прерывания, не выполняется ни одно из них.
Постоянство означает, что после завершения транзакции система должна оставаться такой, какой она была до начала транзакции. Другими словами, когда начинается транзакция, система находится в известном состоянии. Когда транзакция заканчивается, система снова должна оказаться в известном, постоянном состоянии. Транзакция не должна оставлять после себя след, это должно быть полностью законченное действие, поэтому прерванные транзакции возвращают систему в состояние, в котором она находилась до начала транзакции.
Транзакции должны быть изолированными, т.е. не должны влиять на другие транзакции и зависеть от них. Зависимость от других транзакций вызывает тупиковую ситуации (deadlocks), что ведет к откату (rollback) транзакций.
Устойчивость означает, что если транзакция завершена и ее цель достигнута, не может быть никаких веских причин для отката транзакции. После окончания транзакции, она становится завершенной, и даже если с системой что-то случается. По этой причине любой набор важных операций с таблицами баз данных выполняется за одну большую транзакцию. Это гарантирует, что из заданных операций будут выполнены либо все, либо ни одной.
Транзакция (transaction) — это логический блок операций, которые меняются на сервере как единое целое. Этот блок может содержать одну или несколько инструкций SQL, которые должны быть определены в качестве части транзакции.
С помощью ISQL можно выполнять транзакции, состоящие из одной инструкции. Для этого вводится инструкция, и затем команда go. Например, приведенная ниже инструкции возвращает определенный пользователем список таблиц текущей базы данных:
SELECT *
FROM SYSOBJECTS
WHERE type ='U' /*таблицы, определенные пользователем */
ORDER BY name
Транзакции из нескольких инструкций объединяют две или более инструкций SQL, которые посылаются для обработки на сервер. Ниже показан пример транзакции из нескольких инструкций:
CREATE TABLE Table_A(
x smallint NULL,
y smallint NULL)
GO
CREATE TABLE Table B(
z smallint NULL
GO
BEGIN TRAN
UPDATE Table_A
SET x= x + 1
WHERE y=100
UPDATE Table_B
SETz = z+ 1
IF @@ROWCOUNT = 0 OR @@ERROR !=0
/* He была обновлена ни одна строка*/
BEGIN
ROLLBACK TRAN
PRINT 'Произошла ошибка, не была обновлена ни одна строка'
RETURN
END
COMMIT TRAN
Имеется возможность так настроить SQL Server, чтобы транзакции запускались автоматически при выполнении определенных операций. Неявное задание транзакций может быть полезно при разработке и тестировании. Эту опцию можно установить с помощью инструкции SET:
SET IMPLICIT TRANSACTIONS ON | OFF
После установки в SQL Server опции IMPLICIT TRANSACTIONS следующие операции приведут к автоматическому выполнению транзакций:
ALTER TABLE DROP INSERT SELECT |
CREATE FETCH OPEN TRUNCATE TABLE |
DELETE GRANT REVOKE UPDATE |
Существуют некоторые действия, которые нельзя выполнять внутри транзакций. Это такие действия, для которых в случае необходимости невозможно реализовать откат, по крайней мере, без значительной нагрузки на остальные компоненты системы.
Внутри транзакции запрещены следующие действия:
Изменение базы данных.
Создание базы данных.
Создание индекса.
Создание процедуры.
Создание таблицы.
Создание вида.
Инициализация диска.
Удаление (dropping).
Запись транзакции в дамп.
Предоставление прав (granting).
Загрузка базы данных.
Загрузка транзакции.
Переконфигурация.
Лишение прав (revoking).
Выполнение инструкции SELECT INTO.
Выполнение инструкции TRUNCATE TABLE.
Обновление статистик.
Выполнение процедуры sp_DBOPTION и других процедур модифицирующих основную базу данных
В стандарте ANSI определены четыре уровня изоляции, которые повышаются в порядке ужесточения требований к целостности данных при транзакциях. Причем более высокий уровень включает в себя все ограничения предыдущего:
Уровень 0: No trashing of data (запрещение одновременной модификации данных). Двум процессам запрещается изменять одни и те же данные.
Уровень 1: No dirty reads (запрещение "грязного" чтения). Запрещается считывание данных, которые в этот момент модифицируются.
Уровень 2: No nonrepeatable reads (запрещение неповторяемого чтения). В промежутках между чтениями данных внутри одной транзакции запрещается их обновление в других транзакциях, т е. запрещена операция UPDATE.
Уровень 3: No phantoms (запрещение появления фантомов). В добавление к требованиям уровня 2 запрещаются также вставка и удаление записей, т.е. помимо UPDATE запрещаются операции INSERT и DELETE.
В SQL Server 2000 поддерживаются все четыре уровня изоляции транзакций.