Сообщение об ошибке «Недопустимый аргумент» в методе IBM.Data.DB2.DB2Connection .open - PullRequest
0 голосов
/ 24 февраля 2012

Итак, я получаю фантастически описательное сообщение об ошибке «Недопустимый аргумент» при попытке подключиться к базе данных DB2. Я могу успешно подключиться к нему, используя SQUirrel (и JDBC), используя драйвер JTopen JDBC со строкой подключения "jdbc: as400: // server; naming = system; errors = full; prompt = no"

Поскольку соединение jdbc работает, я знаю проблему с соединителем Db2.net. Но сообщение об ошибке «Неверный аргумент» сводит на нет все усилия по диагностике, с чего начать.

string connStr = "server=server;uid=user;pwd=password";
using(DB2Connection conn=new DB2Connection(connStr))
{
  conn.Open();
  //System.ArgumentException: Invalid argument
  //   at IBM.Data.DB2.DB2ConnPool.ReplaceConnectionStringParms(DB2Connection connection, String szValue, DB2ConnSettings& pSettings, DB2ConnSettingsInternal& pSettingsInternal, Boolean bAttach)
  //   at IBM.Data.DB2.DB2Connection.set_ConnectionString(String value)
  //   at IBM.Data.DB2.DB2Connection..ctor(String connectionString)
  //   at AuroraDAL_ConnectionTests.DB2ConnectionTests.try1() in C:\Projects\...\DB2ConnectionTests.cs:line 31
  //   at AuroraDAL_ConnectionTests.DB2ConnectionTests.Execute() in C:\Projects\...\DB2ConnectionTests.cs:line 19
  //   at AuroraDAL_ConnectionTests.Program.Main(String[] args) in C:\Projects\...\Program.cs:line 20
}

Используя testconn20.exe в каталоге программных файлов коннектора DB2.net, я попробовал несколько вариантов, взяв первую приведенную выше строку соединения, чтобы затем заменить сокращенные ключи на их длинные значения (uid изменено на id пользователя, pwd изменено пароль и т. д.)

testconn20 server=server;database=database;user id=userid;password=password

результат того, что в конечном итоге возвращает то же исключение "Недопустимый аргумент":

Step 1: Printing version info
        .NET Framework version: 2.0.50727.5448
        64-bit
        DB2 .NET provider version: 9.0.0.2
        Capability bits: ALLDEFINED
        Build: 20090522
        Factory for invairant name IBM.Data.DB2 verified
        Elapsed: 0.089982

Step 2: Connecting using "server=-------;database=------;userid=------;password=------"
Invalid Argument Exception:
        Connection string should be of the type 'Database=db2db; Server=mymachine:60000; User ID=db2user; Password=xxxxxxxx


Test failed.

У кого-нибудь с некоторыми DB2 и C # есть какие-либо предложения относительно того, что я делаю неправильно? Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 24 февраля 2012

У меня нет опыта работы с DB2, но, внимательно изучая ваш код, я заметил, что вы не указываете Database = и PortNumber in Server = вашей строки соединения

0 голосов
/ 06 марта 2012

Похоже, что сайт IBM не направляет вас к последним и лучшим битам их соединителя данных .net.Проблема была в основном решена путем тщательного поиска обновлений и поиска их «Fix Central».Здесь они хранят обновления и исправления.Однако получить правильный пакет было нелегко.

...