Declare имя_переменной тип_переменной




Имя переменной всегда начинается с символа «@». Остальная часть имени переменной подчиняется стандартным правилам именования в MS SQL Server 2000. Переменные могут иметь те же самые типы, что и столбцы таблицы (типы рассмотрены в лаб. раб. №2). В одной команде declare можно объявить несколько переменных, отделяя их друг от друга запятыми. Например: declare @name varchar(20), @age tinyint.

Для присваивания значений переменным, используют команды set или select. Первая команда позволяет присваивать значение только одной переменной, вторая – сразу нескольким. Например:

  • Set @name = ‘Alex’
  • Set @age = 24
  • Select @name=’Alex’, @age = 24

После знака равенства в операторе присваивания может находиться как некоторое атомарное значение, так и вычисляемое выражение. В выражениях допустимо применять имена переменных, имена столбцов таблиц базы данных, константные значения, операторы - арифметические, конкатенации, логические, битовые и сравнения, а также функции (как встроенные, так и пользовательские).

К арифметическим операторам относят сложение (+), вычитание (-), умножение (*), деление (/) и нахождение остатка от деления (%). Используются для числовых типов.

Оператор конкатенации предназначен для работы с символьными строками и позволяет объединять их. Оператор обозначается знаком (+).

Операторы сравнения (<,>,=,!=,>= и <=)и битовые операторы (&, | и ^) аналогичны соответствующим операторам любого языка программирования.

Набор логические операторов, в отличие от всех остальных, имеет помимо стандартных, операторы, не имеющие аналогов в традиционных языках программирования. Это связано со спецификой обрабатываемой информации. Рассмотрим логические операторы более подробно.

  • NOT, AND и OR – имеют аналоги в языках программирования;
  • BETWEEN – возвращает true если проверяемое значение лежит в указанном промежутке;
  • ALL – сравнивает проверяемое скалярное значение со всеми значениями в наборе. Возвращает true, если условие выполняется для всех значений в наборе;
  • ANY – сравнивает проверяемое скалярное значение со всеми значениями в наборе. Возвращает true, если условие выполняется хотя бы для одного значения в наборе;
  • IN – аналогичен ANY, с той разницей, что может использоваться любое выражение в качестве проверяемого значения. Кроме того, для формирования набора может использоваться не только запрос или подзапрос, но и простое перечисление значений;
  • EXISTS – возвращает true, если подзапрос возвращает хотя бы одну строку;
  • LIKE – используется для поиска значений по заданному образцу (был рассмотрен в [7]).

Для вывода информации, используют команду print или уже знакомую команду select. Разница в том, что команда print осуществляет простой вывод, а команда select – вывод в стандартный набор строк. Синтаксис команд одинаков – после команды перечисляются имена переменных, значения которых нужно вывести.

Временные таблицы создаются и обрабатываются иным образом. Создание временной таблицы аналогично созданию обычной таблицы, с той разницей, что имя временной таблицы должно начинаться с символа «#». Временные таблицы сохраняются в служебной базе данных TempDB и автоматически уничтожаются при завершении сеанса пользователя, их создавшего (или командой drop table). Работа с временной таблицей – ввод, редактирование, вывод и удаление данных, происходит аналогично работе с обычными пользовательскими таблицами.

Рассмотрим управляющие конструкции, используемые в языке T-SQL:

Составной оператор – используется в тех случаях, когда необходимо объединить группу операторов T-SQL в единый блок, воспринимаемый сервером как единое целое. В частности, составной оператор зачастую используется внутри операторов ветвления и цикла. Оператор имеет следующий синтаксис:

BEGIN набор операторов END

Оператор ветвления – используется для организации выполнения того или иного набора операторов в зависимости от некоторого условия. Оператор имеет следующий синтаксис:

IF логическое_условие

Набор операторов

ELSE

Альтернативный набор операторов

Оператор цикла – в языке T-SQL существует только одна разновидность циклических операторов – оператор цикла с предусловием. Оператор имеет следующий синтаксис:

WHILE логическое_условие

Набор операторов

Внутри циклического оператора могут применяться операторы break и continue. Команда break позволяет досрочно выйти из цикла, а команда continue – досрочно начать новый виток цикла. Как правило, обе команды помещают внутри некоторого оператора ветвления.

Оператор паузы – waitfor, позволяет организовать задержку исполнения сценария. Внутри данного оператора используются ключевые слова delay – для указания отрезка времени или time – для указания точного времени. Например:

