且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

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

更新时间:2022-11-25 09:56:09

尝试从质量检查更改排序规则:

Try to change collation from QA:

ALTER DATABASE DBNAME
COLLATE Cyrillic_General_CI_AS

您可以通过查询找到所有可能的归类:

You can find all possible collations by Query:

SELECT *
FROM ::fn_helpcollations()

如果数据库中的字段具有不同的排序规则,则需要转换它:

If you have a fields in the database with diferent collation you need to convert it:

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的麻烦。基本上,您需要再次运行安装以使用新的排序规则重建master数据库。您无法通过其他任何方式更改整个服务器的排序规则。

If database collation and sql server collation are different you can have troubles with TempDb. Basically you need to run the installation again to rebuild the master database with the new collation. You cannot change the entire server's collation any other way.

无论如何,我认为使用新的排序规则安装MS SQL Server的新实例会更容易:)

Anyway I think it is easier to install new instance of MS SQL Server with new collation :)