2013-04-29 4 views
0

Nous utilisons donc osql pour exécuter des procédures stockées dans le cadre de notre processus de génération. Nous utilisons un projet avec un dossier sp qui est publié avec des applications dans le cadre d'un pack de build.OSQL Syntaxe incorrecte - Encodage des caractères - Aide de script Powershell requise

J'ai utilisé Visual Studio pour créer cette structure de projet et créé les scripts sql à exécuter dans les procs. Visual Studio a enregistré les fichiers avec le formatage UTF8 (par défaut)

Visual Studio a enregistré les fichiers avec le formatage UTF8. osql lors de l'exécution des scripts se plaignait de chaque script unique ayant une erreur de syntaxe sur la ligne 1 à savoir

> Incorrect syntax near '´'.  1> 2> Msg 102, Level 15, State 1, 
> Server GBEPIAP-SQL01, Line 1 

plutôt déconcertant.

Quoi qu'il en soit; pour résoudre le problème, les scripts SQL peuvent être enregistrés avec Unicode Codepage 1200 (Fichier -> Enregistrer les options avancées)

et le tour est joué - problème disparu

Maintenant que m'a laissé avec un problème encore plus grand; J'ai plus de 200 scripts proc que j'ai besoin d'ouvrir, de changer d'encodage et de sauvegarder avec le nouvel encodage.

Est-ce que n'importe quel gourou powershell peut me faire un script rapide pour changer le codage de chaque fichier dans un dossier à Unicode Codepage 1200? Me ferait une faveur tout en économisant du temps.

+1

OSQL est vraiment vraiment vieux - vous devriez essayer d'utiliser 'sqlcmd' à la place, ce qui est beaucoup plus récente et peut gérer encodages mieux –

+0

commentaire assez valide. Je peux faire une suggestion à l'équipe de construction, mais cela ne relève pas de mes compétences. –

Répondre

1

En fin de compte, j'utilisé l'approche documentée ici

Save all files in Visual Studio project as UTF-8

Mais au lieu de UTF8; J'ai spécifié Unicode.

foreach (var f in new DirectoryInfo(@"...").GetFiles("*.sql", SearchOption.AllDirectories)) { 
    string s = File.ReadAllText(f.FullName); 
    File.WriteAllText (f.FullName, s, Encoding.Unicode); 
} 
+0

J'utilisais notepad ++ pour mon script et je sélectionnais encoder en ANSII ou UTF 8 sans que BOM ne fonctionne pour moi. – user2983931