WAITFOR delay ’31:00’ – остановит выполнение сценария на 31 минуту

WAITFOR time ’12:00’ – остановит выполнение команд до 12 часов.

Кроме описанных операторов и команд, в сценариях можно использовать любые команды SQL – для создания, редактирования и удаления объектов базы данных, для выборки, вставки, изменения и удаления данных и т.п.

 

Вопросы к допуску

1. Что называется SQL-сценарием?

2. Для решения каких задач применяют сценарии?

3. Как хранятся сценарии в MS SQL Server 2000?

4. Как вызвать и запустить на исполнение сценарий в MS SQL Server 2000?

5. Что называется пакетом? Для чего применяют пакеты?

6. Как разделить сценарий на пакеты?

7. Какие ограничения накладываются на пакеты в MS SQL Server 2000?

8. Какими недостатками обладают сценарии?

 

Контрольные вопросы

1. Опишите процесс создания сценария в MS SQL Server;

2. Как объявлять и инициализировать переменные в сценариях?

3. Как создавать временные таблицы?

4. Опишите организацию процесса вывода данных из переменных и из временных таблиц;

5. Какие группы операторов можно использовать в выражениях T-SQL?

6. Опишите операторы логического набора операторов T-SQL;

7. Что такое составной оператор? Какие команды применяются для создания составного оператора?

8. Как организовать процесс ветвления средствами T-SQL?

9. Опишите оператор выбора, используемый в T-SQL?

10. Как организуют циклический процесс в T-SQL?

11. Какие команды применяют для досрочного завершения цикла? Приведите пример;

12. С помощью какой команды можно приостановить выполнение сценария?

 


Лабораторная работа №6:
«Разработка хранимых процедур»

Задание:

  • Создать несколько хранимых процедур, используя Query Analyzer;
  • Продемонстрировать работу с хранимыми процедурами в Query Analyzer – запуск, передача параметров, просмотр кода.

Теоретический материал:

Хранимые процедуры являются усовершенствованным вариантом sql-сценариев. Сценарии позволяют решать разнообразные прикладные задачи, но они обладают рядом следующих недостатков:

  • В сценарии невозможно передавать параметры. Значения, которыми инициализируют переменные, используемые в сценарии можно изменить, только путем редактирования сценария. Возможность передачи параметров могла бы резко повысить гибкость использования сценариев путем их подстройки под различные задачи;
  • Сценарий является интерпретируемым и хранится в отдельном файле. Это понижает его производительность. При создании сценария и первом его запуске сервер автоматически создает оптимальный план исполнения сценария. Однако, любые внесенные в сценарий изменения, отменяют оптимальный план его исполнения. Для повышения производительности гораздо удобней было бы хранить сценарий на сервере и динамически изменять план его исполнения при внесении изменений в него;
  • Хранение сценариев в отдельном файле понижает безопасность базы данных. В MS SQL Server 2000 можно выдавать права и разрешения только на объекты, хранящиеся на сервере. Т.о. сценарием может воспользоваться любой человек. Злоумышленник может изменить сценарий и настроить его на деструктивные действия. Средства безопасности MS SQL Server 2000 в данном случае окажутся неэффективными.

Рассмотренные недостатки сильно понижают пользу от использования сценариев и заставляют задуматься об их усовершенствовании. Хранимые процедуры являются результатом усовершенствования sql-сценариев и лишены описанных недостатков.

Хранимую процедуру можно определить как именованный sql-сценарий, хранящийся на сервере. В хранимые процедуры можно передавать параметры, кроме того, хранимая процедура способна возвращать параметры. Это позволяет разрабатывать гибкие сценарии, состоящие из последовательно выполняемых хранимых процедур. Средства безопасности MS SQL Server 2000 позволяют выдать пользователю или приложению право на исполнение хранимой процедуры.

Все сказанное выше позволяет с уверенностью говорить о том, что хранимые процедуры являются мощным инструментом обработки данных.

