MS-SQL / ColdFusion: загадочная ошибка базы данных: объект был закрыт - PullRequest
10 голосов
/ 02 ноября 2010

Я использую ColdFusion с Microsoft SQL Server 2005 и иногда получаю эту ошибку:

"[Macromedia] [Драйвер JDBC SQLServer] Объект был закрыт."

Трассировканеизменно приводит к SQL-запросу, как и следовало ожидать, даже простые команды SELECT без JOIN, входных параметров или чего-либо необычного.

Единственное решение, о котором я слышал до сих пор, - это перезапустить "службу"., который я могу только представить, относится к службе SQL Server.Я попытался перезапустить и SQL Server, и службу ColdFusion, но это все еще происходит в случайное время.

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

Когда это происходит, это происходит постоянно в течение нескольких минут, затем уходит и может вернуться через несколько секунд или минут.Это начало происходить, когда я разрабатывал часть своего приложения на JavaScript, которая не должна иметь ничего общего ни с кодом ColdFusion, ни с командами SQL.

Пока что мой поиск в Интернете был бесплодным.

Любая помощь приветствуется.

Ответы [ 6 ]

10 голосов
/ 26 января 2012

Это старый, но я просто наткнулся на это и нашел способ сделать это без перезапуска CF.

В Администраторе ColdFusion перейдите к своим источникам данных и отредактируйте тот, который вызывает вашу проблему.Внесите в него изменения, например отметьте неважное поле и нажмите «Отправить».

Это перенастроит соединение и позволит ему работать.Вернитесь и снимите флажок (если вы не хотите, чтобы он был отмечен галочкой).

Например.Я отключил «Включить символы высокого ASCII ...», нажав «Отправить», и источник данных сработал.Затем я вернулся, проверил его и снова отправил изменения.

Нет перезагрузки!Идеально, если это производственная коробка.

2 голосов
/ 15 мая 2012

Мы столкнулись с этой проблемой с CF9, и перезапуск службы не помог. Мы удалили и воссоздали нарушающий DSN в конфигурации CF, и это решило проблему. Так что, если другие решения не работают, попробуйте.

0 голосов
/ 30 ноября 2010

Оказывается, это просто происходит, когда сервер перегружен. Похоже, что нет другого выхода, кроме перезапуска и / или удаления нагрузки с сервера.

Спасибо всем, кто ответил, все равно!

0 голосов
/ 02 ноября 2010

В sQL 2K была ошибка, и я думаю, что 2K5 такая, что система будет думать, что она находится в режиме выключения, несмотря на то, что никогда не просили закрыть службу.IIRC, он выбросил ошибку, похожую на вашу.Был патч для этого, выпущенный моим MS, хотя я, кажется, вспоминаю, что это была отдельная загрузка вместо части MS Update.

Извините, что был настолько расплывчатым, но прошло некоторое время, так как я решил эту проблему,Надеюсь, это поможет вам начать.

0 голосов
/ 02 ноября 2010

Как и большинство программ, которые плохо себя ведут, первое, что я смотрю, это драйверы. Вы можете быть уверены, что используете последние версии драйверов Microsoft JDBC. Я знаю, что они улучшили производительность своих последних драйверов, и это также может решить проблему, с которой вы столкнулись.

Если вы используете драйверы, поставляемые с ColdFusion, то абсолютно стоит обновить.

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=a737000d-68d0-4531-b65d-da0f2a735707&displaylang=en

Имейте в виду, что если вы выполняете обновление, если у вас есть операторы INSERT, которые используют SCOPE_IDENTITY () для возврата идентификатора вновь вставленной строки, вам необходимо выполнить команду SET NOCOUNT ON; в верхней части каждого оператора INSERT, чтобы SQL Server не возвращал количество вставленных строк вместо идентификатора вставленной строки.

Dan

0 голосов
/ 02 ноября 2010

Мой инстинкт инстинкта заключается в том, что вам нужно смотреть за пределы своего кода и работать с администратором баз данных, чтобы исследовать стабильность самого сервера базы данных. Похоже, служба SQL Server зависает или перестает отвечать.

...