Я озадачен ошибкой, которая вчера неожиданно появилась на моем производственном сервере.
Я делаю запрос LINQ2SQL, например:
var mis = from m in dtcx.valori
join p in dtcx.TEPARAMs on m.PARAMCD equals p.PARAMCD
where
blah blah blah
select new
{
dataRilevazione = m.dataRilevazione,
id =m.data>=new DateTime(2010,02,26)&&m.X==3&&m.Y==69?100: m.id,
blah blha
};
это преобразуется в запрос SQL, который имеет условие:
N'SELECT [t0].[dataRilevazione],
(CASE
WHEN ([t0].[data] >= @p6) AND ([t0].[X] = @p7) AND ([t0].[Y] = @p8) THEN @p9
с
@p6='2010-02-26 00:00:00'
это работало как очарование целую вечность, так как два дня назад, когда он перестал работать, сказал, что произошел неправильный переход от varchar к datetime.
На самом деле проблема в том, что 2010-02-26 00:00:00 больше не преобразуется в дату! если я попытаюсь
печать
convert(datetime,'2010-02-26 00:00:00' )
Я получаю ту же ошибку, которая исчезает при использовании
convert(datetime,'2010-02-26 00:00:00', datetime)
поскольку, когда все работало, я не менял ни пользователя, ни его локаль, ни все, что мне известно.
что я могу сделать?
спасибо
UPDATE:
При профилировании SQL Server, linq 2 sql, кажется, устанавливает правильный язык:
-- network protocol: TCP/IP
set quoted_identifier on
set arithabort off
set numeric_roundabort off
set ansi_warnings on
set ansi_padding on
set ansi_nulls on
set concat_null_yields_null on
set cursor_close_on_commit off
set implicit_transactions off
set language us_english
set dateformat mdy
set datefirst 7
set transaction isolation level read committed
так что язык установлен на us_english! Почему преобразование по-прежнему не удается, мне не подходит!
Любая идея ценится ...