Настройки в реестре

Настройки записываются в реестре: LOCAL_MACHINE\Software\ensen\is2sql\1.0

MaxConnections Максимальное число потоков (по умолчанию 8).Число 8 более чем достаточно для целей разработки и отладки. Для работы рекомендуется 32.

NoCacheConnections True (0x1)- потоки будут уничтожаться при закрытии сразу после выполнения потока, что может повысить надежность работы, но снизит производительность. По умолчанию неактивный поток остается доступным для следующего запроса (кэшируется). Не ставьте этот параметр для SQL серверов равным нулю, так как скорость обращения к базе данных из- за постоянных подключений и отключений пользователей резко снизится. Вместо этого нужно аккуратно настроить параметры в разделе ReconnectError.

 Во время работы переключить из состояния кэширования потоков в состояние выгрузки из памяти после завершения выполнения потока можно с помощью параметра CACHECONNECTIONS=1|0 (CHECKED, ) (True, False). Посмотреть состояние- с помощью тега <#a name=sys value="CacheConnections">

Banner заголовок для вывода коротких диагностических сообщений.

Dbs имя алиаса БД по умолчанию. По умолчанию- пустая строка.

User пользователь БД по умолчанию. По умолчанию- - пустая строка. Используется для скрытия account'а.

Key Пароль пользователя БД по умолчанию.По умолчанию- пустая строка. Используется для скрытия account'а

dbs, user и key используются в случае, если из передающей формы не были переданные одноименные параметры.

Замечание:  в разделе Variables реестра также задаются переменные, которые могут использоваться внутри sql выражений. Поскольку dbs, user и key не относятся к разбору sql выражений, не рекомендуется перечислять dbs, user и key в разделе Variables.

Вы можете поставить аккаунт очень ограниченного по возможностям пользователя базы данных, я предпочитаю указывать аккаунт в параметрах dbs, user, key в каждой форме, обращающейся к is2sql.dll

PatternPath Задается каталог по умолчанию. Если в реестре не задан каталог по умолчанию, то таким считается  каталог, из которого запущен .DLL. (Наверное, это scripts или cgi-bin)

Алиасы баз данных (для не BDE)

Алиасы баз данных Oracle или Interbase, к которым обеспечен доступ через компоненты прямого доступа, должны быть перечислены в разделе реестра DbAlias.  

Подробнее

Префикс разбираемых тегов

TagPrefix, строковый параметр, по умолчанию '#'

Коллекции файлов запросов и шаблонов

SQLCollection Задает имя файла коллекции sql запросов и шаблонов (кроме файлов, задаваемых параметром form). Формат файла текстовый. Можно указать путь, начиная с алиаса. Относительный путь берется из каталога, из которого запущен .DLL. По умолчанию имя файла sql.txt. Нельзя указывать имя каталога. Если файл sql.txt не найден, то тогда файлы читаются не из коллекции, а из каталога, заданного в параметре PatternPath.

Задаваемые заголовки ответов

Заголовки ответов перечисляются в

[HKEY_LOCAL_MACHINE\SOFTWARE\Ensen\is2sql\1.0\ResponseCustomHeader]
"Greeting"=""

Эти заголовки с указанными значениями будут добавяться в ответ, отправляемый web- сервером клиенту. В заголовке передаются также сообщения об ошибках в строке Error=, если они были обнаружены. Если ошибок не было, эта строка в заголовок ответа не помещается.

раздел параметров по умолчанию  Variables 

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

Это значит, что наиболее часто используемые переменные можно не передавать из формы в форму, а указать их в реестре.

Примером использования такой переменной может быть имя схемы.

 Например, в файле myquery.sql

SELECT * FROM :SCHEMA.MYTABLE

в реестре в разделе Variables укажите вашу схему:

SCHEMA=MYORACLEUSERNAME

иначе в форму, содержащую тег <#t name=myquery> нужно было бы передавать параметр Schema, если в реестре не была указана эта переменная.

