web-dev-qa-db-fra.com

Erreur de classement

J'utilise Microsoft SQL Server Management Studio. J'ai deux bases de données, l'une est la base de données système, qui a la base de données master et l'autre est ma base de données appelée CCTNS_CAS_DE_DB. Lorsque j'essaie de générer les rapports via l'outil qui utilise le CCTNS_CAS_DE_DB base de données.

J'obtiens l'erreur suivante:

Impossible de résoudre le conflit de classement entre "Latin1_General_CI_AI" et "SQL_Latin1_General_CP1_CI_AS" dans l'opération égale à

J'ai parcouru SQL Server et vérifié les propriétés de la base de données master, il montre le classement comme Latin1_General_CI_AI mais quand je suis allé aux propriétés du CCTNS_CAS_DE_DB base de données, il affiche le classement comme SQL_Latin1_General_CP1_CI_AS.

J'ai recherché l'erreur en ligne, mais la plupart des solutions indiquent comment modifier le classement d'une table particulière, mais je n'ai rencontré aucune requête qui changera le classement de ma base de données en Latin1_General_CI_AI.

Je suis tombé sur une requête qui est: -

ALTER DATABASE CCTNS_CAS_DE_DB COLLATE Latin1_General_CI_AI

Lorsque j'ai exécuté cette requête dans mon SQL Server, il a généré l'erreur suivante: -

Msg 5030, niveau 16, état 2, ligne 1
La base de données n'a pas pu être verrouillée exclusivement pour effectuer l'opération.
Msg 5072, niveau 16, état 1, ligne 1
ALTER DATABASE a échoué. Le classement par défaut de la base de données 'CCTNS_CAS_DE_DB' ne peut pas être défini sur Latin1_General_CI_AI.

Je sais que cette question a déjà été publiée ici, mais c'était dans un contexte différent, je pense.

36
Nitin

Voici le plus gros indice de votre problème:

Msg 5030, niveau 16, état 2, ligne 1 La base de données n'a pas pu être verrouillée exclusivement pour effectuer l'opération.

Ce que vous devez faire est de définir la base de données en mode mono-utilisateur avant d'exécuter le ALTER DATABASE, puis la remettre en mode multi-utilisateurs lorsqu'elle est terminée. Cela verrouillera la base de données et la rendra disponible uniquement pour la connexion actuelle, ce qui vous permettra d'exécuter avec succès le ALTER DATABASE ... COLLATE déclaration.

Vous pouvez tiliser SQL Server Management Studio ou les commandes T-SQL pour ce faire.

20
Adam Maras

Vous devez d'abord le définir sur SINGLE_USER.

ALTER DATABASE [database] SET SINGLE_USER WITH ROLLBACK IMMEDIATE; 

GO 

ALTER DATABASE [database] COLLATE SQL_1xCompat_CP850_CI_AS; 

GO 

ALTER DATABASE [database] SET MULTI_USER; 

GO 
98
RAY