Шлюз баз данных

Шлюз баз данных среды это TCP/IP сервер, взаимодействующий с базами посредством Microsoft.Net Framework. Шлюз может располагаться на удалённом или на том же компьютере, что и IWS приложение. Расположение шлюза определяется среди дополнительных настроек как хост шлюза (см. диалог Настройка баз данных). Если шлюз планируется разместить на локальном компьютере, в поле «Хост» (Host name) следует указать 127.0.0.1. При этом запуск и остановка работы шлюза не требует ручного вмешательства, поскольку это происходит автоматически, посредством IWS задач. Однако если шлюз находится на удалённой машине, его запуск осуществляется вручную. Для этого, необходимо скопировать файлы StADOSvr.exe и StADOSvr.ini из папки \Bin установочной директории среды на удалённый компьютер, и затем выполнить программу файла StADOSvr.exe.


Запускать шлюз для различных TCP/IP портов можно несколько раз. По умолчанию используется порт 3997, но его можно изменить, выполнив команду, например StADOSvr 1111, в командной строке. Иконка работающего шлюза находится в лотке панели инструментов.


При нажатии правой кнопкой на иконке появляется меню:



Опция «Скрыть» (Hide) отвечает за присутствие окна шлюза на рабочем столе. При этом даже если окно шлюза закрыто, сам шлюз будет не переставая работать, после его запуска. Если опцию «Скрыть» дезактивировать, появится окно:



Сообщение о любой неуспешной операции по работе с базой данных появится как в этом окне, так и в протоколе событий. Все сообщения генерируются обработчиком исключений поставщика ADO.NET. Для получения более подробной информации о сообщениях ошибок, возникших при работе шлюза, см. Проблемы с базами данных.


Параметры вывода сообщений в окне можно настроить с помощью меню «Протокол» (Log):








Дополнительные настройки


В файле StADoSvr.ini находятся дополнительные настройки шлюза баз данных IWS. В случае возникновения проблем взаимодействие с определённой базой данных, иногда требуется изменить некоторые настройки или добавить новых поставщиков в файл. Параметры файла:


Раздел файла

Параметр

Принимаемые значения

Описание

Providers (поставщики)

SaveMSec

1: запрещено

2: разрешено

3:раздельные столбцы

Применяемый по умолчанию метод сохранения миллисекунд временной метки. Может быть изменен в диалоге дополнительных настроек баз данных.

Assembly

Любая строка, содержащая сборку .Net Framework

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

ConnectionClass

Любой класс соединения с базой, находящийся в сборке

Один из составляющих интерфейса System.Data.IdbConnection

DateAdapterClass

Любой находящийся в сборке класс адаптера данных.

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

CommandBuilderClass

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

Класс построения команд также отвечает за операции обновления базы. Должен быть совместим с классом соединения с базой

Provider

Имя поставщика

Среди параметров строки соединения с базой находится имя поставщика. Шлюз ADO среды сравнивает это значение строки соединения с аналогичным значением, заложенным для каждого поставщика, и выбирает подходящий.

ColumnDelimiterPrefix

Любой символ или группа символов

Символ помещается перед именами столбцов в SQL выражениях

ColumnDelimiterSuffix

Любой символ или группа символов

Символ помещается после имен столбцов в SQL выражениях

TableDelimiterPrefix

Любой символ или группа символов

Символ помещается перед именами таблиц в SQL выражениях

TableDelimiterSuffix

Любой символ или группа символов

Символ помещается после имен таблиц в SQL выражениях

ValueString

Любая строка

Строка отвечает за восприятие константных значений в SQL выражениях. К примеру, для SQL баз данных Microsoft используется @Value.

ValueStringPrefix

Любая строка

Строка содержит приставку для значений. Например, в Oracle значения требуют наличия приставки. SQL выражения используют приставки, как идентификаторы значений. Параметры строки соединения в приставке не нуждаются

ValueAddNumber

0 или 1

Отвечает за присутствие порядкового номера, добавляемого к ValueString. Для SQL баз данных Microsoft это значение должно быть равным 1, поскольку параметры идентифицируются последовательностью @Value1, @Value2, … @ValueN

BoolType

Любая строка, содержащая допустимый тип данных для базы

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

IntegerType

Любая строка, содержащая допустимый тип данных для базы

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

RealType

Любая строка, содержащая допустимый тип данных для базы

При попытке создания столбцов хранения вещественных значений, используется записанный в эту строку тип данных. Рекомендуется удостовериться, что содержимое строки позволяет сохранять 64-битные вещественные значения.

StringType

Любая строка, содержащая допустимый тип данных для базы

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

TimeStampType

Любая строка, содержащая допустимый тип данных для базы

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

EnableTop

0 или 1

Если значение параметра равно 1, то SQL выражения будут содержать условие TOP, ограничивающее количество выбираемых по запросу строк.

SingleConnection

0 или 1

Если параметр равен 1, то ADO будет поддерживать только одно соединение с базой вне зависимости от того, сколько обращаются к ней задач или компьютеров. Синхронизация задач проводится посредством шлюза, а их одновременной выполнение становится невозможным.

Communication (связь)