В MS SQL Server 2000 хранимые процедуры разделяются на 5 видов:

  • Системные хранимые процедуры – используются для поддержки функциональности MS SQL Server 2000 и хранящихся на нем баз данных. Позволяют организовать выборку данных из системных таблиц, решать различные задачи администрирования сервера, управлять различными его службами. Существует несколько сотен различных системных хранимых процедур. Все они хранятся в системной базе данных Master и имеют в своем названии префикс sp_;
  • Локальные хранимые процедуры – хранятся в пользовательской базе данных и используются для решения различных задач в ней. В данной лабораторной работе мы будем создавать именно эту разновидность хранимых процедур;
  • Временные хранимые процедуры – хранятся в системной базе данных TempDB и существуют только на период сеанса пользователя;
  • Удаленные хранимые процедуры – данный вид хранимых процедур функционирует на удаленной копии MS SQL Server. В настоящее время подобные процедуры не рекомендуется использовать. Они оставлены лишь для совместимости с ранними версиями MS SQL Server.
  • Расширенные хранимые процедуры – по своей структуре, данная разновидность резко отличается от всех остальных хранимых процедур. Расширенные хранимые процедуры представляют собой динамически подключаемые библиотеки (dll). Хранимые процедуры этого вида имеют префикс xp_ и предназначены для взаимодействия с различными внешними программами (например для отправки сообщений по электронной почте – xp_sendmail). Создавать расширенные хранимые процедуры можно с помощью любого языка программирования, используя SQL Server Open Data Services API.

В данной лабораторной работе мы будем рассматривать локальные хранимые процедуры. Для создания таких процедур используется команда create proc, имеющая следующий синтаксис:

CREATE PROC имя_процедуры

[список параметров]

[WITH RECOMPILE | ENCRYPTION]

AS

тело процедуры

GO

Рассмотрим команду более подробно. После ключевых слов create proc необходимо указать имя процедуры. Имена процедур подчиняются стандартным правилам именования объектов в MS SQL Server 2000. Далее можно указать список параметров передаваемых в процедуры и возвращаемых процедурой. Параметры перечисляются через запятую и имеют следующий синтаксис:

имя тип [= значение_по_умолчанию] [OUTPUT]

Имя параметра задается так же, как и имена переменных. Тип данных также аналогичен тем, которые могут принимать переменные. Необязательными являются присваивание значения по умолчанию и ключевое слово output. Если параметру присвоено значение по умолчанию, то в случае вызова хранимой процедуры без этого параметра ему будет присвоено значение, присвоенное по умолчанию. В качестве значений по умолчанию разрешается использовать только константы. Ключевое слово output используется, когда необходимо возвратить измененное значение параметра хранимой процедуры.

Опции with recompile и with encryption являются необязательными и используются соответственно, если нужно запретить кэширование плана выполнения процедуры (не рекомендуется т.к. это снизит производительность) и если нужно шифровать код хранимой процедуры.

Тело процедуры представляет собой набор команд языка T-SQL. Для завершения команды create proc используется оператор go (т.к. данная команда может быть единственной в пакете).

Рассмотрим несколько примеров:

 

Create proc building_info

@type varchar (9)

as

select bldg_id, address, status

from builling

where bldg_type = @type

go

 

В данном примере хранимая процедура принимает параметр @type и выводит все сведения о зданиях указанного типа. Для выполнения процедуры можно выполнить команду:

Exec building_info ‘Магазин’

В результате будут возвращен набор строк, содержащий сведения об строящихся магазинах.

Рассмотрим еще один пример:

Create proc worker_info

@id char(5) = null output

@name varchar(30) = null output

@skill varchar (10) output

@rate smallmoney output

AS

If @id is not null

Select @name = wrkr_name, @skill = skill_type, @rate = h_rate

From worker

Where wrkr_id = @id

Else

Select @id = wrkr_id, @skill = skill_type, @rate = h_rate

From worker

Where wrkr_name = @name

Go

Приведенная хранимая процедура позволяет осуществить поиск сведений о рабочем либо по его индивидуальному коду, либо по его имени. Приведем пример использования данной процедуры:

Declare @id char(5), @name varchar(30),

@skill varchar (10), @rate smallmoney

Set @name = ‘Сидоров И.П.’

Exec worker_info @name, @id output, @skill output,

@rate output

Select [Код работника] =@id,[Специальность]= @skill, [Оплата]= @rate

Результатом выполнения приведенного кода будет вывод сведений о работнике по имени «Сидоров И.П.».

 

Вопросы к допуску

  1. Что называют хранимой процедурой?
  2. За счет чего хранимые процедуры имеют большую производительность, нежели сценарии?
  3. Каким образом обеспечивается безопасность при использовании хранимых процедур?
  4. Перечислите виды хранимых процедур, используемых в MS SQL Server 2000. Дайте им краткую характеристику;
  5. Как (в общем случае) хранятся процедуры?
  6. Как осуществить вызов хранимой процедуры?

 

