web-dev-qa-db-fra.com

Problème lié à la modification du classement de la base de données (SQL Server 2008)

Lorsque j'ai essayé de modifier le classement de ma base de données existante (y compris les données) de ARABIC_CS_AS à PERSIAN_100_CS_AS, l'erreur suivante s'est produite:

Alter a échoué pour la base de données 'XXXX'. (Microsoft.SqlServer.Smo)

Une exception s'est produite lors de l'exécution d'une instruction ou d'un traitement Transact-SQL. (Microsoft.SqlServer.ConnectionInfo)

L'objet 'ItemTables' dépend du classement de la base de données. Le classement de la base de données ne peut pas être modifié si un objet lié au schéma en dépend. Supprimez les dépendances sur le classement de la base de données, puis renouvelez l'opération.
L'objet 'CK_FilteredReportColumnFilters' dépend du classement de la base de données. Le classement de la base de données ne peut pas être modifié si un objet lié au schéma en dépend. Supprimez les dépendances sur le classement de la base de données, puis renouvelez l'opération.
L'objet 'CK_FilteredReportColumnFilters_1' dépend du classement de la base de données. Le classement de la base de données ne peut pas être modifié si un objet lié au schéma en dépend. Supprimez les dépendances sur le classement de la base de données, puis renouvelez l'opération.
L'objet 'CK_FilteredReportColumnFilters_2' dépend du classement de la base de données. Le classement de la base de données ne peut pas être modifié si un objet lié au schéma en dépend. Supprimez les dépendances sur le classement de la base de données, puis renouvelez l'opération.
L'objet 'CK_Reports' dépend du classement de la base de données. Le classement de la base de données ne peut pas être modifié si un objet lié au schéma en dépend. Supprimez les dépendances sur le classement de la base de données, puis renouvelez l'opération.

ALTER DATABASE a échoué. Le classement par défaut de la base de données 'XXXX' ne peut pas être défini sur Persian_100_CS_AS. (Microsoft SQL Server, erreur: 5075)

Essayer de corriger les erreurs mentionnées en supprimant ces objets de base de données provoque une autre erreur avec d'autres titres dans le processus de conversion.

Une idée ? Existe-t-il une solution bien définie pour résoudre ce problème?

13
Farzin Zaker

Ahh, c'est l'un des pires problèmes de SQL Server: vous ne pouvez pas modifier le classement une fois qu'un objet est créé (cela vaut tant pour les tables que pour les bases de données ...).

Vous ne pouvez sauvegarder que vos données (n'utilisez pas d'utilitaires bcp ou de sauvegarde, vous devez les placer dans un CSV de type de fichier similaire ...), supprimer la base de données, recréer avec le bon classement et réimporter les données dans le répertoire. nouvelle base de données ...

J'espère que cela t'aides.

15
Cristiano Ghersi

J'ai le même problème et tous les objets étaient des fonctions. Première sauvegarde complète

fonction de script en tant que créer. Supprimer ces fonctions puis Exécuter

use master
go
ALTER DATABASE xxx SET SINGLE_USER WITH ROLLBACK IMMEDIATE 
go
ALTER DATABASE xxx COLLATE yyyy
go
ALTER DATABASE xxx SET MULTI_USER
go

Recréer des fonctions

J'espère que cela vous aidera.

2
Haitham Othman

Créez simplement une nouvelle base de données avec ex database_b.changez le classement en fonction de vos besoins et exportez-le de la nouvelle source vers la cible.

ou

utilisez l'outil de classement alt qui remplacera toutes les erreurs.

--Appu

0
Appu