Ne Peut Pas Résoudre Le Conflit De Classement
J'ai installé une de nos bases de données (DB1) à partir de SQL Server 2008 à 2012, et quand je lance les procédures stockées j'obtiens l'erreur suivante
Ne peut pas résoudre le conflit de classement entre "SQL_Latin1_General_CP1_CI_AS" et "Latin1_General_CI_AS", dans l'égalité de l'opération
J'ai changé le classement sur la base de données à l'aide de
ALTER DATABASE [optimiser] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE [optimiser] COLLATE SQL_Latin1_General_CP1_CI_AS
ALTER DATABASE [optimiser] SET MULTI_USER
Mais j'ai toujours l'erreur à chaque fois que les procédures stockées exécuter. Je crois parce que le PS est à l'aide d'une jointure dans une autre base de données (GE ihistorian) et il a un classement d'incompatibilité. EST-il de toute façon de résoudre ce problème.
Sur l'ancien serveur DB1 a été défini comme Latin1_General_CI_AS
et cela fonctionne bien. Le nouvel emplacement pour le DB a un défaut de SQL_Latin1_General_CP1_CI_AS
. Est-il la peine de changer le classement n DB1 sur le nouveau serveur Latin1_General_CI_AS
??
Vous devez vous connecter pour publier un commentaire.
La chose sur les classements, c'est que bien que la base de données est propre classement, chaque table et chaque colonne peut avoir son propre classement. Si non spécifié, il prend la valeur par défaut de l'objet parent, mais peut être différent.
Lorsque vous changez de classement de base de données, il sera la nouvelle valeur par défaut pour toutes les nouvelles tables et de colonnes, mais il ne change pas le classement des objets existant à l'intérieur de la base de données. Vous devez aller et changer manuellement le classement de chaque table et de colonne.
Heureusement, il existe des scripts disponibles sur internet qui peuvent faire le travail. Je ne vais pas recommander tout comme je n'ai pas essayé mais voici quelques liens:
http://www.codeproject.com/Articles/302405/The-Easy-way-of-changing-Collation-of-all-Database
Mise à jour le Classement de tous les champs dans la base de données à la volée
http://www.sqlservercentral.com/Forums/Topic820675-146-1.aspx
Si vous avez besoin d'avoir de classement différent sur deux objets ou ne peut pas changer les classements - vous pouvez toujours
JOIN
entre eux à l'aide deCOLLATE
de commande, et en choisissant le classement que vous voulez pour rejoindre.ou de l'utilisation de base de données par défaut de classement: