[SQL Server] Changer de manière permanente le premier jour de la semaine pour un utilisateur

Comdhappy

Problématique

Nous avons eu une problématique avec la langue de SQL Server, et plus particulièrement des effets de la langue sur le 1er jour de la semaine.

En effet, dans le cadre d’une requête en utilisant Entity Framework, nous faisions du regroupement par semaine. La plupart des SQL Server de développement sont installés en Français, mais pas le mien, en Anglais. Du coup lorsque j’exécutais la requête, je n’avais pas le même résultat qu’eux (le premier jour de la semaine étant le dimanche et pas le lundi comme eux, la requête me retournait la semaine regroupée à partir du dimanche).

Ce qui faisait planter au passage les tests chez moi, ce qui n’est pas très pratique…

Solution

Il existe toujours la possibilité d’exécuter des commandes T-SQL comme :

SET DATEFIRST 1

ou

SET LANGUAGE FRENCH

L’inconvénient de ces commandes est qu’elles ne fonctionnent que pour la session actuelle. J’ai essayé de le mettre dans le constructeur de notre DbContext, mais sans succès (les tests s’exécutant en parallèle, il n’a pas l’air d’avoir trop apprécié).

J’en suis venu à modifier le langage de mon utilisateur dans SQL Server. Pour le faire, deux options :

  • Via SQL Server Management Studio :
Security / Logins / clic droit sur le login utilisé par entity framework / Properties
Et dans la page de propriétés, changer la propriété « Default language » (dernière option de la page principale)
  • Via une requête T-SQL :
ALTER LOGIN sa WITH DEFAULT_LANGUAGE = french

Source :
http://www.experts-exchange.com/Database/MS-SQL-Server/Q_24751670.html