Контрольные вопросы

  1. В какой базе данных хранятся системные хранимые процедуры? Приведите пример системной хранимой процедуры;
  2. Где хранятся временные хранимые процедуры? Какой срок жизни может иметь временная хранимая процедура?
  3. В каком виде хранятся расширенные хранимые процедуры? Как подключить собственную расширенную процедуры к серверу базы данных? Приведите пример расширенной хранимой процедуры;
  4. Какими способами создаются локальные хранимые процедуры? Где и как они сохраняются?
  5. Опишите синтаксис команды create proc;
  6. Для чего используется опция with recompile?
  7. Для чего используется опция with encryption?
  8. Как создавать входные и выходные параметры в теле процедуры?
  9. Опишите вызов процедуры с передачей параметров;
  10. Опишите процесс передачи параметров из процедуры;

 

 


Лабораторная работа №7:
«Создание триггеров»

Задание:

  • Создать несколько триггеров разных типов и связать их с таблицами и представлениями базы данных;
  • Продемонстрировать исполнение триггеров.

Теоретический материал:

Триггерами называются хранимые процедуры, связанные с таблицами или представлениями и автоматически выполняемые при операциях вставки, изменения и удаления данных. Триггеры всегда связаны с некоторой конкретной таблицей или представлением.

Триггеры используют для контроля целостности информации, хранящейся в таблице. При проектировании таблиц контроль целостности производится путем введения ограничений уровня таблицы. Однако существуют ситуации, когда применения ограничений оказывается недостаточно:

· Если необходимо каскадное изменение через связанные таблицы;

· Если база данных не нормализована и требуется автоматическое обновление избыточных данных;

· Если необходимо сверить значение из одной таблицы с неидентичным значением из другой таблицы;

· Если необходимо произвести обработку ошибок и организовать вывод пользовательских сообщений.

Во всех этих ситуациях применяются триггеры, т.к. функциональность ограничений не позволяет разрешать данные ситуации.

В MS SQL Server 2000, триггеры классифицируют по 2-м признакам: по поведению и по типу операции, на которую они реагируют. По поведению различают два вида триггеров – after и instead of. По типу операции триггеры делятся на insert trigger, update trigger и delete trigger

Триггеры типа after выполняются после того, как была выполнена запустившая их операция. Этот вид триггеров является стандартным триггером для MS SQL Server 2000. Данные триггеры можно связывать только с таблицами базы данных. Можно назначить несколько последовательно выполняемых триггеров на одну и ту же команду (insert, update или delete).

Триггеры типа instead of выполняются вместо запустивших их операций. Фактически, вместо запроса пользователя исполняется тело триггера. На каждую из операций можно назначить только один триггер данного типа, но зато их можно связывать не только с таблицами, но и с представлениями. На практике, триггеры этого типа применяют для обработки ошибок.

Для создания триггеров в T-SQL применяют кома нду create trigger, которая имеет следующий синтаксис:

CREATE TRIGGER имя_триггера

ON имя_таблицы

тип_триггера запускающая_операция

AS

тело триггера

GO

В команде обязательно требуется указать имя триггера и, после ключевого слова on имя таблицы (для instead of триггеров можно указать имя представления), с которой будет связан триггер. Далее требуется указать тип триггера – after ( можно также использовать ключевое слово for) или instead of и операцию, которая запустит триггер. Один и тот же триггер может запускаться разными операциями, в этом случае их перечисляют через запятую.

После ключевого слова as следуют операторы T-SQL, составляющие тело триггера. Для завершения создания триггера выполняем команду go.

В процессе работы может понадобиться изменить триггер. Для этого используется команда alter trigger, которая имеет такой же синтаксис, как и команда create trigger. Фактически, в T-SQL, изменение триггера эквивалентно написанию его заново.

Если возникает необходимость удалить триггер, используется команда drop trigger имя_триггера.

 

 

Выясним, как работает триггер. При вызове триггера, MS SQL Server 2000 создает две специальные таблицы – inserted и deleted. Эти таблицы создаются отдельно для каждого триггера и имеют режим «только для чтения».