Замечание: Поскольку зарезервированные параметры dbs, user, key, cp и form не относятся к разбору sql выражений, не рекомендуется перечислять dbs, user и key и другие зарезервированные параметры в разделе Variables.

Транзакции

 

Завершение транзакций (COMMIT)

DoTransaction - строковый параметр, принимает значения '1' или '0'. 

Параметр DoTransaction='1' включает транзакции sql запросов , выполняемых из тегов <#t> и <#e>. По умолчанию DoTransaction='1' 

Параметр DoTransaction='0' отключает транзакции sql выражений.

Однако рекомендуется устанавливать в любом случае DoTransaction='1'.

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

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

В случае использования BDE для настольных баз данных рекомендуется  указывать DoTransaction='1'.

Замечание: для Interbase и NC OCI нужно перекомпилировать is2sql со соответствующим  символом условной компиляции

Выбор типа транзакций

Тип транзакций выбирается строковым параметром DbTransisolation. Допустимые значения описаны ниже в зависимости от того, с какими символами условной компиляции USE_xxx скомпилирован is2sql

В случае BDE драйверов настольных баз данных значение этого параметра должно быть равно 0.

Замечание: Выбор типа транзакций влияет только в том случае, если разрешено выполнять sql- выражения в транзакции DoTransaction='1'. 

Замечание: В случае прямого доступа Interbase значение этого параметра ни на что не влияет. В других случаях- BDE и NC OCI значение этого параметра можно оставить по умолчанию.

BDE 

Значение Описание

Мнемоника BDE

(DbTables.pas)

0 Разрешает чтение изменений, делаемых в других транзакциях и еще не назакоммиченных .

tiDirtyRead

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

tiReadCommitted

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

tiRepeatableRead

Обратите внимание, что в случае BDE значение по умолчанию - 1 (tiReadCommitted).

В случае настольных систем нужно устанавливать значение 0 (tiDirtyRead), иначе BDE вернет сообщение об ошибке:

The transaction isolation level must be dirty read for local databases

то есть для настольных систем нужно или устанавливать DoTransaction=0 или DbTransisolation=0.

Компонент доступа к Oracle 8.x NC OCI

Значение Описание

Мнемоника NC OCI

(NCOciWrapper.pas)

0 По умолчанию

tmDefault

1

tmReadWrite

2

tmSerializable

3

tmReadOnly

4

tmDiscrete

 

Обработка ошибок SQL и раздел ReconnectError

Раздел ReconnectError содержит параметры:

DbErrorPrefix- Префикс ошибок. Если параметр DbErrorPrefix не указан, то он принимается равным 'ORA-'. Присвойте префикс ошибок для вашего SQL сервера или пустую строку. Этот параметр действует следующим образом- ищется первое вхождение указанной строки (чувствительно к регистру букв). Начиная с этого места далее анализируются коды или сообщения ошибок, вся строка до этой строки игнорируется. Если, однако, префикс не найден, будет проанализирована все сообщение об ошибки, начиная  с первого символа.

Count - число ошибок.Каждая ошибка в реестре нумеруется, начиная с 1. 0- нет ошибок, для которых нужно делать прерывание соединения с сервером.

Each - True (0x1) -прерывать соединение с сервером в случае возникновения любой ошибки. Не рекомендуется в случае отладки приложения, так как вызывает дополнительные затраты на переустановление соединений с сервером.

1, 2,.. - строковые параметры, содержащие части строк сообщеий об ошибках, идентифицирующие случаи утери соединения с сервером SQL

Рекомендуется установить следующие параметры в разделе ReconnectError, для случаев сбоев сервера SQL Oracle 8:

Значение параметра реестра сообщение сервера
ORA-01041 General SQL error. ORA-01041: internal error. hostdef extension doesn't exist
ORA-03313  
ORA-03314  
TNS-  

