1

J'utilise le projet de base de données Visual Studio 2008 pour gérer mes scripts de base de données et le contrôle de version. Par défaut, les modèles de script de studio visuel sont encodés au format UTF-8. lorsque j'essaie de concaténer les scripts pour la publication de la base de données (en utilisant la commande DOS "type * .sql> dbscripts.sql") et exécutez le script concaténé à partir de SQL Server Management Studio, j'obtiens une erreur de caractère invalide. Toutefois, si je convertis chaque script au format ANSI (en utilisant le bloc-notes) et que je les concatène, je n'obtiens aucune erreur lorsque j'exécute le script concaténé. mais convertir chaque script dans un format de codage différent est fastidieux. Quelle est la meilleure façon d'exécuter plusieurs scripts SQL quel que soit le format d'encodage des scripts? dois-je créer un fichier batch et utiliser sqlcmd pour l'exécuter et rediriger la sortie vers un fichier texte? Y a-t-il des alternatives? Merci d'avance.exécution de plusieurs scripts SQL codés en UTF-8

Répondre

1

trouvé ce lien qui génère "SQLCMD" commandes à l'aide de Windows PowerShell. pour la concaténation, il semble qu'il n'y ait pas de solution sauf de sauvegarder chaque fichier au format ANSI. Je peux au moins générer un fichier avec toutes les commandes sqlcmd utilisant ce sans avoir à les concaténer

http://sqladm.blogspot.com/2010/02/generate-sqlcmd-statements.html

3

C'est à cause de la nomenclature dans le fichier. La commande TYPE est trop primitive pour le détecter et copiera simplement les 3 octets à la sortie.

Vous pouvez modifier l'encodage utilisé pour le fichier .sql. Tedious trop btw. Fichier + Enregistrer sous, cliquez sur la flèche du bouton Enregistrer, Enregistrer avec l'encodage et sélectionnez votre page de codes actuelle. Comme 1252 pour l'Europe de l'Ouest et les Amériques, c'est probablement le premier de la liste. C'est la même chose que vous avez fait avec le Bloc-notes.

Méfiez-vous des problèmes que vous pouvez rencontrer si le serveur fonctionne avec une page de codes différente et que vos scripts contiennent des caractères accentués. Je voudrais juste écrire un petit utilitaire qui utilise Directory.GetFiles et StreamReader/Writer pour résoudre le problème.

0

Vous devez utiliser le copy *.sql dbscripts.sql

+0

essayé déjà, cela n'a pas fonctionné non plus, je reçois toujours l'erreur de caractère invalide. – RKP

+0

@RKP, que se passe-t-il si vous fusionnez les fichiers d'abord, puis convertissez en ansi le fichier final. Donc, vous avez seulement besoin de faire la conversion une fois .. vaut la peine .. –

+0

non, j'ai essayé celui-là aussi et n'a pas fonctionné. dans ce cas, le caractère invalide est visible, c'est la seule différence. Je suppose que l'utilisation de la commande "sqlcmd" semble être la seule option en créant un fichier batch et en y mettant tous les noms de fichiers. J'aurais pu remplacer les modèles de studio visuel pour utiliser le format ANSI, mais je cherchais une meilleure façon de résoudre ce problème. Merci pour votre réponse. – RKP

1

La solution facile est d'ajouter le drapeau codepage à la commande, -f 65001

sqlcmd /S myServer /d myDatabase -E -f 65001 -i MyUTFScriptWithoutBOM.sql

Questions connexes