2013-09-10 2 views
0

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

Мы присваиваем свойства класса FbConnectionStringBuilder следующим кодом (режим сервера). Я опустил код, который назначает свойства для встроенного режима.

var cs = new FbConnectionStringBuilder 
{ 
    Database = databaseSessionInfo.PathAbsoluteToDatabase, 
    Charset = "UTF8", 
    Dialect = 3, 
}; 

cs.DataSource = databaseSessionInfo.Hostname; 
cs.Port = databaseSessionInfo.Port; 
cs.ServerType = (FbServerType)databaseSessionInfo.Mode; 
cs.Pooling = true; 
cs.ConnectionLifeTime = 30; 

if (databaseSessionInfo.UseCustomUserAccount) 
{ 
    cs.UserID = databaseSessionInfo.Username; 
    cs.Password = databaseSessionInfo.Password; 
} 
else 
{ 
    cs.UserID = Constants.DB_DefaultUsername; 
    cs.Password = Constants.DB_DefaultPassword; 
} 

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

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

начального каталог = "P: \ Source \ DATABASE.FDB", набор символов = UTF-8; источник данных = локальный; диалектных = 3; номер порта = 3050; тип сервера = по умолчанию, пулы = True; срок службы соединения = 30; идентификатор пользователя = USER, пароль = пример

Однако литература по Firebird строки соединения, как указано на этой странице (Firebird Connection Strings) говорить о других состав. Я могу только предположить, что класс FbConnectionStringBuilder создает строку подключения Firebird, удовлетворяющую требованиям Firebird.

  1. Соответствует ли классу FbConnectionStringBuilder имя хоста для строки подключения?
  2. Сервер Firebird работает на сервере. Я полагаю, что нет необходимости устанавливать его на клиенте?
  3. Какие библиотеки необходимо установить с клиентом для поддержки удаленного подключения к серверу?
  4. Мы делаем это правильно?

Любые советы приветствуются.

ответ

0

Отвечая на ваши вопросы:

1) Да, это будет.

2) Правильно, клиентская библиотека будет подключаться по сети.

3) Если вы используете библиотеку ADO, просто FirebirdSql.Data.FirebirdClient.dll

4) Может быть, я не знаю, если это поможет, но это, как я подключаю.

FbConnectionStringBuilder ret = new FbConnectionStringBuilder(); 
ret.DataSource = Host; 
ret.Port = Port; 
ret.Database = Database; 
ret.UserID = User; 
ret.Password = Password; 
ret.Charset = CharacterSet; 
FbConnection ret = new FbConnection(connectionString); 

Интересно, какой абсолютный путь вы предоставляете StringBuilder? Является ли это абсолютным путем сервера или каким-то сетевым диском?

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

+0

«Абсолютный путь», это путь к файлу базы данных. Наиболее распространенной конфигурацией нашего программного обеспечения является подключение к локальному файлу базы данных, этот путь указывает на этот файл. Если база данных находится на сервере, что должно содержать поле базы данных? Должен ли он просто содержать имя файла базы данных и ничего другого, потому что «хост» предоставит адрес в файл? – paligap

+0

В случае использования сервера лучше всего использовать псевдоним базы данных - см. Файл aliases.conf в корне сервера сервера Firebird. – ain

+0

Как указано выше, лучше указать псевдоним для базы данных в aliases.conf. В противном случае, если на сервере X база данных находится на C: \ data \ base.fdb, тогда вы должны указать «C: \ data \ base.fdb» в качестве пути к базе данных. –

Смежные вопросы