TimeOut

2

Таймаут между очередными операциями вставки и обновления

TimeOut

5

Таймаут между очередными операциями соединения и обновления запросов

TimeOut

60

Таймаут между синхронизациями

Connection (соединение)

RegBufSize

128

размер общего буфера, используемый API для баз данных.


Все параметры разделены на три секции: поставщики, связь и соединение. Все параметры, отвечающие за настройку работы поставщика баз данных, расположены в соответствующей секции, и т.д. Используемые по умолчанию значения описываются в самом начале файла и обладают приставкой “Default”:


[Providers]

DefaultSaveMSec=3

DefaultAssembly=System.Data

DefaultConnectionClass=System.Data.OleDb.OleDbConnection

DefaultDataAdapterClass=System.Data.OleDb.OleDbDataAdapter

DefaultCommandBuilderClass=System.Data.OleDb.OleDbCommandBuilder

DefaultValueString=@Value

DefaultValueAddNumber=1 DefaultBoolType=INTEGER

DefaultIntegerType=INTEGER DefaultRealType=REAL

DefaultStringType=VARCHAR(255) DefaultTimeStampType=DATETIME

DefaultSingleConnection=0


Существует параметр, который отвечает за количество перечисленных в файле поставщиков:


Count=5


Описание поставщика начинается ключевым словом “Provider” и его порядковым номером. При подключении к базе данных, каждый параметр Provider строки соединения сравниваются с идентификаторами поставщиков с целью выбора подходящего из списка. Если совпадения по идентификатору поставщика не произошло, то используется тот поставщик, который установлен по умолчанию. Помимо идентификатора каждому поставщику задаётся собственный набор значений остальных параметров. И опять таки, если при соединении с базой данных совпадение параметра обнаружено не было, используется значения по умолчанию. Рассмотрим пример для семи поставщиков:


Count=7


Provider1=MICROSOFT.JET.OLEDB

SaveMSec1=3

ColumnDelimiterPrefix1=[

ColumnDelimiterSuffix1=]

SingleConnection1=1


Provider2=SQLOLEDB

ConnectionClass2=System.Data.SqlClient.SqlConnection

DataAdapterClass2=System.Data.SqlClient.SqlDataAdapter

CommandBuilderClass2=System.Data.SqlClient.SqlCommandBuilder

ColumnDelimiterPrefix2=[

ColumnDelimiterSuffix2=]

TableDelimiterPrefix2=[

TableDelimiterSuffix2=]

RealType2=FLOAT


Provider3=MSDASQL

ConnectionClass3=System.Data.Odbc.OdbcConnection

DataAdapterClass3=System.Data.Odbc.OdbcDataAdapter

CommandBuilderClass3=System.Data.Odbc.OdbcCommandBuilder

ValueString3=?

ValueAddNumber3=0

StringType3=VARCHAR(128)

EnableTop3=0


Provider4=ORAOLEDB

Assembly4=System.Data.OracleClient

ConnectionClass4=System.Data.OracleClient.OracleConnection

DataAdapterClass4=System.Data.OracleClient.OracleDataAdapter

CommandBuilderClass4=System.Data.OracleClient.OracleCommandBuilder

ValueString4=Value

ValueAddNumber4=1

ValueStringPrefix4=:

BoolType4=Number(1)

IntegerType4=Number(10)

RealType4=Number

StringType4=VARCHAR(255)

TimeStampType4=TIMESTAMP(0)

EnableTop4=0


Provider5=ASAPROV

Assembly5=iAnywhere.Data.AsaClient

ConnectionClass5=iAnywhere.Data.AsaClient.AsaConnection

DataAdapterClass5=iAnywhere.Data.AsaClient.AsaDataAdapter

CommandBuilderClass5=iAnywhere.Data.AsaClient.AsaCommandBuilder

ValueString5=?

ValueAddNumber5=0

ColumnDelimiterPrefix5=[

ColumnDelimiterSuffix5=]

TableDelimiterPrefix5=[

TableDelimiterSuffix5=]


Provider6=MYSQLPROV

Assembly6=ByteFX.MySqlClient

ConnectionClass6=ByteFX.Data.MySqlClient.MySqlConnection

DataAdapterClass6=ByteFX.Data.MySqlClient.MySqlDataAdapter

CommandBuilderClass6=ByteFX.Data.MySqlClient.MySqlCommandBuilder

ValueString6=@Value

ValueAddNumber6=1

StringType6=VARCHAR(128)

EnableTop6=0


Provider7=MSDAORA

Assembly7=System.Data.OracleClient

ConnectionClass7=System.Data.OracleClient.OracleConnection

DataAdapterClass7=System.Data.OracleClient.OracleDataAdapter

CommandBuilderClass7=System.Data.OracleClient.OracleCommandBuilder ValueString7=Value

ValueAddNumber7=1

ValueStringPrefix7=:

BoolType7=Number(1)

IntegerType7=Number(10)

RealType7=Number

StringType7=VARCHAR(255)

TimeStampType7=TIMESTAMP(0)

EnableTop7=0


Created with the Freeware Edition of HelpNDoc: Easily create HTML Help documents