【问题标题】:In SQL Server 2005 is there any way to change the collation of a whole database at once?在 SQL Server 2005 中,有没有办法一次更改整个数据库的排序规则?
【发布时间】:2011-08-26 08:43:41
【问题描述】:

使用 SQL Server Management Studio,我从一台服务器备份了一个数据库并将其还原到我的本地 SQL Server 2005 副本。但是备份数据库的排序规则是 SQL_Latin1_General_CP1_CI_AI,我正在尝试将列与数据库进行比较这是 Latin1_General_CI_AI。

数据库有很多键和约束,这使得单独更改每一列会引发错误。

在 SQL Server 2005 中更改整个数据库的排序规则的最佳方法是什么?

【问题讨论】:

    标签: sql-server sql-server-2005 collation


    【解决方案1】:

    没有简单的方法,您必须单独更改 Db (ALTER DATABASE) 和所有列 (ALTER TABLE) 的排序规则。也许有一个现成的工具,也许你需要自己写。也许 Visual Studio 2010 的数据比较工具会很有用(Data -> Data Compare 菜单)。

    【讨论】:

    • ALTER DATABASE 不会更改任何现有用户定义表中列的排序规则。
    • 如果您的列使用数据库默认值(无论如何我都会推荐),则无需单独更改它们...
    • @marc_s 哦,我明白了。那么,也许设置 db 排序规则就足够了。
    • @marc_s:你确定这样的“数据库默认”排序列会神奇地改变它们的排序规则,重新创建它们的索引等等吗?我有点不相信——但我也没有第一手经验。
    • @Arvo:我相信他们会适应不断变化的排序规则,但索引是另一回事......
    【解决方案2】:

    您可以使用ALTER DATABASE 语句的COLLATE 子句更改在用户数据库中创建的任何新对象的排序规则。 此语句不会更改任何现有用户定义表中列的排序规则。可以使用ALTER TABLECOLLATE 子句更改这些排序规则。


    参考:

    Setting and Changing the Database Collation

    Setting and Changing the Column Collation

    【讨论】:

      猜你喜欢
      • 2012-09-26
      • 2011-03-28
      • 2011-07-19
      • 2011-04-08
      • 2010-12-30
      • 2014-11-25
      • 2011-11-14
      • 2012-02-22
      • 2011-03-11
      相关资源
      最近更新 更多