
- •Хранимые процедуры Управление процессом компиляции хранимых процедур
- •Управление автоматическим выполнением хранимых процедур
- •Использование индексов
- •Планирование использования индексов
- •Создание индексов средствами t-sql
- •Использование курсоров
- •Динамические курсоры
- •Последовательные курсоры
- •Ключевые курсоры
- •Управление курсорами.
- •Работа с триггерами
- •Пример триггера
- •Система безопасности sql Server
- •Общие правила разграничения доступа
- •Аутентификация и интеграция с доменом Windows
- •Режим аутентификации Wondows
- •Режим аутентификации sql Server
- •Права доступа
- •Компоненты системы безопасности sql Server
- •Создание пользователей
Создание индексов средствами t-sql
CREATE [UNIQUE]
[CLUSTERED | NONCLUSTERED]
INDEX index_name
ON table(column[..n])
UNIQUE.При указании этого ключевого слова будет создан уникальный индекс. при создании такого индекса сервер выполняет предварительную проверку колонки на уникальность значений. Если в колонке есть хотя бы 2 одинаковых значения индекс не создаётся и сервер выдаёт сообщение об ошибке. В индексируемой колонке так же желательно запретить хрнение неопределённых значений NULL чтобы избежать проблем связанных с уникальностью значений. После того, как для колонки создан уникальный индекс, сервер не разрешит выполнение команд вставки и удаления, которые приведут к появлению дублирующихся значений.
CLUSTERED. При использовании этого ключевого слова создаваемый индекс будет кластерным. То есть физически данные будут располагаться в порядке определяемом этим индексом. При использовании NONCLUSTERED создаваемый индекс будет некластерным.
index_name. Имя индекса по которому он будет распознаваться комендами T-SQL. Имя индекса должно быть уникальным в пределах таблицы.
table(column[..n]). Имя таблицы, в которой содержатся одна или несколько индексируемых колонок. В скобках указываются имена колонок, на основе которых будет построен индекс. Не допускается построение индекса на основе колонок с типами данных TEXT, NTEXT, IMAGE, BIT. Если указывается несколько колонок ,то создаваемый индекс будет смешанным. В один смешанный индекс можно включить до 16 колонок.
Для удаления индекса используется команда DROP INDEX, имеющая следующий синтаксис.
DROP INDEX table.index[..n]
table.index[..n] определяет удаляемый индекс в таблице. За одну операцию удаления можно удалить несколько индексов в любой таблице базы данных, перечислив их через запятую.
Использование курсоров
Внесение изменений в статические курсоры невозможно, так как нет гарантии существования и неизменности строк данных, на основе которых построен курсор. Поэтому статический курсор всегда открывается только для чтения. Так как данные статического курсора сохраняются в системной базе данных tempdb, то максимальный размер строки курсора зависит от размера строки, установленного для этой базы данных. Кроме того, размер самого курсора так же зависит от установленных параметров базы данных tempddb. Поэтому необходимо позаботиться о том, чтобы в этой базе данных всегда было достаточно. Свободного пространства для сохранения временных объектов.
Динамические курсоры
Динамические курсоры являются противоположностью статическим курсорам. При использовании динамических курсоров не создаётся полная копия исходных данных, а выполняется динамическая выборка из исходных таблиц только при обращении пользователя к тем или иным данным.
Сервер блокирует строки на время выборки. Все изменения, вносимые пользователем, в полный результирующий набор курсора будут видны в курсоре при выборке. Тем не менее, изменения данных отслеживаются только при выборке строк. Если другой пользователь внёс в данные изменения уже после их выборки курсором, то эти изменения не будут отражены в курсоре. Изменения данных, сделанные в курсоре, не позволяют выбирать данные в обратном направлении.