Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 更改模式的排序规则_Sql_Sql Server 2008_Collation - Fatal编程技术网

Sql 更改模式的排序规则

Sql 更改模式的排序规则,sql,sql-server-2008,collation,Sql,Sql Server 2008,Collation,我可以访问一个数据库,其中排序规则设置为SQL\u Latin1\u General\u CP1\u CI\u AS。当然,我希望它是SQL\u Latin1\u General\u CP1\u CS\u AS。现在的问题是,在另一个模式中已经存在我不想弄乱的表。那么首先,我可以更改我自己模式的排序规则吗?第二,这样做可以吗?或者有其他更好的方法来处理这种情况吗?不能根据SQL Server数据库架构指定默认值。可以为每个SQL Server数据库或仅为每个SQL Server实例指定默认排序规

我可以访问一个数据库,其中
排序规则设置为
SQL\u Latin1\u General\u CP1\u CI\u AS
。当然,我希望它是
SQL\u Latin1\u General\u CP1\u CS\u AS
。现在的问题是,在另一个模式中已经存在我不想弄乱的表。那么首先,我可以更改我自己模式的排序规则吗?第二,这样做可以吗?或者有其他更好的方法来处理这种情况吗?

不能根据SQL Server数据库架构指定默认值。可以为每个SQL Server数据库或仅为每个SQL Server实例指定默认排序规则

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

ALTER DATABASE MyDatabase COLLATE French_CI_AS ;
但是,当您有依赖于数据库排序规则的模式绑定对象时,更改默认数据库排序规则变得很棘手。然后您将收到以下错误:

对象“XY”依赖于数据库排序规则。如果绑定到架构的对象依赖于数据库排序规则,则无法更改该排序规则。

在这种情况下,最好分别明确地为每一列指定排序规则,如下所示:

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

看见您将不得不删除并重新创建索引等。但是,我还没有任何数据,也没有任何表。因此,您只想更改我拥有的模式的排序规则,或者因为它是空的,请删除它并使用正确的排序规则创建一个新的模式。或者只是无法在模式上设置排序规则?例如,您可以只更改默认数据库排序规则,然后创建模式。更改默认数据库排序规则不会影响数据库中的现有对象。不幸的是,我已经失败:
对象“AVCON_1227776622_ACCES_000”依赖于数据库排序规则。如果绑定到架构的对象依赖于数据库排序规则,则无法更改该排序规则。请删除对数据库排序规则的依赖项,然后重试该操作
和一系列相关操作。。。