2010-07-14 10 views
0

J'ai développé une application Asp.net qui utilise Entity Framework pour se connecter à une base de données Sql Server 2008 (et non R2).
Le client exécute le script db sur une base de données SQL Server R2 et il a été exécuté avec succès.
Lorsque l'application est exécutée, une exception est levée:
'Sysutcdatetime' n'est pas reconnu comme fonction intégrée.
Après avoir vérifié la trace de la pile, il est apparu que l'exception est levée lorsqu'une instruction de structure LINQ to Entity est exécutée. La déclaration est quelque chose comme ceci:Sysutcdatetime dans Sql Server 2008 R2, est-il obsolète?

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

Pour autant que je comprends, l'instruction SQL généré par Entity Framework utilise la fonction Sysutcdatetime pour obtenir la date UTC et l'heure actuelle.
Je sais que l'une des solutions consiste à stocker la date dans une variable plutôt que de la passer à l'expression lambda, ainsi la date et l'heure UTC seront déterminées au niveau de l'application et codées en dur dans l'instruction sql générée.

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

Mais je suis curieux de savoir pourquoi la fonction Sysutcdatetime existe dans le serveur SQL Server 2008 et non dans le serveur SQL Server 2008 R2?

Répondre

2
select Sysutcdatetime() 
select @@VERSION 

juste couru que sur mon SQL Server et a obtenu ces résultats que les

2010-07-14 19: 36: 40,5738642

Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (Intel X86) 2 avril 2010 15:53:02 Copyright (c) Microsoft Corporation Developer Edition sur Windows NT 5.1 (Build 2600: service pack 3)

Pour autant que je peux dire Sysutcdatetime existe toujours sur SQL Server 2008 R2

+0

J'ai vérifié en utilisant Sql server management studio sur System Functions -> Fonctions de date et d'heure et il n'existe pas. Je n'ai pas accès maintenant pour vérifier à nouveau en utilisant l'instruction sql. –

0

Pensées:

  • Quelle est la databa se niveau de compatibilité?
  • Êtes-vous 100% SQL Server 2008 R2 ou SQL Server 2008?
+0

pas sûr du niveau de compatibilité db mais je suis assez sûr qu'il est SQL Server 2008 R2 –

+1

Lorsque vous avez une chance courez @@ VERSION et voir – Pieces