Changer la Collation de votre SQL Server (après installation)

Configurer la collation ou jeux de caractères est une tâche importante lorsque vous déployez des bases de données ou une nouvelle instance SQL Server. En effet, selon que vous disposez d’un ISO en français ou en anglais (ou autre), la Collation par défaut ne sera pas la même. Et cela peut avoir un impact sur votre application ou l’outil qui utilisera ce SQL Server.

Malheureusement, cette option se configure au moment de la création de l’instance SQL. Sauf que l’option n’est pas très visible et il est facile de passer à côté.

Lors de l’installation, lorsque vous arrivez à l’étape Server Configuration, vous aurez une fenêtre avec 2 onglets : Services Accounts et Collation. C’est sans cette section que vous pourrez changer la Collation.

Le problème avec ce réglage c’est qu’il se configure au moment de la création de l’instance. De ce fait, si vous vous trompez, il y a de forte chance que vous deviez supprimer / re-créer l’instance.

En tout cas, c’était le cas dans les précédentes versions de SQL Server. Mais heureusement dans les versions les plus récentes, il est possible de corriger ce réglage sans avoir à tout réinstaller.

Faisons le test. J’ai créé une instance ayant pour Collation : French_CI_AI (un grand classique). Mais imaginons que nous souhaitions plutôt la collation suivante : SQL_Latin1_General_CP1_CI_AI (recommandée dans bien des cas).

Avant de procéder, pensez à désactiver l’ensemble des services liés à votre instance SQL Server.

Si vous disposez d’une VM ou serveur ne comptant qu’une seule instance SQL (avec le nom classique par défaut MSSQLSERVER), vous pouvez changer la Collation en utilisant la ligne de commande suivante depuis le dossier Binn de votre instance SQL. 

Par défaut : 

C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Binn

sqlservr -m -T4022 -T3659 -q"SQL_Latin1_General_CP1_CI_AI"

Si vous disposez d’un serveur composé de plusieurs instances ; vous pouvez choisir de changer la Collation pour une instance spécifique avec un paramètre en plus :

sqlservr -m -T4022 -T3659 -s"MSSQLSERVER" -q"SQL_Latin1_General_CP1_CI_AI"

L’opération devrait prendre que quelques secondes mais affichera plein de choses à l’écran (je ne peux pas tout screenshoter) et ça devrait ressembler à quelque-chose comme suit :

A la fin, vous devriez lire un message : Recovery is complete. This is an informational message only. No user action is required… Il ne vous restera alors plus qu’à relancer vos services et vérifier le résultat dans SQL Management Studio.

Le changement a bien été pris en compte. 🙂

Plus d’informations en visitant ces liens :