Описания полей строки подключения Informix и используемые значения - PullRequest
0 голосов
/ 20 марта 2019

Я пишу тестовое приложение в .net, используя c# для подключения к базе данных IBM Informix.

Пока что я установил Informix client sdk v4.10 на моей машине. После этого я написал фрагмент кода со ссылкой здесь и здесь . В моем коде у меня есть ссылка на IBM.Data.Informix.dll, которая указана из установленного пути к папке Informix client sdk's bin netf40.

Когда я запускаю тестовое приложение, при попытке открыть соединение я получаю ошибку ниже,

ОШИБКА [HY000] [Поставщик Informix .NET] [Informix] Произошла системная ошибка в функции сети.

Я предполагаю, что эта ошибка связана с тем, что поле строки подключения не было предоставлено должным образом, я сослался на https://www.connectionstrings.com/informix/ и попытался использовать строку подключения, такую ​​как informix with ODBC driver and informix .net provider, упомянутую в приведенной выше ссылке, но безрезультатно, у меня также возникли проблемы с пониманием откуда взять значения для каждой строки строки подключения, например protocol, port, host-name , server-name and service name.

Чтобы найти значения вышеупомянутых полей, я попытался найти ключ SQLHOSTS в записях реестра под HKEY_LOCAL_MACHINE\SOFTWARE\INFORMIX\, к сожалению, его там не было! а также попытался запустить setnet32.exe из папки bin клиента SDK, и я мог видеть ниже экран только с protocol информация !.

enter image description here

Было бы очень полезно, если бы кто-нибудь мог мне помочь.

1 Ответ

1 голос
/ 21 марта 2019

Это очень, очень сложный вопрос, на который нужно ответить вслепую. : -)

setnet32.exe не будет знать информацию, которую вы ищете, вам нужно предоставить эту информацию setnet32.exe.

Первый вопрос, который нужно задать: ваша база данных работает на Unix или Linux? Если это так, то войдите на сервер базы данных как пользователь «informix» и запустите команду

cat $INFORMIXDIR/etc/sqlhosts

Если вы работаете в Windows, войдите на сервер Windows и из командной строки запустите

TYPE %INFORMIXDIR%\etc\sqlhosts

Это должно дать вам файл с потенциально кучей информации, вы ищете строки, которые не являются комментариями и имеют как минимум 4 столбца. Это мой файл sqlhosts на Docker, который я тестирую:

$ cat $INFORMIXDIR/etc/sqlhosts
############################################################
### DO NOT MODIFY THIS COMMENT SECTION
### HOST NAME = 7edf3045c382
############################################################
informix        onsoctcp        7edf3045c382         9088
informix_dr     drsoctcp        7edf3045c382         9089

Последние две строки являются внутренностями файла.

  • Столбец 1 - это имя INFORMIXSERVER или псевдоним (IBM Informix Server в setnet32.exe)
  • Столбец 2 - это имя протокола (Protocolname в setnet32.exe)
  • Столбец 3 - это имя хоста (HostName в setnet32.exe)
  • Столбец 4 - это номер порта или имя (имя службы в setnet32.exe)

Если в столбце 4 указано имя и вы используете Unix или Linux, найдите имя порта в / etc / services на вашем сервере Unix или Linux. Если вы работаете в Windows, он будет находиться в% windir% \ system32 \ drivers \ etc \ services (или аналогичных).

Получив это, вы можете запустить команду

dbaccess

Выберите опцию База данных, затем опцию Выбрать. Это должно представить вам список баз данных, примерно как:

SELECT DATABASE >>
Select a database with the Arrow Keys, or enter a name, then press Return.

------------------------------------------------ Press CTRL-W for Help --------

 backbone@informix   wallet@informix

 cust@informix

 retail@informix

 sports@informix

 sysadmin@informix

 sysha@informix

 sysmaster@informix

 sysuser@informix

 sysutils@informix

Как правило, базы данных, называемые "sys", зарезервированы для администрирования Informix и могут не являться реальными базами данных, хотя вы можете запрашивать их с помощью SELECT, вы, вероятно, не сможете (и действительно не должны !!) вставлять , ОБНОВИТЬ или УДАЛИТЬ или использовать DDL.

В моем списке баз данных выше все базы данных sys * являются "базами данных" администрирования Informix. Имена баз данных показаны в моем примере в формате «databasename @ informixservername».

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

...