При вызове операции вставки данных (insert), таблица inserted содержит вставленные пользователем строки, а таблица deleted пуста. При вызове операции удаления (delete) ситуация противоположна – inserted пуста, а deleted содержит строки, удаленные пользователем из таблицы. При вызове операции обновления (update) задействуются обе таблицы. В таблице deleted содержатся данные, которые пользователь собирается изменить, а в таблице inserted содержатся обновленные данные.

При своей работе триггер анализирует данные, хранящиеся в таблицах inserted и deleted для принятия решения о фиксации или откате транзакции.

Достаточно часто на практике возникают ситуации, когда необходимо выяснить, в каком именно столбце (или столбцах) были произведены изменения. Язык T-SQL предоставляет функции update (имя_столбца) и column_updates (маска) для решения этой задачи.

Первая из этих функций - update (имя_столбца) позволяет в явном виде ввести имя некоторого столбца и возвращает true, если в нем были произведены вставка или обновление данных.

Для выполнения подобной проверки для нескольких столбцов, используется функция column_updated, принимающая в качестве параметра битовую маску. Для первых 8-ми столбцов маска формируется следующим образом (Таблица1):

 

Таблица 1

Столбец                
Маска                

 

На практике для реализации проверки применяют оператор битового and, данной внутри функции. Рассмотрим пример:

 

If (column_updates() & 40) = 0

 

В данном примере число 40 можно разложить на 32 + 8. Эти маски соответствуют шестому и четвертому столбцам. Таким образом, условный оператор с помощью функции column_updates проверяет, были ли внесены изменение и в 4, и 6 столбцы. Если бы потребовалось проверить были ли внесены изменения в хотя бы в один из этих столбцов, знак равенства заменился бы знаком «больше»:

If (column_updates() & 40) > 0

 

Следует заметить, что в таблицах часто содержится более восьми столбцов. Возникает вопрос: «Как проверить остальные столбцы?» Дело в том, что битовая маска одинакова для каждой восьмерки столбцов и для всех восьмерок, кроме первой необходимо указывать ее порядковый номер. Например, для второй восьмерки проверка 10 и 12 столбцов будет выглядеть следующим образом:

If (column_updates()&10, 2) > 0

 

В теле триггера можно использовать практически те же самые операторы, что и в хранимых процедурах, т.к. триггеры являются специальной разновидностью хранимых процедур. Однако, следует отметить, что в теле триггера нельзя создавать новые объекты – таблицы, представления и т.п.

Вопросы к допуску

1. Что называется триггером?

2. Для чего используют триггеры?

3. С какими объектами базы данных можно связать триггеры?

4. В каких случаях следует применять ограничения и нет необходимости в применении триггеров?

5. В каких случаях следует применять триггеры вместо ограничений?

6. Как осуществляется запуск триггера?

Контрольные вопросы

1. Какие виды триггеров используются в MS SQL Server 2000?

2. Охарактеризуйте after-триггеры;

3. Охарактеризуйте instead of триггеры;

4. Какие операции способны спровоцировать запуск триггера?

5. Опишите синтаксис команды, создающей триггер;

6. Как изменять триггер средствами T-SQL?

7. Как удалить триггер средствами T-SQL?

8. Каким образом можно временно отключить триггер, не удаляя его?

9. Для чего используется таблица inserted? Какие данные хранятся в ней и когда?

10. Для чего используется таблица deleted? Какие данные хранятся в ней и когда?

11. Приведите пример использования функции Update();

12. Каким образом строится маска в функции Column_updates()?

13. Как использовать функцию column_updates() для проверки изменений в столбцах таблицы?

14. С помощью какой функции можно организовать вывод пользовательских сообщений?

 

 


Лабораторная работа №8:
«Создание учетных записей. Управление разрешениями»

Задание:

  • Создать несколько учетных записей пользователей. Продемонстрировать объединение учетных записей в группу;
  • В среде Enterprise Manager продемонстрировать назначение прав и разрешений пользователям как непосредственно, так и включая их в роли;
  • Продемонстрировать управление разрешениями в среде Query Analyzer на языке T-SQL.

Теоретический материал:

В данной лабораторной работе будет рассмотрена задача управления учетными записями пользователей. Хотя эта задача непосредственно не входит в процесс проектирования, разработчик может при создании базы определить группы пользователей и разграничить доступ к базе данных.

