2012-12-09 82 views
30

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

我收到以下错误:

Cannot resolve the collation conflict between "Latin1_General_CI_AI" and "SQL_Latin1_General_CP1_CI_AS" in the equal to operation

我通过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此查询它扔了以下错误: - - :

Msg 5030, Level 16, State 2, Line 1
The database could not be exclusively locked to perform the operation.
Msg 5072, Level 16, State 1, Line 1
ALTER DATABASE failed. The default collation of database 'CCTNS_CAS_DE_DB' cannot be set to Latin1_General_CI_AI.

我知道这个问题已经

我碰到一个查询是来了张贴在这里,但这是在不同的情况下,我认为。

回答

16

这里是最大的暗示你的问题:

Msg 5030, Level 16, State 2, Line 1 The database could not be exclusively locked to perform the operation.

你需要做你运行ALTER DATABASE语句前将数据库设置为单用户模式,然后将其设置回多用户模式当它完成时。这将锁定数据库并仅将它提供给当前连接,这将允许您成功运行ALTER DATABASE ... COLLATE语句。

你可以use SQL Server Management Studio or T-SQL commands来做到这一点。

+0

我执行下面的查询(ALTER DATABASE CCTNS_CAS_DE_DB COLLATE Latin1_General_CI_AI; GO),并能到我的分贝CCTNS_CAS_DE_DB的整理从SQL_Latin1_General_CP1_CI_AS改变Latin1_General_CI_AI但在生成报告时,它会显示相同的错误,即无法解决等于操作中“Latin1_General_CI_AI”和“SQL_Latin1_General_CP1_CI_AS”之间的归类冲突。 – Nitin

+0

很好的答案。谢谢 – Behzad

80

需要先将其设置为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 
+0

完美地工作。谢谢! – JwJosefy

+2

感谢您不要以为我知道设置单用户操作的SQL! –

+0

谢谢@RAY。伟大的工作... –

-1

工作非常谢谢你很多

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 
+2

这是[RAY的答案](https://stackoverflow.com/a/17377732/243373)的完全重复。请不要重复现有的答案和/或把答谢的答案。相反,只要你有足够的声望,就可以得到最能帮助你的答案。 –