
- •1) Команды управления данными - insert, update, delete
- •2) Особенности применения команд insert, update, delete к представлениям
- •3) Понятие пользователя. Его создание и управление
- •4) Назначение прав пользователю
- •5) Отмена прав у пользователей с учетом их статуса 6) привилегированные пользователи и их привилегии
- •7) Обеспечение целостности данных в схеме базы данных (фактически, ключи и их использование)
- •8) Понятие транзакции. Требования к транзакциям, 9, 10, 11
- •12),13) Триггер как разновидность хранимой процедуры(for after)
- •15) Функция определенная пользователем. Скалярные и табличные
- •16) Хранимые процедуры (3 вида: без параметров, с входными параметрами, с входными выходными)
- •17) Параллельность и блокировки. Проблемы существующие в параллельных сессиях (4 штуки)
- •18) Механизм блокировок ( 4 вида уровней изоляции)
- •19) Объекты блокировок
- •20) Эскалация блокировок и 2 способа разрешения
- •21) Алгоритм работы менеджера блокировок
- •22) Простые блокировки (разделяемая, монопольная и обновление)
- •23) Блокировки намерений (на разделение, на монопольное использование и на обновление)
- •24) Блокировки схемы данных (стабильности, изменения схемы)
- •2 5) Кольцо преобразований блокировок (пояснить почему возможно движение по кольцу)
- •27) Операции репликации, виды метафор
- •28) Топология репликации
- •29) Типы репликации (снимок, транзакционное и соединение)
- •30) 31) 32) Резервное копирование (полное, частичное, транзакционное)
- •33) Создание индексов и виды индексов
- •34) Средства для проверки соответствия заданному шаблону
- •35) Структура полнотекстового поиска (алгоритм описан в презентации)
- •36) Управление полнотекстовым поиском ( подключение к бд, добавление таблиц и колонок)
- •37) Поисковые выражение. Особенности их использования
- •39) Использование весов в частях шаблона
- •38) Использование оператора не в полнотекстовом поиске
- •40.0 Предыстория
- •40) Назначение и использование механизма odbc
- •42) Назначение и использование механизма ado
- •41) Назначение и использование механизма ole db
- •43) Назначение и использование механизма ado.Net
- •26) Установка уровня изоляции ( все которые касаются главных проблем, о старых не нужно. Показать где назначаются, как управляются)
5) Отмена прав у пользователей с учетом их статуса 6) привилегированные пользователи и их привилегии
При отмене привилегий используется команда:
REVOKE < List of names right> ON <Name of table> FROM <List of users>;
REVOKE INSERT ON STUDENTS FROM USER1;
Это право дается тому, кто привилегии предоставлял.
Привилегии могут даваться для определенных строк.
Привилегии могут даваться для извлечения данных
Существуют пользователи, которые имеют право передавать свой статус кому-либо. Это привилегии:
CONNECT – право регистрировать и создавать представления и синонимы;RESOURCE – право создавать базовые таблицы; DBA – права администратора (SYSADM, SYS, SA).
7) Обеспечение целостности данных в схеме базы данных (фактически, ключи и их использование)
Если между таблицами существуют связи:
SNUM(STUDENTS) à SNUM(USP) PNUM(PREDMET) à PNUM(USP),
то такие связи называют состоянием справочной целостности. Они необходимы, чтобы избежать избыточности информации. Поле, являющееся внешним ключом, определенным образом связано с таблицей, на которую оно ссылается(однозначное соответствие, т.е. Система в состоянии справочной целостности).
Если это не так, то в таблице STUDENTS появятся два одинаковых номера SNUM, например 3412.
Тогда непонятно кому будут принадлежать оценки для SNUM=3412.
SQL автоматически поддерживает справочную целостность при помощи предложения FOREIGN KEY.
Это ограничение используется в командах
CREATE TABLE или ALTER TABLE.
Синтаксис ограничений: FOREIGN KEY <List of attribution> REFERENCES <Name of table> [(List of attribution)]
Требования: Списки содержат одинаковое число полей;Списки совместимы по типу;Идентичный порядок в списках.
Для контроля целостностью данных система проводит транзакции. Транзакция начинается всякий раз, как происходит сеанс с SQL. Все вводимые команды становятся частью транзакции, пока не будет её завершения.
COMMIT WORK;ROLLBACK WORK;AUTOCOMMIT.
Режим AUTOCOMMIT устанавливается предложением:SET AUTOCOMMIT ON;
Выключается предложением:SET AUTOCOMMIT OFF;
Для сохранения внутри транзакции ранее выполненных действий используются предложения:SAVE TRANSACTION SAVEPOINT; ROLLBACK TO SAVEPOINT;
8) Понятие транзакции. Требования к транзакциям, 9, 10, 11
Транзакция это последовательность операций, объединенных в единый логический рабочий модуль.
Механизм транзакций позволяет контролировать выполнение операций в этом логическом модуле и производить откаты (отмену уже сделанной операции), если этого требует логика приложения.
Рабочий модуль должен соответствовать основным требованиям к транзакциям, сокращенно называемые ACID (Atomicity, Consistency, Isolation, Durability)
SQL сервер позволяет запустить явную, автоматически совершаемую или неявную транзакцию
Explicit (явная) транзакция предваряется выражением BEGIN TRANSACTION
Autocommit (автоматически совершаемая) транзакция – режим, в котором работает SQL сервер по умолчанию, каждая отдельная инструкция T-SQL совершается (изменения в данные вносятся физически ) после отрабатывания инструкции. Не нужно указывать никаких ключевых слов, чтобы начать такую транзакцию
Implicit (неявная) транзакция. Такой режим транзакции устанавливается инструкцией SET IMPLICIT_TRANSACTIONS ON, следующая за этой инструкцией конструкция T-SQL автоматически начинает новую транзакцию. Когда эта транзакция завершается, следующее выражение начинает новую транзакцию.
Для завершения транзакции используется конструкция COMMIT
Если все прошло успешно, конструкция COMMIT гарантирует, что все изменения будут сделаны на физическом уровне.
Если же во время выполнения транзакции произошла ошибка, используется конструкция ROLLBACK – данные возвращаются к первоначальному состоянию, или к некоторой точке сохранения, системные ресурсы освобождаются.
SAVE TRAN [ SACTION ] { savepoint_name | @savepoint_variable } – объявить savepoint
BEGIN TRAN [ SACTION ] [ transaction_name | @tran_name_variable [ WITH MARK [ 'description' ] ] ]
ROLLBACK [ TRAN [ SACTION ] [ transaction_name | @tran_name_variable | savepoint_name | @savepoint_variable ] ]
COMMIT [ TRAN [ SACTION ] [ transaction_name | @tran_name_variable ] ]
В autocommit режиме в случае возникновения ошибки компиляции SQL сервер делает rollback всему пакету инструкций. При возникновении runtime error откат не производится, не выполняется лишь инструкция, в которой произошел runtime error:
В SQL Server контроль имени объекта производится в (во время выполнения) execution time.
@@ERROR возвращает номер ошибки, возникшей при выполнении предыдущего SQL-выражения или 0, если ошибок не было. Сообщения, соответствующие каждому коду ошибки хранятся в таблице sysmessages
@@ROWCOUNT возвращает количество строк, затронутых предыдущим запросом
RAISEERROR – генерирует исключение
RAISERROR ( { msg_id | msg_str } { , severity , state } [ , argument [ ,...n ] ] ) [ WITH option [ ,...n ] ]
severity - тип проблемы (использовать 11-16)
state – произвольное число от 1 до 127