Sp_rename showall, countall

 

Безусловно, новое название должно соответствовать правилам, установленным для идентификаторов. Пользователю разрешается изменять  название только своих процедур. Владельцу базы данных разрешается изменять название любой сохраненной процедуры. Сохраненная процедура, название которой изменяется, должна находиться в текущей базе данных.

 

Переименование объектов внутри процедур

 

Если в сохраненной процедуре было изменено название какого-либо объекта, то она должна быть удалена и создана заново. На первый взгляд может показаться, что сохраненная процедура, которая обращается к переименованной таблице или вьюверу, выполняется правильно. В действительности, эта процедура будет работать правильно только до тех пор, пока SQL Сервер не перекомпилирует ее. Перекомпиляция может произойти  по многим причинам и без специального уведомления пользователя.

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

 

Процедуры как механизм безопасности

 

Сохраненные процедуры могут использоваться в качестве механизма обеспечения безопасности для управления доступом к табличной информации и управления модификацией данных. Например, можно не дать разрешения другим пользователям выбирать информацию из вашей таблицы, и создать сохраненную процедуру, которая позволяет им видеть только некоторые строки или столбцы этой таблицы. Сохраненные процедуры могут также использоваться для ограничения операторов update, delete, insert.

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

Информацию о предоставлении и отзыве прав на сохраненные процедуры и другие объекты базы данных, можно посмотреть в Руководстве пользователя по средствам ограничения доступа SQL Сервера.

 

Системные процедуры

 

Системные процедуры могут быть полезными в следующих отношениях:

 

· · Для ускорения доступа к системным таблицам;

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

 

В большинстве случаев системные таблицы обновляются толькочерез сохраненные процедуры. Системный администратор может разрешить непосредственное обновление системных таблиц путем изменения конфигурационной переменной и выдачи команды reconfigure with override(реконфигурация с перезаписью). См. по этому поводу Руководство системного администратора SQL Сервера(System Administration Guide).

Названия всех системных процедур начинаются с приставки «sp_». Они создаются согласно сценарию installmaster(мастер инсталляции) в базе данных sybsystemprocs во время инсталляции SQL Сервера.

Системную процедуру можно запускать из любой базы данных. Если системная процедура вызывается из базы данных, отличной от sybsystemprocs, то любые ссылки к системным таблицам отображаются в базу данных, из которой процедура была запущена. Например, если владелец базы данных pubs2 запускает процедуру sp_adduser(добавить пользователя), то новый пользователь будет добавлен в таблицу pubs2..sysuser.

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

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

Другие системные процедуры могут запускаться любым пользователем, которой имеет право на использование оператора execute, но это право должно быть предоставлено из базы данных sybsystemprocs. Отсюда вытекают два следствия:

 

· · Пользователь имеет право запускать системные процедуры из любой базы данных или ни из одной из них;

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

 

Более подробную информацию на эту тему см. в Руководстве системного администратора SQL Сервера.

 

Администрирование доступа

 

К этой категории относятся процедуры, выполняющие следующие действия:

 

· · Добавление, удаление и выдача регистраций (logins) SQL Сервера;

· · Добавление, удаление и выдача имен пользователей, групп и псевдонимов (alieses) базы данных;

· · Изменение паролей и базы данных, принимаемой по умолчанию;

· · Изменение владельца базы данных;

· · Добавление, удаление и выдача удаленных серверов, которые имеют доступ к данному SQL Серверу;

· · Добавление имен пользователей удаленных серверов, имеющих доступ к данному SQL Серверу.

 

К этой категории относятся следующие процедуры: sp_addlogin, sp_addalias, sp_addgroup, sp_adduser, sp_changedowner, sp_changegroup, sp_droplogin, sp_dropalias, sp_dropgroup, sp_dropuser, sp_helpgroup, sp_helpprotect, sp_helpuser, sp_password.

Удаленные серверы

 

К этой категории относятся процедуры, выполняющие следующие действия:

 

· · Добавление, удаление и выдача удаленных серверов, которые имеют доступ к данному SQL Серверу;

· · Добавление имен пользователей удаленных серверов, имеющих доступ к данному SQL Серверу.

 

К этой категории относятся следующие процедуры: sp_addremotelogin, sp_addserver, sp_dropremotelogin, sp_dropserver, sp_helpremotelogin, sp_helpserver, sp_remoteoption, sp_serveroption.

 

Определение данных и объекты базы данных

 

К этой категории относятся процедуры, выполняющие следующие действия:

 

· · Связывание и развязывание правил и умолчаний;

· · Добавление, удаление и выдача главных, внешних и общих ключей;

· · Добавление, удаление и выдача типов данных пользователя;

· · Переименование объектов базы данных и типов данных пользователя;

· · Оптимизация сохраненных процедур и триггеров;

· · Составление отчетов об объектах базы данных, пользовательских типах данных, зависимостях между объектами базы, базах данных, индексах, пространстве, занимаемом таблицами и индексами.

 

 К этой категории относятся следующие процедуры: sp_bindefault, sp_bindrule, sp_unbindefault,  sp_unbindrule, sp_foreignkey, sp_primarykey,  sp_commonkey, sp_dropkey, sp_depends,  sp_addtype, sp_droptype, sp_rename,  sp_spaceused, sp_help, sp_helpdb, sp_helpindex,  sp_helpjoins, sp_helpkey, sp_helptext,  sp_indsuspect, sp_recompile.

Сообщения пользователя

 

К этой категории относятся процедуры, выполняющие следующие действия:

 

· · Добавление сообщений пользователя в таблицу sysusermessages базы данных пользователя;

· · Удаление сообщений пользователя из таблицы sysusermessages;

· · Выбор сообщений из таблицы sysusermessages или таблицы sysmessages в базе данных master для вывода их с помощью операторов printи raiserror;

 

К этой категории относятся следующие процедуры: sp_addmessage, sp_dropmessage sp_getmessage.

 

Системное администрирование

 

К этой категории относятся процедуры, выполняющие следующие действия:

 

· · Добавление, удаление и выдача устройств для хранения базы данных и логирующих (dump) устройств;

· · Выдача запретов (locks), установленных опций базы данных и выполняющихся процессов пользователя;

· · Изменение и вывод конфигурационных переменных;

· · Наблюдение (monitoring) за активностью SQL Сервера.

 

К этой категории относятся следующие процедуры: sp_addumpdevice, sp_dropdevice, sp_helpdevice, sp_helpsort, sp_logdevice, sp_dboption, sp_diskdefault, sp_configure, sp_monitor, sp_lock, sp_who.

 

Дополнительная информация о системных процедурах, которые выполняют административные функции, дается в Руководстве системного администратора SQL Сервера. Полную информацию о системных процедурах можно также получить в Справочном руководстве SQL Сервера.

 

Получение информации о процедурах

 

Несколько системных процедур выдают информацию из системных таблиц о сохраненных процедурах.

 

Процедура sp_help

 

С помощью системной процедуры sp_helpможно получить отчет о сохраненной процедуре. Например, пользователь может получить информацию о сохраненной процедуре byroyaltyиз базы данных pubs2 с помощью следующей команды: