Сбой соединения ODBC # 3151 MS Access -> SQL Server 2008 - PullRequest
1 голос
/ 07 апреля 2011

У меня есть приложение MS Access, которое связывается с базой данных SQL Server 2008 для всех своих данных. В течение многих лет он работал нормально, когда SQL Server был установлен на Win2008 Standard 64-bit SP2 и SQL Server 2008 v10.0.4. Недавно я переместил внутреннюю базу данных SQL на новый сервер (64-разрядная версия Win2008 R2 Standard и SQL v10.50.1600). После переезда все в приложении работало нормально, как и ожидалось, никаких проблем. Однако у нас есть процесс на конец месяца, который генерирует относительно большие отчеты (300-500 страниц), в которых обнаружена проблема, которую мы обычно не видим в нашей повседневной обработке.

Мой отчет основан на сквозном запросе. Запрос выполняется практически мгновенно и выдает 8000 строк. Я могу просмотреть запрос и быстро перейти к концу RS, чтобы увидеть 8000-ю строку. Нет проблем. Если я получу отчет, основанный на этом запросе, то у меня будет 350 страниц, и я могу без проблем перемещаться по отчету по страницам. Я даже могу напечатать номер страницы и без проблем перейти на страницу 50, 100, 150 и т. Д. Обратите внимание, что в отчете не происходит обработки / кода / логики для каких-либо инициированных событий - только отображение и форматирование данных.

ЗДЕСЬ, ГДЕ ПРОБЛЕМА ПРОИСХОДИТ: Если я предварительно просмотрю отчет и попытаюсь перейти на последнюю страницу с первой страницы, он некоторое время будет сидеть и думать (точнее 38 секунд), а затем выбрасывать Ошибка # 3151 Сбой соединения ODBC с [DNS-именем].

Если я просто обновлю строку подключения в сквозном запросе, чтобы указать ее обратно на «старый» SQL Server, и запустил ту же самую вещь, она работает просто отлично. Я попытался настроить строку подключения, чтобы использовать IP-адрес вместо DNS-имени, не повезло. Это процесс, который работал годами без проблем, поэтому я знаю, что логика на стороне клиента разумна.

Есть мысли или предложения?

1 Ответ

1 голос
/ 07 апреля 2011

Ладно, это совершенно некачественное решение, и оно не совсем безопасно, так как несколько человек запускают его на одной и той же базе данных или в файле Access ... но может заставить вас работать сегодня и дать вам немного места для дыхания.Но помните - сломано исправлено, дрянное длится вечно.

Возьмите запрос из отчета и, прежде чем запустить его, сбросьте результаты в пустую временную таблицу (либо на стороне MS SQL, либо на MS Accessсторону), а затем вместо этого сделайте так, чтобы отчет не выполнялся во временной таблице.Не забудьте впоследствии очистить их, чтобы никто ни на что не полагался на эти данные.

Если они работают на стороне MS Access, но не на стороне MS SQL, то это подтвердит, что что-то сконфигурация нового сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...