Рекомендуется установить следующие параметры в разделе ReconnectError, для случаев сбоев сервера SQL Interbase:

Значение параметра реестра сообщение сервера
Cannot perform operation -- DB is not open сервер баз данных недоступен
connection lost связь с сервером  утеряна

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

Замечание: После отладки приложение рекомендуется значение параметра Each сделать равным True (0x1)

Замечание: В заголовке ответа, передаваемому клиенту, передаются также сообщения об ошибках в строке Error=, если они были обнаружены. Если ошибок не было, эта строка в заголовок ответа не помещается. В строке может быть описание ошибки, или любой код, индицирующий  обнаружение ошибок.

Форма извещения об ошибке соединения с базой данных по умолчанию

DBConnectFailForm задает страницу html, которая будет выводиться в случае, если пользователь указал неправильный пароль или имя пользователя. Эта форма появится и в том случае, если пользователь задал неверный пароль в параметрах pwd и hash.  По умолчанию этот параметр реестра - пустая строка,. В этом случае форма не загружается и выдается сообщение примерно такого содержания:

database login failed...

Этот параметр перекрывается использованием параметра forminvalid. То есть, если в вызывающей форме, например, был тег <input type=hidden name=forminvalid value=/mypages/faildb.html>, то в случае, когда невозможно присоединиться к заданной базе данных с указанным именем и паролем, вместо правильной формы будет загружен /mypages/faildb.html . Если этот параметр был опущен, то is2sql.dll попытается найти в реестре DBConnectFailForm и загрузить его в качетсве оповещения о сбое. Если и это не удалось, будет выдано строковое предупреждение.

В имени файла формы допускается и рекомендуется использование алиасов web- сервера.

Иконка ошибки

Иконка ошибки содержит в alt описание возникшей ошибки. По умолчанию изображение иконки - /icons/err.gif. Размер иконки- 16x16 пиксел. Строка ErrorIcon в реестре задает иконку, если этот параметр в реестре существует и пуст, иконка не будет отображаться, а в страницу будет вставлен текст описания ошибки.

Форма извещения недостаточности прав для просмотра формы по умолчанию

AccessDeniedForm задает форму, которая будет выдаваться пользователю в случае, если у него недостаточно прав для просмотра заданной формы. Права контролируются тегом <#r> В теге <#r> форма извещения о недостаточности прав задается в необязательном параметре тега form. Если он опущен, то тогда используется форма, заданная в реестре по умолчанию. Если AccessDeniedForm в реестре отсутствует, равен пустой строке или указывает на несуществующую форму или файл его нельзя по каким- то причинам загрузить, выдается простое текстовое сообщение о невозможности  показать форму.

Перекодирующие таблицы

