2010-12-10 99 views
2

我想用「Latin1_General_CP1_CI_AS」但由於某些原因在SQL Server 2008中的確切要求,整理配置數據庫,我只能選擇「SQL_Latin1_General_CP1_CI_AS」?SQL Server 2008數據庫排序規則轉換

我該怎麼選擇了適當的歸類,並從SQL_Latin1_General_CP1_CI_AS變成Latin1_General_CP1_CI_AS

同時保留所有的數據和設置(模式和登錄,等... alt text

感謝

回答

5

嘗試從QA改變歸類:?

ALTER DATABASE DBNAME 
COLLATE Cyrillic_General_CI_AS 

你可以通過查詢找到所有可能的排序規則:

SELECT * 
FROM ::fn_helpcollations() 

如果您有與diferent整理數據庫中的字段,你需要將其轉換:

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

如果數據庫整理和SQL Server排序規則是不同的,你可以有tempdb的煩惱。基本上,您需要再次運行安裝以使用新歸類重建主數據庫。您無法以其他方式更改整個服務器的排序規則。

無論如何,我認爲這是更容易安裝的MS SQL Server的新實例和新的歸類:)

+0

感謝底馬,所以在這種情況下,我應該改變「ALTER DATABASE DBNAME COLLATE Cyrillic_General_CI_AS」到任何我目前的整理對 ? – 2010-12-10 05:32:17

相關問題