SQL Server 2008数据库排序规则转换

SQL Server 2008数据库排序规则转换

问题描述:

我想用“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

感谢

尝试从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