none
MS SQL 2008 Формат дат RRS feed

  • Общие обсуждения

  • Всем доброго времени суток.

    Из того, что я нашел на форуме, не смог устранить проблему.

    У меня есть готовое приложение. Везде работает нормально. Есть одна точка, в которой что-то происходит с форматом даты-времени.

    Есть сервер с MS SQL 2008. Приложение на самом сервере работает нормально, без вывода каких-либо ошибок. Но любой сетевой клиент, при попытке работы с базой данных выдает одну и ту же ошибку: "Длинный формат даты".

    Проверил все настройки какие смог найти. И в системе и в SQL. Вроде все нормально.

    Подскажите, что это может быть? Или как попытаться выяснить в чем проблема?

    27 декабря 2016 г. 8:47

Все ответы

  • "Но любой сетевой клиент, при попытке работы с базой данных выдает одну и ту же ошибку: "Длинный формат даты"."

    что за клиент, какие технологии он использует? кто разрабатывал, имеется ли исходный код? в каком виде выводится сообщение об ошибке?

    "Подскажите, что это может быть?"

    что угодно - например, баг в программе, баг в SQL Server, несовместимость программы с версией SQL Server, нарушенные настройки региональных стандартов... 

    "как попытаться выяснить в чем проблема?"

    отследить на какой операции с какой таблицей возникает ошибка (возможно, запуская программу под отладчиком), понять что не так с этой таблицей / чем она отличается от других, попытаться изменить в ней что-то и посмотреть как это повлияет на программу. 

    27 декабря 2016 г. 10:01
  • Добрый день. Спасибо, что ответили.

    Клиент разрабатывался нашей организацией. Мы ее уже установили в нескольких регионах. Везде работает нормально, кроме одного. Версия дистрибутива клиента и SQL сервера везде использовалась одна и та же. Из перечисленных Вами проблем, больше всего похоже на "Нарушение настройки региональных стандартов". Это я проверил в первую очередь. Внешне все правильно. Единственное отличие, которое я смог найти от других - работающих установок следующее: Там, где все работает, используется одна подсеть. В данном же случае, серверная часть расположена в подсети 192.168.1.2, а клиенты в 192.168.1.1. Связь между подсетями налажена. Если на сервере или на любом клиенте предоставить доступ к папке - то он работает между этими подсетями. К сожалению, ни сервер ни клиентов между подсетями переместить невозможно.

    28 декабря 2016 г. 3:37
  • Приведите фрагмент кода клиента в котором возникает проблема с точным указанием места где она возникает. Так же приведите все данные по "ошибке", например тип исключения если это исключение.


    This posting is provided "AS IS" with no warranties, and confers no rights.

    28 декабря 2016 г. 3:59
    Модератор
  • Может маршрутизатор или фаервол режет пакеты SQL Server'a. Если есть возможность, временно отключите всю фильтрацию трафика между этими сетями и посмотрите что измениться

    все же, какие технологии использует клиент? Например, приложение NET Framework или неуправляемое приложение?

    как выглядит сообщение об ошибке и какие данные выводятся помимо текста (например, какой-то код ошибки)?

    попробуйте запустить программу под отладчиком на проблемной машине и выяснить где именно возникает ошибка

    28 декабря 2016 г. 4:51
  • Добрый день. Спасибо за ответ.

    При подключении используются компоненты прямого доступа.

    Сообщение об ошибке: "Long format datetime". Больше ничего. Даже кода ошибки.

    Отключить файервол или вообще как то повлиять на сеть не могу. Кто работал с силовыми структурами, тоже мог с подобным сталкиваться. Так же, как и установить на клиента отладчик.

    Сам я не программист, а системный инженер. Обычно, в подобных обстоятельствах, мой программист создавал отладочную версию клиента с подробными логами. Но сейчас он вне доступа. А имеющийся у меня отладочный клиент ничего по данному вопросу не выдает.

    "Приведите фрагмент кода клиента, в котором возникает проблема с точным указанием места где она возникает." Из-за отсутствия программиста, сделать этого не могу. Знаю только то, что в программе создаются DataSet формата "Select * from table". Программа написана в среде Embarcadero.

    29 декабря 2016 г. 7:15
  • Ну подождем пока не объявится программист, не создаст отладочную версию (или не починит то что есть чтоб хотя бы ошибки нормально показывались) и вы сможете предоставить код, значения переменных, полные данные по ошибке (исключению) и так далее.


    This posting is provided "AS IS" with no warranties, and confers no rights.

    29 декабря 2016 г. 17:25
    Модератор
  • "или не починит то что есть чтоб хотя бы ошибки нормально показывались"

    Хорошее замечание. Поскольку это неуправляемое приложение, обработка ошибок производится путем проверки кодов возврата. Если его не проверить, программа продолжит выполнение, и упадет на первой строчке где обработка ошибок таки сделана.

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

    Почему не может соединиться? Думаю проблема все-таки в каких-то сетевых настройках: на клиенте, сервере, или маршрутизаторе. Может, в конфигурации BDE. Работает в одной подсети, но не работает между подсетями - уж не Named Pipes ли он пытается использовать?

    29 декабря 2016 г. 19:26
  • Это управляемое приложение, иначе не было бы DataSet. Да и Delphi поддерживает CLR очень давно. Даже в неуправляемых приложениях есть исключения, другое дело что Win32 API их обычно не используют.

    Ну а что именно происходит мы можем только догадываться.


    This posting is provided "AS IS" with no warranties, and confers no rights.

    29 декабря 2016 г. 20:44
    Модератор
  • Всем добрый день. И спасибо за обсуждение.

    Ларчик просто открывался.

    Причина оказалась в драйвере SQL Server Native Client.

    Я никак не мог подумать, что в последней версии дистрибутива "случайно" мог оказаться данный драйвер не от SQL 2008 а от SQL 2000.

    Потому и ошибка была про "длинный" формат даты.

    Вернется  с отпуска... устрою ему харихере :)

    6 января 2017 г. 10:01