eccFileName имя файла коллекции xlat таблиц. По умолчанию- usr.epc (файл usr.epc в каталоге, задаваемом PatternPath или в каталоге, в котором находится is2sql.dll. См. также - необходимые файлы.

xlatname имя или номер(целое десятичное) xlat таблицы. По умолчанию '0'. Этот параметр зарезервирован для последующего использования.

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

Перекодирование служит для того, чтобы передать пользователю html код в заданной кодировке. Допустим, на сервере html страницы, sql запросы, файлы шаблонов и результаты выполнения sql - запросов все в кодировке Windows CP 1251. Вы можете указать тег

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

в заголовке html страницы, или, если возникает такая потребность, перекодировать содержимое передаваемых через is2sql html- страниц в другую кодировку, например, koi-8r

Тогда из  вызывающей формы нужно будет передать параметр cp: 

...&cp=win-koi...

Тогда входные параметры будут переведены в кодировку koi-8r, а результирующий  html код также будет приведен из кодировки windows CP 1251 в кодировку koi-8r 

Значение параметра cp в случае использования файла usr.epc могут принимать строго определенные значения

Линейки страниц

Линейка страниц представляет собой примерно следующее:

| 1-10 | 11-20 |

внизу таблиц. Ссылки задаются параметрами first и last

Формат строки листания страницы PAGELINE

Формат строки листания страницы PAGELINE задается 7 параметрами в реестре.

PageLineInactive строка формата не текущей страницы. По умолчанию '<a href=%s>%d-%d</a>''

PageLineActive строка формата текущей страницы. По умолчанию'<input type=hidden value="%s">%d-%d</a>'

PageLineStart открывающая скобка. По умолчанию '   (  '

PageLineFinish закрывающая скобка. По умолчанию ' ) '

PageLineDelimiter разделитель между ссылками страниц. По умолчанию ' | '.

PageLineStep шаг (число записей на странице). По умолчанию 10.

PageLineLimit число ссылок на странице. По умолчанию 10.

Отладка SQL

MkNull если True (0x01)- отсутствующие или пустые значения параметров будут заменены на значение NULL, как этого требует синтаксис SQL. По умолчанию опция отключена для удобства отладки, так как тогда можно проследить отсутствующие или неверно назначенные параметры.

Временно назначить значение параметра MkNull можно так:

http://ensen/cgi-bin/is2sql.dll/setup?mknull=true

Получить текущее значение параметра можно в теге <#A name=sys value=OPTMKNULL>. Тег возвращает   значение CHECKED или пустую строку.

В случае пустой строки, взятой в кавычки- '', можно сказать, что будет делаться подстановка NULL в кавычках: 'NULL' 

Чтобы избежать это, лучше поступить следующим образом:

...FIELD1 = :PARAMETER1+0

 

В этом случае, если пользователь не ввел значение в PARAMETER1, то будет передан ноль.

ValidateQuoteChar Если True (0x1) - принуждает проверять передаваемые параметры форм на предмет наличия кавычек. Числовые и однословные параметры в кавычки не ставятся. ValidateQuoteChar пропускает проверку параметров, у котрых уже установлены кавычки одинарные или двойные кавычки. По умолчанию False.

OptimizeDoc True(0x1)-все управляющие символы будут удалены перед отправкой браузеру. Может незначительно увеличить скорость загрузки страниц с большим числом пробелов (выровненных лесенкой), однако искажает содержимое тегов <PRE> и аналогичных ему. 

Не рекомендуется использовать эту возможность, а оптимизировать собственно сами html страницы и шаблоны .htt

Раздел ResponseCustomHeader содержит дополнительные строки для передачи web- браузеру.

Журнал активности

LogFile is2sql.dll ведет журнал активности в случае, если установлено правильное значение параметра реестра LogFile. При запуске is2sql проверяет, существует ли этот параметр и задано ли его значение. Затем is2sql.dll пытается открыть указанный файл, чтобы добавлять новые записи. Если файл не существует, is2sql пытаетcя создать файл с указанным именем. Если это невозможно, журнал не ведется. Если файл открывается, запись ведется в следующем формате:

TLogStruc  = record

remoteIP: String[4*4]; { IP адрес клиента }
t0,                    { начало по времени }
dt: TDateTime;         { продолжительность }
len: Integer;          { длина ответа, отправляемого клиенту }
empno: Integer;        { номер сотрудника }
lst: String[255];      { хост,алиас,имя,парольБД,форма,семейство,действие }

end;

Замечание: структура TLogStruc может быть изменена (см. isutil.pas).

Относительный путь имени файла журнала берется по отношению к задаваемому в параметре PatternPath.

В зависимости от реализации журнал может вестись в текстовом файле или в базе данных. Во втором случае параметр указывает имя таблицы в БД, которая должна иметь соответствующую структуру. Ведет журнал islog.dll. Если islog отсутствует в каталоге, задаваемом PatternPath или в каталоге, где размещен is2sql.dll, он ищется в каталогах, задаваемых системной переменной PATH. Если не удается загрузить функции из islog.dll, журналирование отключается (при этом значение параметра LogFile в реестре не сбрасывается).  

LogDLL- задает DLL журналирования (по умолчанию islog.dll). Можно указать полный путь, тогда не будет делаться поиск в других каталогах.

LogFunc- задает функцию журналирования (по умолчанию logfunc)

LogFuncStart- задает функцию, включающую журнал журналирования (по умолчанию logstartfunc)

См. также: Необходимые файлы.

DDEEnable True(0x1)- разрешить оповещение приложений используя DDE (запустить сервер DDE) topic : ddelog, logevt. В текущей версии не применяется.

Формат даты и времени

По умолчанию формат даты и времени используется тот, который установлен в Windows на машине, где запущен is2sql.dll. Если нужно изменить формат представления даты и времени, нужно установить непустые  значения параметров:

ShortDateFormat (представление дат)

LongTimeFormat (представление времени)

Также можно изменить LongDateFormat и ShortTimeFormat, но это не будет иметь значения. Для получения сведений о формате, обратитесь к справке Delphi, функции DateToStr, TimeToStr, DateTimeToStr. Для LongTimeFormat рекомендуется HH:mm:ss, для ShortDateFormat - dd.MM.yyyy

DecimalSeparator 1 символ параметра DecimalSeparator задает разделитель дробной части в числах с запятой. Если параметр отсутствует или пустой, по умолчанию берется разделитель из настроек Windows на машине, как запущено is2sql.dll. Рекомендуется установить значение "." (точка). Если параметр длиннее 1 символа, берется первый символ.

Время актуальности страницы

ExpiresMinutes=<время в минутах>, по умолчанию 0. Строковый параметр, если задано -1, то поле Expires и Last-Modified опускаются в заголовке страницы. Если задан иной параметр, или пустое значение, то в заголовок страницы помещаются два поля. Например, если ExpiresMinutes=5, то поля Last-Modified и Expires в заголовке страницы будут выглядеть примерно так:

Last-Modified: Tue, 27 Jun 2000 15:00:32 GMT

Expires: Tue, 27 Jun 2000 15:05:32 GMT

Как видно, ExpiresMinutes задал период актуальности данных равным пяти минутам. 

Рекомендуется использовать значение ExpiresMinutes=-1.

Формат простого представления валюты

CurrencySimple=True (0x1) - представлять денежный формат (fmt=money) как 100=00. Этот параметр бинарный, не строковый.

CurrencySimple=False (0x0) - представлять денежный формат (fmt=money) как в соответствии с настройками системы, то есть 100,00 р. Этот параметр бинарный, не строковый.

Замечание: Помимо денежного представления опция fmt=currency позволяет отображать формат валюты в виде сто рублей 00 коп.

Ключ шифрации

HashUniqueID Ключ шифрации HashUniqueID используется в качестве префикса для генерации шифров. По умолчанию- ';)'. Изменение этого параметра может привести к тому, что старые шифры нельзя будет использовать. Если этот параметр отсутствует в реестре, или равен пустой строке, то ключ шифрации будет ';)'

Пароль администратора

RootPwd Параметр RootPwd содержит пароль администратора. Пароль администратора позволяет при указании его в параметре dll pwd (вместо пароля клиента) получать значения пароля для клиентов в теге <#a name=sys value=_pwd_>

Примеры url

http://localhost/cgi-bin/is2sql.dll/show?dbs=ORACLE1&user=mts&key=mts&form=d:\www\cgi-bin\tst1.htm

http://localhost/cgi-bin/is2sql.dll/show?dbs=ORACLE1&user=mts&key=mts&form=fam_adr.htm&fam_adr.PFAM=ПОТАПОВ

Область действия

Настройки действуют на is2sql.dll и частично (параметры локализации= форматы времени и других данных)- на is2sqllog.dll.

 

См. также:

Необходимые файлы

Зарезервированные параметры