Attention !

Ce site n'est plus maintenu. Retrouvez l'article sur Colorseeds.net

Vous allez être redirigé dans 5 secondes...

Vous êtes ici : Accueil > Blog technique > SQLServer / osql

SQLServer / osql / isql : problème de caractères spéciaux pour lancer un script SQL
09/11/2007

Avec les utilitaires OSQL ou ISQL, il est possible d’exécuter des script SQL en lignes de commande :

osql /U mon_user /P mon_password /S mon_serveur /d ma_bdd /n /i mon_fichier_de_script.sql


Cependant, si le fichier mon_fichier_de_script.sql contient des caractères spéciaux, ça risque de planter.
En effet, l’option système "Automatic ANSI to OEM conversion" est sans doute activée. De plus, il faut utiliser ISQL.

Il faut donc modifier cette clé qui se trouve en base de registre.
Pour faire propre, voici ce qu’il faut ajouter dans votre .bat pour que tout aille mieux :

--> Sous Windows 2003, on va mettre la valeur de la clé à OFF si elle était à ON :

FOR /F "TOKENS=3 DELIMS= " %%A IN (’REG QUERY HKLM\SOFTWARE\Microsoft\MSSQLServer\Client\DB-Lib /v AutoAnsiToOem’) DO SET AUTOANSITOOEM=%%A IF /i "%AUTOANSITOOEM%" EQU "ON" (REG ADD HKLM\SOFTWARE\Microsoft\MSSQLServer\Client\DB-Lib /v AutoAnsiToOem /t REG_SZ /d OFF /f)

--> Sous Windows XP, la même chose, sauf que la boucle FOR renvoie 4 entrée, il faut choisir la bonne (SKIP=3) :

FOR /F "SKIP=3 TOKENS=3 DELIMS= " %%A IN (’REG QUERY HKLM\SOFTWARE\Microsoft\MSSQLServer\Client\DB-Lib /v AutoAnsiToOem’) DO SET AUTOANSITOOEM=%%A IF /i "%AUTOANSITOOEM%" EQU "ON" (REG ADD HKLM\SOFTWARE\Microsoft\MSSQLServer\Client\DB-Lib /v AutoAnsiToOem /t REG_SZ /d OFF /f)

Ensuite, il faut inclure la ou les commandes ISQL UNIQUEMENT (sinon, simplement remplacer OSQL par ISQL) :

isql /U mon_user /P mon_password /S mon_serveur /d ma_bdd /n /i mon_fichier_de_script.sql

Et pour finir, remettre en place la clé de la base de registre :

IF /i "%AUTOANSITOOEM%" EQU "ON" (REG ADD HKLM\SOFTWARE\Microsoft\MSSQLServer\Client\DB-Lib /v AutoAnsiToOem /t REG_SZ /d ON /f)


Notez que l’option "Automatic ANSI to OEM conversion" est directement modifiable via l’outil cliconfg.exe.


Article adapté de cette page en anglais

Ajouter un commentaire

Auteur


Email


Message *