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