15.05.2012, 19:37 | #1 |
Участник
|
Ошибка с подключением через ODBC + глюк с работой через connection
Ситуация такая: на работающем приложении в 3.0 для одной обработки используется подключение через ODBC к своей же базе. По словам разработчика, заставить эту обработку работать через new connection() не вышло, а через ODBC всё ок.
Сейчас переношу это на DAX 2009, ни так ни так не выходит. MS SQL 2008 R2 Подключение ODBC создаётся так: X++: static void testODBCConnection(Args _args) { ODBCConnection con; LoginProperty LP = new LoginProperty(); ; LP.setServer("Server"); LP.setDatabase("DB"); LP.setOther(strfmt("Username=%1;Password=%2", "user", "pwd")); con = new ODBCConnection(LP); } Пароль и пользователь проверены. Вопрос с открытым паролем в коде пока что на втором месте после "заставить это работать". На клиентских машинах DSN создавать не хочется. На сервере DSN имеется, тестовое соединение проходит на ура, но LP.setDSN("DSN") даёт ту же картину. Если я правильно понимаю, DSN можно вообще не иметь, он создаётся на время подключения. Но вообще, конечно, через ODBC к своей базе коннектиться не комильфо, поэтому пытаюсь подключиться через new connection(), но тут своя засада. X++: stm = con.createStatement(); cmd = "begin tran"; new SqlStatementExecutePermission(cmd).assert(); stm.executeUpdate(cmd); CodeAccessPermission::revertAssert(); cmd = strfmt("insert LocksTable (purchid, transdate, blocked, dataareaid, recid) " + "values ('%1',getdate(),1,'%2', convert(int,@@dbts))", purchid, curext()); new SqlStatementExecutePermission(cmd).assert(); stm.executeUpdate(cmd); CodeAccessPermission::revertAssert(); /* обработка */ cmd = "rollback tran"; new SqlStatementExecutePermission(cmd).assert(); stm.executeUpdate(cmd); // <-- здесь вываливается ошибка SQL CodeAccessPermission::revertAssert(); Есть идеи, что это может быть? Последний раз редактировалось Corel; 15.05.2012 в 19:40. |
|
|
За это сообщение автора поблагодарили: NataLee (1). |