我想配置具有“ Latin1_General_CP1_CI_AS ”的确切要求排序规则的数据库但由于某种原因在SQL Server 2008中,我只能选择“ SQL_Latin1_General_CP1_CI_AS ”?
如何选择正确的排序规则并将其从 SQL_Latin1_General_CP1_CI_AS 更改为 Latin1_General_CP1_CI_AS ?
同时保留所有数据和设置(架构和登录等)?
感谢。
答案 0 :(得分:5)
尝试从QA更改排序规则:
ALTER DATABASE DBNAME
COLLATE Cyrillic_General_CI_AS
您可以通过查询找到所有可能的排序规则:
SELECT *
FROM ::fn_helpcollations()
如果数据库中的字段具有不同的排序规则,则需要将其转换为:
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数据库。您无法以任何其他方式更改整个服务器的排序规则。
无论如何,我认为使用新的排序规则安装新的MS SQL Server实例会更容易:)