Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment modifier le classement au niveau du serveur de l'instance SQL Server en cours d'exécution

Dans mon article précédent, j'ai expliqué les bases de SQL Server Collation. Je vous suggère de lire d'abord cet article (si vous ne l'avez pas déjà fait). Ici, je vais vous montrer comment modifier le classement au niveau du serveur ou le classement au niveau de l'instance SQL Server d'une instance SQL Server existante.

Qu'est-ce que le classement au niveau du serveur dans SQL Server ?

Le classement détermine les règles de tri, la casse et les propriétés d'accent pour les données. Il s'agit d'un paramètre important qui peut affecter vos données dans la base de données, il n'est donc pas recommandé de le modifier fréquemment.

Le classement peut être configuré sur 4 couches dans SQL Server :

  • Niveau du serveur
  • Niveau de la base de données
  • Niveau de colonne
  • Niveau d'expression

Remarque : Si vous utilisez l'édition express de SQL Server, vous ne pouvez pas modifier le classement de SQL_Latin1_General_CP1_CI_AS .

Modifier le classement au niveau du serveur d'une instance SQL Server existante

Cette section décrira les conditions préalables et le processus pour modifier le classement au niveau du serveur. Il sera modifié en reconstruisant les bases de données système avec un nouveau nom de classement.

Prérequis

Suivez les points ci-dessous pour exécuter le changement de classement pour une instance de production.

  1. Exécutez une sauvegarde complète de toutes les bases de données. Si possible, prenez un instantané de VM avant de commencer cette procédure.
  2. Assurez-vous que vous disposez de tous les scripts pour créer des bases de données utilisateur ou des objets de base de données tels que des tables, des connexions, des utilisateurs, des tâches, etc. Nous créerons tous les objets de base de données après le changement de classement.
  3. Exporter toutes les données à l'aide de bcp ou tout outil tiers.
  4. Enregistrer les valeurs de configuration au niveau du serveur et le numéro de build de l'instance SQL Server, y compris les correctifs appliqués à l'instance.
  5. Enregistrer tous les emplacements des fichiers de la base de données système. Cela peut être nécessaire si vous avez déplacé les fichiers de votre base de données système vers un autre emplacement.

Jetons un coup d'œil à quelques scripts qui vous aideront à capturer les détails du système. Copiez ces sorties dans un bloc-notes ou un fichier Excel, ou faites simplement une capture d'écran et enregistrez-la pour référence future.

Exécutez la commande ci-dessous pour obtenir toutes les configurations au niveau du serveur.

--Get all server level configurations
SELECT * FROM sys.configurations;

Capturez la version de build de SQL Server en exécutant la requête ci-dessous.

--Fetch SQL Server build version
SELECT @@VERSION
GO

SELECT  
SERVERPROPERTY('ProductVersion ') AS ProductVersion,  
SERVERPROPERTY('ProductLevel') AS ProductLevel,  
SERVERPROPERTY('ResourceVersion') AS ResourceVersion,  

De même, nous devrions obtenir l'emplacement des fichiers de la base de données système en exécutant les instructions T-SQL ci-dessous.

SELECT name, physical_name AS Database_file_location  
FROM sys.master_files  
WHERE database_id IN (DB_ID('master'), DB_ID('model'), DB_ID('msdb'), DB_ID('tempdb'));

Ensuite, nous exécuterons les scripts T-SQL ci-dessous pour collecter les informations de classement de l'instance SQL Server et de toutes les bases de données en une seule fois.

--Get existing collation of SQL Server Instance and all databases
SELECT name, collation_name  
FROM sys.databases  
GO  
--Get existing server level collation
SELECT SERVERPROPERTY('Collation') As [Instance Level Collation]

Lisez mon article précédent pour plus d'informations sur ce script.

Maintenant, générez Créer des scripts pour toutes les connexions et tâches créées sur l'instance SQL Server pour référence et validation futures. En outre, vous pouvez exécuter le script ci-dessous pour récupérer la liste de toutes les connexions et tâches de l'instance SQL Server.

--Get list of logins
Use master
Go
Select * from syslogins

--Get list of Jobs
USE msdb
Go
Select * from sysjobs

Reconstruction d'instance

Une fois que vous avez terminé les étapes mentionnées dans la section des prérequis, l'étape suivante consiste à démarrer le processus de changement de classement. Comme nous avons effectué des sauvegardes ou exporté toutes les données des bases de données utilisateur, nous devons détacher toutes les bases de données utilisateur de l'instance SQL Server. Vous pouvez également les supprimer si vous souhaitez importer les données exportées dans la nouvelle base de données. Je suggérerais de les détacher pour conserver une copie sécurisée de vos bases de données afin que vous puissiez les joindre après le changement de classement.

Le processus de modification d'un classement au niveau du serveur nécessite la reconstruction de la base de données système. Nous devons transmettre un nouveau nom de classement lors de la reconstruction des bases de données système. L'opération de reconstruction de la base de données système nécessite la configuration de l'installation de SQL Server. Commençons l'opération de reconstruction de la base de données système pour modifier le classement au niveau du serveur.

Connectez-vous à votre système cible pour lequel vous allez modifier le classement. Ouvrez l'invite de commande Windows ou une fenêtre de terminal PowerShell. Ouvrez PowerShell, puis tapez cmd pour utiliser un utilitaire d'invite de commande Windows, comme indiqué dans l'image ci-dessous. Modifiez l'emplacement de votre répertoire où vous avez placé vos fichiers de configuration d'installation de SQL Server.

--Open Windows Command prompt
Cmd

--Change directory where you have placed SQL Server setup files
Cd <Full path>

--My location was C:\Manvendra\SQL2019\Developer_ENU so i executed below cmd
cd C:\Manvendra\SQL2019\Developer_ENU

Je me trouve maintenant à l'emplacement où les fichiers d'installation de SQL Server sont enregistrés.

Ensuite, nous allons exécuter la commande ci-dessous pour reconstruire toutes les bases de données système. De plus, nous devons exécuter la commande ci-dessous avec un nouveau paramètre de classement pour le modifier pour cette instance SQL Server et toutes les bases de données système.

--Rebuild system databases with new collation. Replace all values in <> with your desired value.
Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=<InstanceName>
/SQLSYSADMINACCOUNTS=<accounts> / SAPWD= <StrongPassword>
/SQLCOLLATION=<CollationName>

--I replaced all values and executed the below command with collation SQL_Latin1_General_CP1_CS_AS
Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=MSSQLSERVER /SQLSYSADMINACCOUNTS=WIN-AFNHJ3L1D6E\Administrator /[email protected] /SQLCOLLATION=SQL_Latin1_General_CP1_CS_AS

Vous pouvez voir sa sortie dans la capture d'écran ci-dessous. Vous devez laisser l'écran tel quel et le laisser continuer jusqu'à ce que vous obteniez le répertoire de travail.

Ici, nous avons l'invite. Cela signifie que la base de données système a été reconstruite avec un nouveau classement pour cette instance SQL Server. Vérifions-le.

Assurez-vous que SQL Server est en cours d'exécution et que ses services sont lancés. Démarrez maintenant SQL Server Management Studio ou sqlcmd pour se connecter à l'instance SQL Server. Vous pouvez voir que je me suis connecté avec succès à l'instance SQL Server qui a été reconstruite dans les étapes ci-dessus. Nous ne pouvons voir que les bases de données système dans l'image ci-dessous.

Exécutez les instructions T-SQL ci-dessous pour collecter les détails de classement au niveau de la base de données et du serveur. Cette étape validera le changement de classement des bases de données serveur et système.

--Get collation of the SQL Server Instance and all databases
SELECT name, collation_name  
FROM sys.databases  
GO  
--Get an existing server-level collation
SELECT SERVERPROPERTY('Collation') As [Instance Level Collation]

Le classement au niveau du serveur et au niveau de la base de données pour toutes les bases de données système utilise SQL_Latin1_General_CP1_CS_AS dans la capture d'écran ci-dessous. Cette étape valide qu'un nouveau classement a été configuré sur cette instance SQL Server.

Le classement au niveau du serveur a été remplacé par le nouveau classement. L'étape suivante consiste à attacher toutes les bases de données utilisateur qui ont été détachées avant de reconstruire les bases de données système. N'oubliez pas que toutes les bases de données existantes qui doivent être attachées ou restaurées auront le même classement sous lequel elles ont été sauvegardées ou détachées. Vous devez le modifier manuellement après le changement de classement au niveau du serveur. Cependant, toutes les bases de données nouvellement créées auront un nouveau classement par défaut.

J'ai joint mes bases de données d'utilisateurs comme indiqué dans l'image ci-dessous.

Une fois les bases de données attachées, vous pouvez vérifier à nouveau le classement de ces bases de données. Si vous souhaitez modifier le classement de ces bases de données, vous pouvez lire mon article précédent pour y parvenir.

Conclusion

Si vous avez exporté des données à partir des bases de données, vous pouvez exécuter tous les scripts qui ont été générés lors du prérequis pour créer les objets de base de données. Ensuite, vous pouvez importer les données exportées dans ces bases de données et objets nouvellement créés. Vous pouvez valider et modifier les configurations au niveau du serveur selon les détails que nous avons récupérés dans la section des prérequis.

Vous pouvez également déplacer les fichiers de la base de données système si vous souhaitez les conserver dans un emplacement spécifique, car une reconstruction de la base de données système les créera dans un emplacement par défaut. Il est également possible d'exécuter les scripts pour créer des logins et des jobs à l'aide de scripts générés auparavant. Ne restaurez pas les bases de données système car cela changera le classement nouvellement configuré en l'ancien pour cette base de données.

Merci de partager cet article et de nous faire part de vos commentaires, afin que nous puissions nous améliorer.