43

我正在使用 Microsoft SQL Server Management Studio。我有两个数据库,一个是系统数据库,它有主数据库,另一个是我的数据库,称为CCTNS_CAS_DE_DB. 当我尝试通过使用CCTNS_CAS_DE_DB数据库的工具生成报告时。

我收到以下错误:

无法解决等于操作中“Latin1_General_CI_AI”和“SQL_Latin1_General_CP1_CI_AS”之间的排序规则冲突

我浏览了 SQL Server 并检查了主数据库的属性,它显示排序规则,Latin1_General_CI_AI但是当我转到CCTNS_CAS_DE_DB数据库的属性时,它显示排序规则为SQL_Latin1_General_CP1_CI_AS.

我在网上搜索了错误,但大多数解决方案都告诉了如何更改特定表的排序规则,但我没有遇到任何将我的数据库的排序规则更改为Latin1_General_CI_AI.

我遇到了一个问题:-

ALTER DATABASE CCTNS_CAS_DE_DB COLLATE Latin1_General_CI_AI

当我在我的 SQL Server 中运行此查询时,它引发了以下错误:-

消息 5030,级别 16,状态 2,第 1 行
无法以独占方式锁定数据库以执行操作。
消息 5072,级别 16,状态 1,第 1 行
ALTER DATABASE 失败。数据库“CCTNS_CAS_DE_DB”的默认排序规则不能设置为 Latin1_General_CI_AI。

我知道这个问题已经在这里发布,但我认为那是在不同的背景下。

4

2 回答 2

117

需要先将其设置为 SINGLE_USER。

ALTER DATABASE [database] SET SINGLE_USER WITH ROLLBACK IMMEDIATE; 

GO 

ALTER DATABASE [database] COLLATE SQL_1xCompat_CP850_CI_AS; 

GO 

ALTER DATABASE [database] SET MULTI_USER; 

GO 
于 2013-06-29T07:14:23.897 回答
24

这是您问题的最大提示:

消息 5030,级别 16,状态 2,第 1 行 无法以独占方式锁定数据库以执行操作。

您需要做的是在运行ALTER DATABASE语句之前将数据库设置为单用户模式,然后在完成后将其设置回多用户模式。这将锁定数据库并使其仅可用于当前连接,这将允许您成功运行该ALTER DATABASE ... COLLATE语句。

您可以使用 SQL Server Management Studio 或 T-SQL 命令来执行此操作。

于 2012-12-09T08:29:59.397 回答