Problème de @@DateFirst sur 40aine de serveurs

Problème de @@DateFirst sur 40aine de serveurs - SQL/NoSQL - Programmation

Marsh Posté le 17-01-2007 à 15:34:48    

Salut à tous,
 
je travaille sur des serveurs ms sql serveur 2000
voilà, j'ai un gros souci à propos dune requete lancée dans un lot DTS sur une 40aine de serveurs tous apparement :
 
Microsoft SQL Server 2000
8.00.765 (Intel X86) Feb 7 2003 17:33:51 Copyright (c) 1988-2003 Microsoft Corporation Developer Edition on Windows NT 5.2 (Build 3790: ) INSTANCE PAR DEFAUT
 
pour faire court, la requete se sert de la fonction datepart()
et ne renvoie pas la meme date selon les serveurs (un jour de décalage)
je sais que ceci a un rapport avec la valeur entrée dans @@DateFirst
qui n'est pas la meme sur tous mes serveur, mais cela peut-il etre aussi dépendant du serveur à partir duquel je lance la requete ?
 
ce que je cherche à savoir c'est, si je décide de mettre cette variable identique sur tous mes serveurs, donc mon "set ...." juste avant l'execution de ma requete "
cela sera-il définitivement ancré ou, lors du redémarrage par exemple, la variable reprendrait-elle sa valeur par default , ou lors du relancement du lots DTS ou autre chose? ou alors il faut la redéfinir pour de bon, hors de la requete?
 
le hic etant que je n'ai aucune idée si dautre execution de lot, et autre flux utilisent la valeur dorigine de @@DateFirst, au risque si oui de comprometre leur resultats
 
avez-vous une idée ? merci d'avance !!
 
NeRi

Reply

Marsh Posté le 17-01-2007 à 15:34:48   

Reply

Marsh Posté le 17-01-2007 à 16:15:46    

tu stockes la valeur d'origine de @@datefirst dans une variable, tu set datefirst comme ça t'arrange puis après tu remets la valeur initiale ?


Message édité par pikti le 17-01-2007 à 16:16:03
Reply

Marsh Posté le 17-01-2007 à 17:21:10    

je viens de trouver 1 solution, afin de ne rien changer dans la config des serveur, c'est dans la requete sql meme que je teste (avec "case when(......) " ) si @@Datefirst est a 1 ..
 
si oui je laisse tel quel la requete, sinon si c'est à 7, jenleve 1 jour au resultat, c tout bébète finalement :-p merci quand même

Reply

Marsh Posté le 17-01-2007 à 22:55:31    

je parlais bien sûr dans la requête...

Reply

Marsh Posté le 22-01-2007 à 15:39:53    

Pour information :
- Si tu utilises l'analyseur de requêtes SQL de entreprise manager pour faire tes requêtes, alors le serveur utilise les paramètres de ton client pour gérer la locale.
- Si tu utilise isql ou osql, faut vérifier dans la doc, il me semble que c'est justement la différence entre les deux.
 
- Dans tous les cas, SQL Server prends toujours par défaut la locale telle que spécifiée dans les paramètrs régionaux de Windows. D'où l'intérêt d'avoir une politique commune pour tous les serveurs. Dans une entreprise Franco-Française, alors on choisi fr-fr, et à défaut, en-us. Dans les deux cas une fois la politique mise en place, on doit s'y conformer pour l'ensemble de l'informatique interne. Les soucis de gestion de dates et nombre décimaux c'est la première cause de soucis de déploiement d'application. C'est donc extrêment critique, d'autant que c'est la plaie à modifier par la suite.
 
Consulte la doc SQL Server avec de changer de façon définitive cette info dans SQL Server, car une fois une base crée avec une certainne locale, elle va conserver cette locale à vie même si celle du serveur change. Il faudra changer pour chaque base de chaque serveur.
 
A noter qu'on a la même chose avec IIS par exemple.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed