整理错误

Nit*_*tin 36 sql sql-server-2008-r2

我正在使用Microsoft SQL Server Management Studio.我有两个数据库,一个是系统数据库,它有master数据库,另一个是我的数据库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
Run Code Online (Sandbox Code Playgroud)

当我在SQL Server中运行此查询时,它抛出以下错误: -

消息5030,级别16,状态2,行1
无法独占锁定数据库以执行操作.
Msg 5072,Level 16,State 1,Line 1
ALTER DATABASE失败.数据库'CCTNS_CAS_DE_DB'的默认排序规则不能设置为Latin1_General_CI_AI.

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

RAY*_*RAY 101

首先需要将其设置为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 
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你没有假设我知道SQL来设置单用户操作! (2认同)

Ada*_*ras 20

这是您问题的最大提示:

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

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

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