none
在Mssql 2005中如何修改AdventureWorks的排序? RRS feed

  • 问题

  • All,

    MSSQL 2005数据库的示例数据库 AdventureWorks中大小写敏感,它的排序规则是Latin1_General_CS_AS,我如何才能改成Chinese_PRC_CI_AI,
    使用了
    use master
    Alter Database AdventureWorks Collate Chinese_PRC_CI_AI
    ,有错误提示如下:
    消息 5030,级别 16,状态 2,第 1 行
    无法用排他锁锁定该数据库,以执行该操作。
    消息 5072,级别 16,状态 1,第 1 行
    ALTER DATABASE 失败。无法将数据库 'AdventureWorks' 的默认排序规则设置为 Chinese_PRC_CI_AI。

    请问如何处理?

    patrick
    2009年3月7日 13:38

答案

  •  在对数据库应用不同排序规则之前,请确保已满足下列条件:
    1. 您是当前数据库的唯一用户。
    2. 没有依赖数据库排序规则的架构绑定对象。
      如果数据库中存在下列依赖于数据库排序规则的对象,则 ALTER DATABASE database_name COLLATE 语句将失败。SQL Server 将对每个阻塞 ALTER 操作的对象返回一条错误消息:
      • 通过 SCHEMABINDING 创建的用户定义函数和视图。
      • 计算列。
      • CHECK 约束。
      • 表值函数返回包含字符列的表,这些列继承了默认的数据库排序规则。
      数据库排序规则更改时,非绑定到架构的实体的依赖关系信息将自动更新。有关详细信息,请参阅了解 SQL 依赖关系
    3. 改变数据库的排序规则不会在任何数据对象的系统名称中产生重复名称。
      如果改变排序规则后出现重复的名称,则下列命名空间可能导致改变数据库排序规则的操作失败:
      • 对象名,如过程、表、触发器或视图。
      • 架构名称
      • 主体,例如组、角色或用户。
      • 标量类型名,如系统和用户定义类型。
      • 全文目录名称。
      • 对象内的列名或参数名。
      • 表范围内的索引名。
      由新的排序规则产生的重复名称将导致更改操作失败,SQL Server 将返回错误消息,指出重复名称所在的命名空间。

    I Love SQL Server!
    2009年3月7日 14:56
  • Keep in mind that changing database collation doesn't affect existing objects, only new created objects will have new collation.  
    2009年3月7日 16:54

全部回复

  •  在对数据库应用不同排序规则之前,请确保已满足下列条件:
    1. 您是当前数据库的唯一用户。
    2. 没有依赖数据库排序规则的架构绑定对象。
      如果数据库中存在下列依赖于数据库排序规则的对象,则 ALTER DATABASE database_name COLLATE 语句将失败。SQL Server 将对每个阻塞 ALTER 操作的对象返回一条错误消息:
      • 通过 SCHEMABINDING 创建的用户定义函数和视图。
      • 计算列。
      • CHECK 约束。
      • 表值函数返回包含字符列的表,这些列继承了默认的数据库排序规则。
      数据库排序规则更改时,非绑定到架构的实体的依赖关系信息将自动更新。有关详细信息,请参阅了解 SQL 依赖关系
    3. 改变数据库的排序规则不会在任何数据对象的系统名称中产生重复名称。
      如果改变排序规则后出现重复的名称,则下列命名空间可能导致改变数据库排序规则的操作失败:
      • 对象名,如过程、表、触发器或视图。
      • 架构名称
      • 主体,例如组、角色或用户。
      • 标量类型名,如系统和用户定义类型。
      • 全文目录名称。
      • 对象内的列名或参数名。
      • 表范围内的索引名。
      由新的排序规则产生的重复名称将导致更改操作失败,SQL Server 将返回错误消息,指出重复名称所在的命名空间。

    I Love SQL Server!
    2009年3月7日 14:56
  • Keep in mind that changing database collation doesn't affect existing objects, only new created objects will have new collation.  
    2009年3月7日 16:54