更改架构的排序规则

时间:2014-09-12 08:56:44

标签: sql sql-server-2008 collation

我可以访问collation设置为SQL_Latin1_General_CP1_CI_AS的数据库。当然我希望它是SQL_Latin1_General_CP1_CS_AS。现在问题只是在其他模式中已经存在我不想搞砸的表。首先,我可以更改自己架构的Collation吗?其次,这是一个好方法吗?或者还有其他更好的方法来处理这种情况吗?

1 个答案:

答案 0 :(得分:0)

无法为每个SQL Server数据库架构指定默认的合作。可以为每个SQL Server数据库或每个SQL Server实例指定默认排序规则。

为SQL Server数据库设置默认排序规则不会更改现有数据库对象的排序规则。它仅指定在创建新数据库对象时默认使用的排序规则。因此,当您需要使用特定排序规则创建多个数据库对象时,您可以事先更改默认数据库排序规则 - 它不会更改现有对象。

ALTER DATABASE MyDatabase COLLATE French_CI_AS ;

但是,如果具有依赖于数据库排序规则的架构绑定对象,则更改默认数据库排序规则会变得棘手。然后你收到以下错误:

The object 'XY' is dependent on database collation. The database collation cannot be changed if a schema-bound object depends on it.

在这种情况下,最好分别为每个列指定排序规则,并明确指定:

CREATE TABLE dbo.MyTable
 (PrimaryKey   int PRIMARY KEY,
  CharCol      varchar(10) COLLATE French_CI_AS NOT NULL
 );