Sysutcdatetime в Sql Server 2008 R2, не рекомендуется ли? - PullRequest
0 голосов
/ 14 июля 2010

Я разработал приложение Asp.net, которое использует платформу Entity для подключения к базе данных Sql Server 2008 (не R2).
Клиент запускает сценарий db для базы данных Sql server 2008 R2 , и он успешно выполнен.
Когда приложение выполняется, выдается исключение:
«Sysutcdatetime» не распознается как встроенная функция.
После проверки трассировки стека оказалось, что исключение выдается при выполнении оператора инфраструктуры LINQ to Entity. Заявление примерно так:

var item = Entities.News.FirstOrDefault(n => n.ExpirationDate > DateTime.UtcNow);

Насколько я понимаю, сгенерированный SQL-оператор из Entity Framework использует функцию Sysutcdatetime для получения текущей даты и времени UTC.
Я знаю, что одно из решений заключается в том, чтобы сохранить дату в переменной, а затем передать ее в лямбда-выражение, таким образом, дата и время UTC будут определены на уровне приложения и жестко закодированы в сгенерированном выражении SQL.

var currentUtcDate = DateTime.UtcNow;
var item = Entities.News.FirstOrDefault(n => n.ExpirationDate > currentUtcDate);

Но мне любопытно, почему функция Sysutcdatetime существует в Sql server 2008, а не в Sql server 2008 R2?

Ответы [ 2 ]

2 голосов
/ 14 июля 2010
select Sysutcdatetime()
select @@VERSION

Просто запустил это на моем SQL Server и получил их как результат

2010-07-14 19: 36: 40.5738642

Microsoft SQL Server 2008 R2 (окончательная первоначальная версия) - 10.50.1600.1 (Intel X86) 2 апреля 2010 15:53:02 Copyright (c) Microsoft Корпорация Developer Edition на Windows NT 5.1 (сборка 2600: Пакет обновления 3)

Насколько я могу судить, Sysutcdatetime все еще существует в SQL Server 2008 R2

0 голосов
/ 14 июля 2010

Мысль:

  • Каков уровень совместимости базы данных?
  • Вы на 100% это SQL Server 2008 R2 или SQL Server 2008?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...