РИС. 3.27. Результат выполнения хранимой процедуры sp_who
С помощью списка подключенных пользователей можно выполнять разные действия, например прекращать пользовательские сеансы работы с сервером, как описывается в следующем разделе.
Завершение процесса с помощью команды KILL
В SQL Server администратор может удалить процесс, например пользовательское подключение или блокировку базы данных, с помощью команды KILL. Обычно эта команда применяется для чрезвычайного прекращения пользовательского сеанса, устранения зависшего сеанса или удаления установленной пользователем блокировки данных и продолжения работы с ними. (Эти ситуации хотя и крайне редко, но все же встречаются, особенно в процессе создания приложения.)
Перед использованием этой команды необходимо узнать идентификатор процесса, выполнив хранимую процедуру sp_who (если предполагается удалить пользовательский сеанс) или хранимую процедуру sp_lock (если предполагается удалить блокировку базы данных). В обоих случаях в поле spid возвращаются идентификаторы всех процессов. Зная идентификатор нужного процесса, его можно удалить.
Допустим, что после выполнения хранимой процедуры sp_who вы узнали номер процесса, например 10, который необходимо удалить. Для его удаления введите в окне Query программы SQL Query Analyzer команду
KILL 10
После выполнения этой команды указанный процесс будет немедленно удален.
НА ЗАМЕТКУ
Рекомендуется периодически выполнять процедуру sp_who, особенно в процессе создания приложения, только для того, чтобы знать, что происходит с вашей базой данных.
Удаление объектов базы данных
В SQL Server для удаления объектов используется команда DROP. Удаленный с ее помощью объект исчезает безвозвратно, причем удаляется не только структура объекта, но и его содержимое.
Для удаления объекта с помощью программы Enterprise Manager, например таблицы, выделите ее, щелкните правой кнопкой мыши и из контекстного меню выберите команду Delete.
А для удаления объекта из базы данных с помощью программы SQL Query Analyzer используйте команду DROP. Например, для удаления таблицы tblCustomer введите следующую команду:
DROP TABLE tblCustomer
Бизнес-ситуация 3.2: SQL-сценарий для создания базы данных
Для запуска примеров кода требуется запустить сценарий NoveltyDB.sql, который предназначен для создания и запуска базы данных Novelty. (Наверное, вы уже заглядывали в него и интересовались тем, что он делает.)
Поскольку структура базы данных может изменяться в процессе создания приложения, разработчику нужно периодически создавать сценарий для документирования текущей структуры базы данных, а также для автоматического создания (или воссоздания) базы данных. Хотя разработчик может обладать полным контролем и вручную создавать такие сценарии, но гораздо лучше применять для этого программу SQL Server Enterprise Manager. По крайней мере она прекрасно подходит для создания основы сценария и его последующего редактирования. Этот подход позволяет гораздо быстрее добиться решения поставленной задачи с меньшей вероятностью возникновения ошибок.
Разработчик базы данных для компании Jones Novelties Incorporated решил применить этот подход для создания корпоративной базы данных. Созданный им сценарий позволяет просто инсталлировать объекты базы данных на компьютере, на котором она даже не определена. Иначе говоря, сценарий выполняет все необходимые действия для создания и инсталляции базы данных и ее объектов на совершенно "пустом" компьютере, что обычно требуется при инсталляции системы на новом рабочем месте. На рис. 3.28 показана схема базы данных Novelty в диалоговом окне программы SQL Server Enterprise Manager.
РИС. 3.28. Структура базы данных Novelty компании Jones Novelties Incorporated в диалоговом окне программы SQL Server Enterprise Manager
Сценарий создания базы данных выполняется в программе SQL Query Analyzer. Чтобы сократить до минимума ошибки, этот сценарий удаляет все прежние объекты базы данных. Это значит, что при любом изменении структуры базы данных в режиме конструктора целостность базы данных может быть восстановлена с самого начала просто за счет повторного выполнения сценария. Этот подход гарантирует, что все изменения структуры базы данных учитываются каждый раз при ее повторном создании.
Читать дальше