Partager via


Définir le même classement pour les bases de données définies par l'utilisateur que pour les bases de données MASTER

Cette règle vérifie si les bases de données définies par l'utilisateur sont définies à l'aide d'un classement de base de données identique à celui de la base de données master ou model.

Meilleures pratiques recommandées

Nous recommandons d'utiliser, pour les bases de données définies par l'utilisateur, les mêmes classements que ceux des bases de données master ou model. Dans le cas contraire, des conflits de classement pouvant empêcher l'exécution du code risquent de se produire. Par exemple, lorsqu'une procédure stockée joint une table à une table temporaire, SQL Server peut mettre fin au traitement et retourner une erreur de conflit de classement si les classements de la base de données définie par l'utilisateur et de la base de données model sont différents. Cela se produit car les tables temporaires sont créées dans tempdb, dont le classement repose sur celui de la base de données model.

Si vous rencontrez des erreurs de conflit de classement, considérez l'une des solutions suivantes :

  • Exportez les données de la base de données utilisateur et importez-les dans de nouvelles tables ayant le même classement que les bases de données master et model.

  • Reconstruisez les bases de données système pour utiliser un classement qui correspond à celui de la base de données utilisateur. Pour plus d'informations sur la reconstruction des bases de données système, consultez Reconstruction des bases de données système.

  • Modifiez toute procédure stockée qui joint des tables utilisateur à des tables de la base de données tempdb pour créer les tables dans tempdb en utilisant le classement de la base de données utilisateur. Pour ce faire, ajoutez la clause COLLATE database_default aux définitions de colonnes de la table temporaire, comme indiqué dans l'exemple suivant :

    CREATE TABLE #temp1 ( c1 int, c2 varchar(30) COLLATE database_default )