Курвостелла (Curvostella)

Средства SQL

Папка: SQL

Курвостелла (Curvostella)

Пакет исходных кодов SergCODE (Freeware) Пакет исходных кодов 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. (При одновременном запуске двух или более трансляций произойдёт “пересечение”.)


Системные хелперы SQL (хранимые процедуры вида sys_HelperName”, подраздел System Helpers):

Группа процедур Процедуры (список) Назначение (продробную информацию смотрите в тексте файлов или транслированных объектов БД)
Удаление объекта базы данных (если присутствует)

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.)


Встраивание транслятора файловых SQL-скриптов в оболочку:

Папка (подраздел) Назначение
Shell Translation

Для ассоциации файлового расширения “.sql” с утилитой $SqlTrans в проводнике Windows рекомендуется использовать наименование ExecuteWindows 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:


Использование утилит командной строки для работы с SQL:

Папка (подраздел) Назначение
Usage of CMD-Utilities

Папка содержит простейшие примеры, демонстрирующие использование $SqlTrans и $SqlUpload.


Программные примеры SQL:

Папка (подраздел) Назначение
Programming Samples

Демонстрируются два реально применявшихся простых проекта SQL, предназначенных для поддержки соответствующих приложений БД на стороне сервера (так называемый “API операций SQL на базе хранимых процедур”).



Наверх

© Китаев С.Ю.