将数据库恢复到不同的排序规则
Posted
技术标签:
【中文标题】将数据库恢复到不同的排序规则【英文标题】: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。我哪里做错了,你能帮帮我吗?
【问题讨论】:
您确实需要提供代码,提供您遇到的错误或结果。请阅读How to Ask 感谢您的警告。改进.. 【参考方案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 子句。
【讨论】:
排序规则存储在实例、数据库和列级别,而不是表。您必须单独更改每个基于文本的列 - 请参阅 this related SO question 以获取为您生成更改语句的脚本。 感谢您的宝贵时间!以上是关于将数据库恢复到不同的排序规则的主要内容,如果未能解决你的问题,请参考以下文章