IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration SQL Server Discussion :

Migration SQLServer 2008 -> 2019, Probleme avec Bulk


Sujet :

Administration SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2007
    Messages : 31
    Par défaut Migration SQLServer 2008 -> 2019, Probleme avec Bulk
    Bonjour,

    Contexte :

    Je dois migrer une base de données de SQLServer 2008 vers 2019. Il y a des programme en taches planifiées qui mettent à jours des référentiels dans la base à partir de fichiers CSV. Ces programmes ont été écrite en C# avec spring et NHibernate et ont passé du framework 4.6.2 vers 4.8.1. Serveurs US. Et bien sur, ça fonctionnait avant.

    Contraintes :

    De temps, d'argent, de personnel, comme d'hab, mais en pire pour certaines raisons.

    Problème :

    La mise à jours des référentiels plante sur les DateTime avec des fonction d'import de masse.

    Il y a des requêtes type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO IMP_XXX SELECT * FROM  OPENROWSET(BULK 'D:\Applications\Dev\YYYY\Fichiers_recus\REF_XXX_20230420_043354.CSV', FORMATFILE = 'D:\Applications\Dev\YYYY\Import_Chene\BcpFormat\IMP_XXX.xml')
    .

    Le format Dates dans les fichiers CSV est JJ/MM/AA.

    Les fichiers BCP ressemblent à ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?xml version="1.0"?>
    <BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <RECORD>
      <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="|" MAX_LENGTH="50" COLLATION="French_CI_AS"/>
      <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="|" MAX_LENGTH="50" COLLATION="French_CI_AS"/>
      <FIELD ID="4" xsi:type="CharTerm" TERMINATOR="|" MAX_LENGTH="50" COLLATION="French_CI_AS"/>
      <FIELD ID="5" xsi:type="CharTerm" TERMINATOR="|" MAX_LENGTH="50" COLLATION="French_CI_AS"/>
      <FIELD ID="6" xsi:type="CharTerm" TERMINATOR="|" MAX_LENGTH="100" COLLATION="French_CI_AS"/>
      <FIELD ID="7" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="50" COLLATION="French_CI_AS"/>
     </RECORD>
     <ROW>
      <COLUMN SOURCE="2" NAME="BU_GL" xsi:type="SQLNVARCHAR"/> 
      <COLUMN SOURCE="3" NAME="CODE" xsi:type="SQLNVARCHAR"/>
      <COLUMN SOURCE="4" NAME="DATE_EFFET" xsi:type="SQLNVARCHAR"/>
      <COLUMN SOURCE="5" NAME="STATUT" xsi:type="SQLNVARCHAR"/>
      <COLUMN SOURCE="6" NAME="DESCRIPTION" xsi:type="SQLNVARCHAR"/>
      <COLUMN SOURCE="7" NAME="DESCRIPTION_COURTE" xsi:type="SQLNVARCHAR"/>
     </ROW>
    </BCPFORMAT>
    L'erreur est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.Data.SqlClient.SqlException (0x80131904): The conversion of a nvarchar data type to a datetime data type resulted in an out-of-range value.
    J'ai vérifié/changé les paramètres régionaux de Windows (Français, format date, etc), Le langage par defaut, la langue de collation de SQL Server plus teste pas mal de choses glanées sur Internet, j'ai toujours cette erreur. Le format date pour toutes les session est DMY.

    Si je change le type de SQLNVCHAR vers SQLDATE dans les fichier BCP, j'ai les erreurs suivantes dés que le jour est supérieur à 12 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Bulk load data conversion error (type mismatch or invalid character for the specified codepage).
    Y'a t-il une solution rapide ?

    Cordialement,

    Hervé.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 999
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 999
    Billets dans le blog
    6
    Par défaut
    Visiblement vos message d'erreur étant en anglais, votre session par défaut pour l'utilisateur doit être en anglais... Sous quel compte de connexion lancez vous la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO ... SELECT * FROM  OPENROWSET(BULK ...
    Vérifiez si ce login est bien avec la langue française par défaut...

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2007
    Messages : 31
    Par défaut Résolu
    Je confirme, il suffit de changer la langue par defaut du login du user sur la base de données pour que ça marche.

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SQL-Server] Probleme avec la fonction sqlsrv_query() pour php/sqlserver 2008
    Par lemzo84 dans le forum PHP & Base de données
    Réponses: 19
    Dernier message: 19/08/2011, 20h29
  2. Réponses: 1
    Dernier message: 08/06/2011, 11h09
  3. probleme avec vs 2008
    Par nesrine6215 dans le forum Visual C++
    Réponses: 3
    Dernier message: 11/05/2008, 12h40
  4. Probleme avec mysql migration toolkit
    Par maxeur dans le forum Autres Logiciels
    Réponses: 0
    Dernier message: 23/01/2008, 11h18
  5. Problem avec le BULK INSERT
    Par Soulkeum dans le forum MS SQL Server
    Réponses: 14
    Dernier message: 15/10/2007, 11h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo