2012-03-22 74 views
1

我有一个问题,我试图在互联网上找到更多信息,但我仍然不确定。设置和更改SQL Server整理

如果我有一个带有以下默认排序规则示例“Modern_Spanish_CI_AS”的SQL Server实例,并且我还有一个具有不同排序规则示例“Latin1_General_CI_AS”的已恢复数据库。

SQL Server将使用什么排序规则?默认情况下是Modern_Spanish ...或者它将使用数据库Latin1_General?

在以下链接解释了一些事情 Setting and Changing the Server Collation

谢谢!

回答

2

它将使用Latin1_General_CI_AS排序规则,因为这是数据库本身的设置。

为了说明起见,数据库中设置的值将覆盖服务器的“默认”排序规则。默认排序规则基本上只在创建全新数据库时使用。

在服务器级别更改默认排序规则对现有数据库没有影响,您将不得不逐个更改每个排序规则,但这本身可能会导致您与所创建的任何其他数据库级别的对象发生级联问题,例如作为存储过程,约束,甚至是您从第三方应用程序对数据库执行的任何动态SQL。

+0

您在(var)char列上创建的任何索引以及这些索引的统计信息也将受到影响。 – 2012-03-22 08:38:28

2

SQL Server排序规则可以设置在各种级别:服务器,数据库,列,会计。如果不在较低级别设置归类,则从上一级继承。例如。创建数据库时,除非您明确设置数据库的归类,否则数据库归类将成为服务器的归类。

许多排序规则可以很好地协同工作。有时可能会有困难,通常排序顺序的性质是意想不到的。我不确定,但我希望你指定的2是兼容的。

所以是的,你的数据库(几乎可以肯定)会用Latin1_General_CI_AS排序规则恢复,几乎肯定会很好。 Google应该能够帮助您找到兼容的排序规则列表。

+2

如果还原的数据库正在使用临时表,则一切都将不正常。临时表默认为tempdb的排序规则,与服务器默认值相同。一种可能导致灾难的情况是,如果数据库创建临时表并对其执行对归类敏感的操作(例如对其自己的表之一的联接)。 – 2012-03-22 08:42:04