Задача управления учетными записями и разграничения доступа, является одной из множества задач реализации защиты базы данных. Фирмой Microsoft предлагается шестиуровневая схема защиты данных:

  1. Физический уровень – на данном уровне рассматриваются методы защиты инфраструктуры и серверного оборудования (к примеру, позволяет предотвратить кражу жесткого диска с конфиденциальными данными);
  2. Безопасность сетевого протокола – рассматриваются методы защиты протоколов передачи данных от внедрения злонамеренного кода и перехвата информации. Рекомендуется использовать защищенные протоколы, такие как SSL и IPSec;
  3. Доменная безопасность – безопасность на уровне домена NT;
  4. Безопасность локального компьютера – если SQL Server установлен на локальном компьютере, необходимо ограничить доступ к данному компьютеру;
  5. Безопасность SQL Server – на данном уровне рассматриваются методы защиты в MS SQL Server 2000;
  6. Безопасность приложений – рассматриваются методы защиты прикладных программ, взаимодействующих с базой данных.

В лабораторной работе мы будем рассматривать пятый уровень защиты. Защита в MS SQL Server 2000 реализуется посредством аутентификации, авторизации, аудита и шифрования.

Под аутентификацией понимается предоставление доступа к MS SQL Server 2000. В процессе аутентификации необходимо выяснить личность пользователя (по его учетной записи), желающего получить доступ к серверу и проверить, имеет ли он на это право.

MS SQL Server 2000 предлагает два типа аутентификации:

  • Windows only – аутентификация средствами Windows. Рекомендуется выбрать именно этот режим. В данном режиме мы используем учетные записи пользователей домена или рабочей группы Windows. Таким образом, к серверу имеют доступ только уже зарегистрированные в сети пользователи, которые проходят проверку подлинности средствами Windows. Выбрав данный режим, необходимо указать, каким именно пользователям Windows-сети разрешен доступ к SQL Server. Для этого в среде Enterprise Manager переходим на узел Security и выполняем команду New Login. Откроется диалоговое окно, в котором можно либо ввести, либо выбрать нужную учетную запись.
  • Mixed Mode – смешанный режим. Разрешена аутентификация как средствами Windows, так и средствами MS SQL Server 2000. В настоящее время данный режим не рекомендуется использовать, в связи с тем, что собственные средства проверки контроля учетных записей в MS SQL Server 2000 намного слабее, чем аналогичные в Windows.

После того, как пользователь получил доступ к серверу, ему необходимо пройти авторизацию. Под авторизацией понимается процесс выяснения того, какие именно действия может выполнять данный пользователь на сервере.

В MS SQL Server 2000 авторизация реализуется посредством разрешения и ролей. Разрешения позволяют выполнять определенные действия и делятся на два вида: разрешения на работы с объектами и разрешения на выполнение операторов.

Разрешения на работу с объектами могут выдаваться для каждого объекта базы данных отдельно. В данную группу входят следующие разрешения:

  • Select – разрешение на чтение и выборку данных;
  • Update – разрешение на изменение данных;
  • Delete – разрешение на удаление данных;
  • Insert – разрешение на вставку новых данных;
  • Execute – разрешение на исполнение хранимых процедур

В группу разрешений на работу с операторами входят create и b ackup, соответственно разрешающие создание новых объектов и резервное копирование базы данных.

Работа с разрешения ми происходит следующим образом. Можно выдавать, отменять или запрещать разрешения. В T-SQL для этого используются операторы grant, revoke и deny, соответственно. Находясь в среде Enterprise Manager, можно работать с разрешениями более простым и наглядным способом. Необходимо выбрать нужный объект и вызвать через контекстное меню его свойства. В открывшемся окне выбрать команду permission (разрешения) и с помощью мыши явно указать какие разрешения должны быть выданы, какие сняты и на что налагается запрет.

Механизм разрешений является достаточно мощным, однако для обеспечения работы некоторого пользователя иногда приходится выдавать множество разрешений для множества объектов. Когда пользователей много, а разрешенные им действия одни и те же, появляются мысли об автоматизации разграничения доступа.

В MS SQL Server 2000 данная задача решается посредством механизма ролей. Под ролью понимается набор разрешений, предназначенный для решения некоторой задачи. Таким образом, имея множество пользователей, выполняющих одинаковые действия с базой данных можно оформить необходимые разрешения в виде роли и выдавать разрешения, включая пользователей в эту роль.

MS SQL Server 2000 содержит некоторое количество предопределенных ролей, и предоставляет возможности для создания собственных ролей. Предопределенные роли делятся на роли уровня сервера и роли уровня базы данных. Первые из них предназначены для решения административных задач, касающихся всего сервера в целом. В эту группу входят роли: sysadmin, serveradmin, securityadmin, setupadmin, processadmin, dbcreator, bulkadmin.

