[英]Problem with database collation change (SQL Server 2008)
当我尝试将现有数据库(包括数据)的排序规则从ARABIC_CS_AS
为PERSIAN_100_CS_AS
时,出现以下错误:
更改数据库 'XXXX' 失败。 (微软.SqlServer.Smo)
执行 Transact-SQL 语句或批处理时发生异常。 (Microsoft.SqlServer.ConnectionInfo)
object 'ItemTables' 依赖于数据库整理。 如果模式绑定 object 依赖于它,则无法更改数据库排序规则。 删除对数据库排序规则的依赖性,然后重试该操作。
object 'CK_FilteredReportColumnFilters' 依赖于数据库整理。 如果模式绑定 object 依赖于它,则无法更改数据库排序规则。 删除对数据库排序规则的依赖性,然后重试该操作。
object 'CK_FilteredReportColumnFilters_1' 依赖于数据库整理。 如果模式绑定 object 依赖于它,则无法更改数据库排序规则。 删除对数据库排序规则的依赖性,然后重试该操作。
object 'CK_FilteredReportColumnFilters_2' 依赖于数据库整理。 如果模式绑定 object 依赖于它,则无法更改数据库排序规则。 删除对数据库排序规则的依赖性,然后重试该操作。
object 'CK_Reports' 依赖于数据库整理。 如果模式绑定 object 依赖于它,则无法更改数据库排序规则。 删除对数据库排序规则的依赖性,然后重试该操作。更改数据库失败。 数据库“XXXX”的默认排序规则不能设置为 Persian_100_CS_AS。 (微软 SQL 服务器,错误:5075)
尝试通过删除这些数据库对象来更正提到的错误会导致转换过程中其他标题出现另一个错误。
任何的想法? 有没有明确定义的解决方案来解决这个问题?
啊,这是 SQL Server 中最糟糕的问题之一:一旦创建了对象,就无法更改排序规则(对于表和数据库都是如此......)。
您只能保存数据(不要使用 bcp 或备份实用程序,您需要将它们放在类似文件类型的 csv 中...),删除数据库,使用正确的排序规则重新创建并将数据重新导入到新数据库...
希望这可以帮助。
我遇到了同样的问题,所有对象都是函数 首先需要完全备份
脚本函数作为创建。 删除这些函数然后运行
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
重新创建函数
我希望这有帮助。
只需使用 ex database_b 创建新数据库。根据您的要求更改排序规则并从新源导出到目标。
要么
使用将覆盖所有错误的 alt 整理工具。
--阿普
由于我的计算列,我有这个问题,所以我只是取消计算列,然后更改排序规则,然后将列更改为计算列。 它对我有用
我有同样的问题。 在我的例子中,用这个查询改变数据库
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
没有给我任何解决方案。 我最终遇到了错误,! 因此,我创建了一个具有正确排序规则的新数据库,并将表从一个数据库导入到另一个数据库。
只需在写入字符串之前键入 N。
例如:
insert into table values (N'yourstring')
N = Unicode。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.