2010-12-10 7 views
2

Ich mag würde Datenbank mit der genauen Anforderung Zusammenstellung von „Latin1_General_CP1_CI_AS“ aber aus irgendeinem Grunde in SQL Server 2008 konfigurieren, kann ich nur „SQL_Latin1_General_CP1_CI_AS“?SQL Server 2008 Datenbankkollatierung Umwandlung

wie kann ich die richtige Zusammenstellung wählen und ändern Sie es von SQL_Latin1_General_CP1_CI_AS in Latin1_General_CP1_CI_AS?

während alle Daten und Einstellungen (Schema und Anmeldungen zu halten, etc ... alt text

Dank

Antwort

5

Versuchen Sortierungs von QA zu ändern:?.

ALTER DATABASE DBNAME 
COLLATE Cyrillic_General_CI_AS 

Sie kann alle möglichen Sortierungen von Query finden:

SELECT * 
FROM ::fn_helpcollations() 

Wenn Sie ein Feld in der Datenbank mit diferent Sortierungs haben, müssen Sie es konvertieren:

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')) 

Wenn Datenbankkollatierung und SQL Server-Sortierungs unterschiedlich sind Sie Probleme mit TempDB haben. Grundsätzlich müssen Sie die Installation erneut ausführen, um die Master-Datenbank mit der neuen Sortierung neu zu erstellen. Sie können die Sortierung des gesamten Servers nicht auf andere Weise ändern.

Auf jeden Fall denke ich, ist es einfacher, neue Instanz von MS SQL Server mit neuer Sortierung installieren :)

+0

dank Demas, so in diesem Fall werde ich das ändern „ALT DATABASE DBNAME COLLATE Cyrillic_General_CI_AS“ in dem, was meine aktuellen Sortierungs Recht ? –

+1

Ja, aber überprüfen Sie sich mit SELECT * FROM :: fn_helpcollations() – demas

+0

danke Mann, es funktioniert jetzt .... –