Я использую PowerBuilder 9.0+ Sql Server 2000, и компьютер подключен к локальной сети через беспроводную точку доступа. При изменении состояния сети (отключение беспроводной точки доступа или отключение сетевого подключения) в приложении ПБ возникает "Ошибка базы данных 10005". Затем я отключил автоматическое закрытие и автоматическое сжатие в свойствах используемой базы данных. Ошибка по-прежнему возникает, когда я отключаю сетевое соединение, но не при отключении AP. Как избежать этой ошибки в этом состоянии? Любое предложение будет оценено. Спасибо.
Ошибка базы данных 10005 в приложении PowerBuilder
Ответы (1)
Поиск в Google этого кода ошибки предполагает, что соединение разорвано, когда генерируется это сообщение. Это могло быть:
- ошибка в пб
- ошибка в клиентском программном обеспечении SQL Server
- ошибка в программном обеспечении сервера SQL Server
- функция SQL Server (если подумать, ваш клиент теперь заходит с совершенно другого IP-адреса; позволяет другому IP-адресу «продолжать» использование существующего соединения с установленными учетными данными и разрешениями, звучит как угроза безопасности)
Вот некоторые комментарии с точки зрения ПБ. (Надеюсь, кто-то, лучше разбирающийся в SQL Server, тоже сможет присоединиться.)
Ошибка PB Поиск в Google выявил множество проблем до PB10, сообщающих об этом сообщении об ошибке; это может означать, что это была проблема с PB или с DBLib (PB10 и более поздние версии отказались от устаревшего интерфейса MSS/DBLib в пользу более новых стандартов). Версия PB, которую вы используете, довольно старая; вы можете бороться с ошибками, которые были исправлены много лет назад.
Обходные пути PB Если SQL Server (клиентское или серверное программное обеспечение) делает это с вами (преднамеренно или случайно), самое элегантное, что вы можете сделать, это сделать все вашу базу данных доступ более устойчивый, поиск ошибок, таких как 10005, повторное установление соединения и повторная попытка. Это сделало бы восстановление прозрачным, но, как я полагаю, потребовало бы много работы. (И если кто-то предусмотрительно инкапсулирует весь ваш доступ к базе данных таким образом, чтобы упростить это, он лучше меня.)
Более уродливым решением был бы пункт меню, который будет ОТКЛЮЧАТЬ и повторно ПОДКЛЮЧАТЬ к базе данных, а также давать пользователям инструкции по использованию этого при переключении сетевых сред.
Оба из них заставят вас задуматься о том, поддерживается ли что-то конкретное для сеанса базы данных (например, физические блокировки таблиц или строк, в отличие от логической блокировки, которую изначально использует DataWindow), поскольку все это будет потеряно, когда сеанс будет уничтожен.
Удачи,
Терри.