数据库归类更改的问题(SQL Server 2008)

时间:2011-09-10 10:58:28

标签: sql-server database sql-server-2008 collation

当我尝试将现有数据库(包括数据)的排序规则从ARABIC_CS_AS更改为PERSIAN_100_CS_AS时,会发生以下错误:

  

更改数据库'XXXX'失败。 (Microsoft.SqlServer.Smo)

     

执行Transact-SQL语句或批处理时发生异常。   (Microsoft.SqlServer.ConnectionInfo)

     

对象'ItemTables'依赖于数据库排序规则。如果架构绑定对象依赖于它,则无法更改数据库排序规则。删除数据库排序规则的依赖关系,然后重试该操作   对象'CK_FilteredReportColumnFilters'依赖于数据库排序规则。如果架构绑定对象依赖于它,则无法更改数据库排序规则。删除数据库排序规则的依赖关系,然后重试该操作   对象'CK_FilteredReportColumnFilters_1'依赖于数据库排序规则。如果架构绑定对象依赖于它,则无法更改数据库排序规则。删除数据库排序规则的依赖关系,然后重试该操作   对象'CK_FilteredReportColumnFilters_2'依赖于数据库排序规则。如果架构绑定对象依赖于它,则无法更改数据库排序规则。删除数据库排序规则的依赖关系,然后重试该操作   对象'CK_Reports'依赖于数据库排序规则。如果架构绑定对象依赖于它,则无法更改数据库排序规则。删除数据库排序规则的依赖项,然后重试该操作。

     

ALTER DATABASE失败。数据库'XXXX'的默认排序规则不能设置为Persian_100_CS_AS。 (Microsoft SQL Server,错误:5075)

尝试通过删除这些数据库对象来纠正所提到的错误会导致转换过程中其他标题出现另一个错误。

有什么想法吗?有没有明确定义的解决方案来解决这个问题?

5 个答案:

答案 0 :(得分:15)

啊,这是SQL Server中最严重的问题之一:一旦创建了对象,就无法更改排序规则(对于表和数据库都是如此......)。

您只能保存数据(不要使用bcp或备份实用程序,需要将它们放在类似文件类型的csv中...),删除数据库,使用正确的排序重新创建并重新导入数据进入新数据库...

希望这有帮助。

答案 1 :(得分:2)

我遇到了同样的问题,所有对象都是函数 首先进行完全备份

脚本功能为创建。 删除这些功能,然后运行

use master
go
ALTER DATABASE xxx SET SINGLE_USER WITH ROLLBACK IMMEDIATE 
go
ALTER DATABASE xxx COLLATE yyyy
go
ALTER DATABASE xxx SET MULTI_USER
go

重新创建功能

我希望这有用。

答案 2 :(得分:0)

只需使用ex database_b.new创建新数据库,根据您的要求更改排序规则 从新来源出口到目标。

使用alt collat​​ion工具,它将覆盖所有错误。

- APPU

答案 3 :(得分:0)

我有这个问题是因为我的计算列,所以我只是取消计算列,然后更改排序规则,然后将列更改为计算列。它对我有用

答案 4 :(得分:-2)

在写字符串之前输入N.

例如:

insert into table values (N'yourstring')

N = unicode。