Группа ролей уровня базы данных предназначена для решения задач в конкретной базе данных. Прежде чем включить пользователя в одну из таких ролей, необходимо указать к каким базам данных он имеет доступ. Это можно выполнить, вызвав окно свойств учетной записи пользователя. Рассмотрим роли, входящие в эту группу:

  • Db_owner – владелец базы данных. Может выполнять любые действия с ней;
  • Db_accessadmin – имеет право предоставлять и аннулировать доступ к базе данных;
  • Db_securityadmin – назначает разрешения, администрирует роли и т.п.;
  • Db_backupoperator – может создавать резервную копию базы данных;
  • Db_ddladmin – может выполнять любые операторы подмножества DDL языка SQL;
  • Db_datareader – имеют право выборки данных из таблиц и представлений;
  • Db_writer – имеют право вставки, изменения и удаления данных.

Для того, чтобы включить пользователя в роль достаточно дважды щелкнуть мышкой по имени роли и в появившемся диалоговом окне добавить учетную запись пользователя.

 

Вопросы к допуску

  1. Какие уровни обеспечения безопасности предлагаются фирмой Microsoft?
  2. Как обеспечивается безопасность на физическом уровне?
  3. Как обеспечивается безопасность на уровне протокола обмена данными?
  4. Как обеспечивается безопасность на уровне домена windows NT?
  5. Как обеспечивается безопасность на уровне локального компьютера?
  6. Как обеспечивается безопасность на уровне сервера базы данных?

 

Контрольные вопросы

  1. Как обеспечивается аутентификация в MS SQL Server 2000?
  2. Как создать учетную запись в MS SQL Server 2000?
  3. Какие средства авторизации используются в MS SQL Server 2000?
  4. Какие разрешения предоставляет MS SQL Server 2000 для организации защиты данных?
  5. Как происходит работа с разрешениями с помощью Enterprise Manager?
  6. Какие операторы T-SQL используются для работы с разрешениями?
  7. Что из себя представляют роли в MS SQL Server 2000?
  8. Какие виды ролей используются в MS SQL Server 2000?
  9. Перечислите и кратко опишите роли уровня сервера;
  10. Перечислите и кратко опишите роли уровня базы данных;
  11. Что из себя представляют роли уровня приложения?
  12. Как включить учетную запись пользователя в роль?

 


Рекомендуемая литература

 

1. Глушаков С.В., Ломотько Д.В. Базы данных: Учебный курс М., АСТ, 2000.-504 с., илл.

2. К.Дж. Дейт Введение в системы баз данных, М: СПб.: «Издательский дом «Вильямс»», 2000. – 848 с.

3. В.Корнеев, А.Гареев, С.Васютин, В.Райх «Базы данных. Интеллектуальная обработка информации» - М.: «Ноллидж», 2000. – 352с.

4. Microsoft Press «Проектирование и реализация баз данных Microsoft SQL Server 2000. Учебный курс MSSE»: Пер. с англ. – М.; Издательско-торговый дом «Русская редакция», 2001. – 704с.;

5. Райордан Р. Основы реляционных баз данных, М.: Русская редакция, 2001-384 с.

6. Хэнсен Г., Хэнсен Д. Базы данных: разработка и управление: Пер. с англ. – М: ЗАО «Издательство БИНОМ», 1999. – 704с

7. Воронов А.В. СУБД: методическое пособие по выполнения практических работ, Петропавловск: СКГУ им. М. Козыбаева, 2005, 34с.

 

 


Содержание:

Введение------------------------------------------------------------- 3

Лабораторная работа №1: «Логическое проектирование»------- 4

Лабораторная работа №2: «Физическое проектирование: построение схемы данных» 15

Лабораторная работа №3: «Создание таблиц базы данных в MS SQL Server 2000» 22

Лабораторная работа №4: «Создание представлений в MS SQL Server 2000» 28

Лабораторная работа №5: «Разработка SQL-сценариев»------- 33

Лабораторная работа №6: «Разработка хранимых процедур»- 39

Лабораторная работа №7: «Создание триггеров»--------------- 45

Лабораторная работа №8: «Создание учетных записей. Управление разрешениями» 50

Рекомендуемая литература---------------------------------------- 55

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-11-19 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: