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?
同时保留所有的数据和设置(模式和登录,等...
感谢
答
尝试从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的新实例和新的归类:)
感谢底马,所以在这种情况下,我应该改变“ALTER DATABASE DBNAME COLLATE Cyrillic_General_CI_AS”到任何我目前的整理对 ? – 2010-12-10 05:32:17