![]() |
Средства SQLПапка: SQL |
![]() |
![]() |
Пакет исходных кодов SergCODE (Freeware) |
Для установки в базу данных системных хелперов SQL, а также для трансляции других файловых SQL-скриптов
следует воспользоваться утилитой $SqlTrans (необходимой для применения SQL-кода данного пакета).
Для работы утилит необходимо “прописать” в системе путь к папке CMD-Utilities,
используя переменную среды PATH.
Смотрите: Утилиты командной строки (раздел CMD-Utilities).
SQL-скрипты пакета SergCODE содержат ссылки на переменные, поддерживаемые утилитой SQLCMD — вставки вида $(VaribleName). Они задаются в конфигурационном файле окружения $sql_settings.cmd (в корневом каталоге соответствующего “проекта SQL”). Таким образом, помимо вспомогательных “сущностей”, определяется набор специальных расширений языка TSQL (дополнительные ключевые слова).
В корневом каталоге каждого проекта лежит также необязательный файл $sql_settings.sql, предназначенный, обычно, для применения особых установок, с помощью серии SQL-инструкций SET и разделителя GO, автоматически добавляемых в начало каждого скрипта утилитой $SqlTrans. Во всех приводимых примерах данный файл имеет пустое содержимое. (Т.е. действуют установки SQLCMD по умолчанию.) Глобальное применение особых настроек можно произвести, скорректировав одноимённый файл каталога CMD-Utilities. (Однако, применение локального $sql_settings.sql перекрывает ВСЕ глобальные установки, определённые описанным способом.)
Утилиту $SqlTran для удобного использования можно интегрировать в Проводник Windows, редактор EmEditor,
файловый командер Far Manager и другие приложения.
Смотрите: Встраивание транслятора файловых SQL-скриптов в оболочку (текущая страница).
ВНИМАНИЕ!!! Утилита $SqlTrans предназначена для работы ТОЛЬКО в одном экземпляре, в отдельно взятый момент времени. Этот недостаток обусловлен тем, что команда SQLCMD обрабатывает не непосредственно исходные SQL-файлы, а временный файл $sql_script.sql в директории TEMP. (При одновременном запуске двух или более трансляций произойдёт “пересечение”.)
Группа процедур | Процедуры (список) | Назначение (продробную информацию смотрите в тексте файлов или транслированных объектов БД) |
Удаление объекта базы данных (если присутствует) |
sys_DropProcedure, sys_DropProcedures sys_DropFunction, sys_DropFunctions sys_DropTrigger sys_DropTable sys_DropView sys_DropType |
Данные процедуры, в отличие от команд “drop procedure”, “drop table” и т.п. игнорируют отсутствие удаляемого объекта в базе данных (не вызывают ошибки). Это позволяет эффективно использовать их в скриптах создания объектов БД, — один и тот же скрипт может как создавать так и пересоздавать объект. (Подобное поведение просто необходимо для организации коллекций файловых скриптов для хранимых процедур, функций и т.п.) Процедуры, поддерживающие множественное удаление (“sys_Drop...s”) в отличии от обычных (принимающих имя отдельного объекта) используют шаблон имени (плейсхолдеры: %, _; эскейп: \). Это расчитано на использование разработчиком пространств имён для хранимых процедур и функций. (В этом случае скрипт удаления упрощается до предела, — все их можно удалять из базы одной командой.) Удачными примерами подобного пространства имён являются шаблоны: “somekey_ProgrammaticObjectName” и “Namespace:ProgrammaticObjectName”. (Листинг объектов по шаблону, группировка в Management Studio, — это также преимущества использования пространства имени.) Смотрите программные примеры SQL (папка SQL\Programming Samples). |
Выдача/лишение прав доступа пользователя на запуск хранимых процедур |
sys_GrantExec, sys_RevokeExec |
Эти процедуры предназначены для выдачи/лишения прав доступа определённого пользователя (группы пользователей) по шаблону имени хранимой процедуры. Это также расчитано на использование разработчиком пространств имён для хранимых процедур и функций (см.выше). Смотрите программные примеры SQL (папка SQL\Programming Samples). |
Получение списка выполняемых процессов SQL |
sys_ListProcesses |
Процедура выдаёт детализированных список SQL-процессов для текущей БД, конкретно заданной БД, процессов не привязанных к контексту какой-либо базы данных, а также всех работающих на момент вызова процессов SQL (режим по умолчанию). Данная процедура в некоторой степени похожа на системные sp_who и sp_who2. (Смотрите комментарии в заголовке sys_ListProcesses.) |
Папка (подраздел) | Назначение |
Shell Translation |
Для ассоциации файлового расширения “.sql” с утилитой $SqlTrans в проводнике Windows рекомендуется использовать наименование Execute (в Windows XP); в Far Manager — запускать скрипты по Enter, а из EmEditor — транслировать SQL по F5. Для достижения нормального эффекта интеграции рекомендуется вызывать StartSqlTrans.cmd или InvokeSqlTrans.NoConfirmation.cmd, с именем файла в качестве параметра. (Они, в свою очередь, делегируют исполнение батчам InvokeSqlTrans.cmd или InvokeSqlTrans.NoConfirmation.cmd.) Использование приведённых вспомогательных файлов обеспечивает трансляцию в развёрнутой консоли CMD с соответствующим транслируемому скрипту заголовку. Если для FAR-а достаточно просто сослаться на команду $SqlTrans ($sqltrans "!.!"), то для ассоциации проводника необходим уже полный абсолютный путь к файлу $sqltrans.cmd. В редакторе же EmEditor, при настройке расширенного инструмента SQL, следует задействовать переменную среды SergCODE_Root (должна быть определена в системе). Вспомогательный ресурс: Utilities\EmEditor Configuration (конфигурация реестра для известного текстового редактора EmEditor, включающая поддержку трансляции SQL утилитой $SqlTrans как один из внешних инструментов). Окно настройки внешнего инструмента текстового редактора EmEditor (SQL-Translation):
Пример трансляциии SQL из EmEditor:
|
Папка (подраздел) | Назначение |
Usage of CMD-Utilities |
Папка содержит простейшие примеры, демонстрирующие использование $SqlTrans и $SqlUpload. |
Папка (подраздел) | Назначение |
Programming Samples |
Демонстрируются два реально применявшихся простых проекта SQL, предназначенных для поддержки соответствующих приложений БД на стороне сервера (так называемый “API операций SQL на базе хранимых процедур”). |
Наверх |
© Китаев С.Ю. |