【问题标题】:restore the database to a different collation将数据库恢复到不同的排序规则
【发布时间】:2015-12-13 02:46:31
【问题描述】:
我试图找到如何将数据库恢复到不同的排序规则。
例如:
- 服务器排序规则是 Czech_CI_AS
- 我备份的数据库有一个排序规则 Czech_CI_AS。
- 我需要恢复数据库的备份,但使用
排序规则 SQL_Latin1_General_CP437_CI_AI。
我哪里做错了,你能帮帮我吗?
【问题讨论】:
标签:
sql-server-2008-r2
restore
collation
【解决方案1】:
正如您所发现的,原始数据库的排序规则保存在备份中,因此当您在其他地方从该备份创建新数据库时,原始排序规则随之而来。还原命令中没有选项可以在还原期间更改排序规则。
您可以在恢复数据库后将 DATABASE 更改为不同的排序规则,但请注意,这不会更改 所有 数据库中现有对象的排序规则,您需要更改排序规则各个表中的列数。
见MSDN:
当您更改数据库排序规则时,您会更改以下内容:
系统表中的任何 char、varchar、text、nchar、nvarchar 或 ntext 列都会更改为新的排序规则。
所有现有的 char、varchar、text、nchar、nvarchar 或 ntext 参数以及存储过程的标量返回值和
用户定义的函数更改为新的排序规则。
char、varchar、text、nchar、nvarchar 或 ntext 系统数据类型,以及基于这些系统数据的所有用户定义数据类型
类型,更改为新的默认排序规则。
您可以更改在 a 中创建的任何新对象的排序规则
使用 ALTER DATABASE 的 COLLATE 子句的用户数据库
陈述。此语句不会更改列的排序规则
在任何现有的用户定义表中。这些可以通过使用
ALTER TABLE 的 COLLATE 子句。