OVH Cloud OVH Cloud

[bcp] marche en dev marche pas en Prod !

5 réponses
Avatar
404 found
bonjour,

j'ai 2 serveurs, un servuer de développement et un serveur de production
(les 2 serveurs ne sont pas sur les mêmes machine et à priori ayant la même
version de sql Server 2000)

sur mon serveur de dev, j'essai une commande bcp trés basique et trés simple
qui importe des données dans une table, ok tout marche bien

Sur le serveur de prod, (j'ai envoyé la structure de la base que j'ai en dev
pour le servuer de prod sous forme de fichier dat), exactement la même
commande avec exactement le même fichier ne marche pas et affiche des erreurs
sur le format de date !! (j'ai bien dis qu'on avait la même structure)

l'erreur :
"[ODBC SQL SERVER driver]Format de date non valide"

des idées ?

En vous remerciant !

5 réponses

Avatar
404 found
Question subsidiaire :

Est il possible de récupérer le rapport d'exécution de la commande bcp sous
format txt ?

"404 found" a écrit :

bonjour,

j'ai 2 serveurs, un servuer de développement et un serveur de production
(les 2 serveurs ne sont pas sur les mêmes machine et à priori ayant la même
version de sql Server 2000)

sur mon serveur de dev, j'essai une commande bcp trés basique et trés simple
qui importe des données dans une table, ok tout marche bien

Sur le serveur de prod, (j'ai envoyé la structure de la base que j'ai en dev
pour le servuer de prod sous forme de fichier dat), exactement la même
commande avec exactement le même fichier ne marche pas et affiche des erreurs
sur le format de date !! (j'ai bien dis qu'on avait la même structure)

l'erreur :
"[ODBC SQL SERVER driver]Format de date non valide"

des idées ?

En vous remerciant !


Avatar
BB
404 found wrote:
Sur le serveur de prod, (j'ai envoyé la structure de la base que j'ai
en dev pour le servuer de prod sous forme de fichier dat), exactement
la même commande avec exactement le même fichier ne marche pas et
affiche des erreurs sur le format de date !! (j'ai bien dis qu'on
avait la même structure)

l'erreur :
"[ODBC SQL SERVER driver]Format de date non valide"



Bonjour,

Cela dépend de la configuration de SQL server. En effet, lorsque'on écrit
une clause comme "where maDate = '01/01/2005'", SQL server effectue une
conversion implicite de la chaîne de caractère en un élément de type
datetime/smalldatetime selon le type de maDate. Cette conversion implicite
dépend des paramètres du serveur, en particulier du langage utilisé.
Si vous êtes aux états-unis, une date de format XX/XX/XXXX est interprétée
par défaut comme MM/DD/YYYY. En France, comme DD/MM/YYY. Et forcément, le
30/05/2005, aux US, ça n'est pas une date valide.
Maintenant, concrètement:
1. vérifiez le langage par défaut de votre serveur; lire à ce propos
l'article http://support.microsoft.com/default.aspx?scid=kb;en-us;173907
2. si tout semble correct, ie votre serveur utilise le français par défaut,
vérifiez le contenu de la colonne dateformat de master..syslanguages pour le
français; si ça n'est pas dmy, il ya un problème. Et bien que je n'en aie
pas une certitude absolue, il me semble que ce problème soit réglé par le
SP3 (vos deux serveurs ont-ils le même SP?)


Cordialement,

BB
Avatar
BB
BB wrote:
Cela dépend de la configuration de SQL server. En effet, lorsque'on
écrit une clause comme "where maDate = '01/01/2005'", SQL server
effectue une conversion implicite de la chaîne de caractère en un
élément de type datetime/smalldatetime selon le type de maDate.



Euh, bien entendu, j'ai oublié de signaler que, en écrivant quelque chose du
genre " where maDate = CONVERT(datetime, '01/01/2005', 103) ", on évite
tout problème de configuration de serveur.

BB
Avatar
Bouarroudj Mohamed
Le format "YYYYMMDD" est indépendant de toute configuration du serveur, si
coté client notre application envoie toujours ce format on évite beaucoup de
problèmes (et de surprises) lors du déploiement sur des sites avec des
configurations différentes et pas besoin de faire des conversions a chaque
fois.


"BB" $paM.fr> wrote in message
news:dio8v7$m1t$
BB wrote:
Cela dépend de la configuration de SQL server. En effet, lorsque'on
écrit une clause comme "where maDate = '01/01/2005'", SQL server
effectue une conversion implicite de la chaîne de caractère en un
élément de type datetime/smalldatetime selon le type de maDate.



Euh, bien entendu, j'ai oublié de signaler que, en écrivant quelque chose
du
genre " where maDate = CONVERT(datetime, '01/01/2005', 103) ", on évite
tout problème de configuration de serveur.

BB




Avatar
404 found
Merci pour vos réponses !!!!

Je tiendrais compte !! je vais faire des vérifications entre le serveur de
Prod et le serveur de dev !

Encore Merci.

"Bouarroudj Mohamed" a écrit :

Le format "YYYYMMDD" est indépendant de toute configuration du serveur, si
coté client notre application envoie toujours ce format on évite beaucoup de
problèmes (et de surprises) lors du déploiement sur des sites avec des
configurations différentes et pas besoin de faire des conversions a chaque
fois.


"BB" $paM.fr> wrote in message
news:dio8v7$m1t$
> BB wrote:
>> Cela dépend de la configuration de SQL server. En effet, lorsque'on
>> écrit une clause comme "where maDate = '01/01/2005'", SQL server
>> effectue une conversion implicite de la chaîne de caractère en un
>> élément de type datetime/smalldatetime selon le type de maDate.
>
> Euh, bien entendu, j'ai oublié de signaler que, en écrivant quelque chose
> du
> genre " where maDate = CONVERT(datetime, '01/01/2005', 103) ", on évite
> tout problème de configuration de serveur.
>
> BB
>
>