2010-12-10 8 views
2

Je voudrais configurer la base de données avec le classement exact des exigences de "Latin1_General_CP1_CI_AS", mais pour une raison quelconque dans SQL Server 2008, je ne peux sélectionner "SQL_Latin1_General_CP1_CI_AS"?SQL Server 2008 base de données de conversion de Collation

comment puis-je choisir le classement adéquat et changer de SQL_Latin1_General_CP1_CI_AS dans Latin1_General_CP1_CI_AS?

tout en conservant toutes les données et les paramètres (schéma et connexions, etc ... alt text

Merci

Répondre

5

Essayez de changer la collation de QA:.

ALTER DATABASE DBNAME 
COLLATE Cyrillic_General_CI_AS 

Vous peut trouver tous les classements possibles par requête:

SELECT * 
FROM ::fn_helpcollations() 

Si vous avez un champs dans la base de données avec le classement diferent vous devez convertir:

SELECT 'ALTER TABLE ['+ 
     rtrim(TABLE_NAME)+ 
     '] ALTER COLUMN ['+ 
     rtrim(COLUMN_NAME)+ 
     '] '+ 
     rtrim(DATA_TYPE)+ 
    CASE WHEN NOT(CHARACTER_MAXIMUM_LENGTH IS NULL) OR (CHARACTER_MAXIMUM_LENGTH=0) 
     THEN '('+convert(varchar(10),CHARACTER_MAXIMUM_LENGTH)+')' 
    END+ 
    ' COLLATE Latin1_General_CI_AS' COLLATE Latin1_General_CI_AS 
    FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE (TABLE_CATALOG=DB_NAME() COLLATE Latin1_General_CI_AS) AND 
     ((DATA_TYPE LIKE '%char%' COLLATE Latin1_General_CI_AS) OR (DATA_TYPE LIKE '%text%' COLLATE Latin1_General_CI_AS)) AND 
     (COLLATION_NAME IS NOT NULL) AND 
     (COLLATION_NAME <> 'Latin1_General_CI_AS' COLLATE Latin1_General_CI_AS) AND 
     TABLE_NAME in (SELECT o.name 
        FROM sysobjects o 
        WHERE  (o.xtype = 'U')) 

Si l'assemblage de base de données et classement du serveur SQL sont différents, vous pouvez avoir des problèmes avec tempdb. Fondamentalement, vous devez réexécuter l'installation pour reconstruire la base de données master avec le nouveau classement. Vous ne pouvez pas modifier le classement de tout le serveur d'une autre manière.

Quoi qu'il en soit, je pense qu'il est plus facile à installer nouvelle instance de MS SQL Server avec nouveau classement :)

+0

grâce Demas, donc dans ce cas, je changerai la « ALTER DATABASE NOMBDD COLLATE Cyrillic_General_CI_AS » dans tout ce que ma collation actuelle droite ? –

+1

Oui, mais vérifiez-vous avec SELECT * FROM :: fn_helpcollations() – demas

+0

merci l'homme ça fonctionne maintenant .... –

Questions connexes