c# - 无法解决 equal to 操作中 "Cyrillic_General_CI_AS"和 "SQL_Latin1_General_CP1_CI_AS"之间的排序规则冲突

标签 c# sql-server asp.net-mvc-3 asp.net-core

MS SQL 服务器 2017

asp.net核心2

我从 C# 调用存储过程:

res = db.Query<SearchPictureInfoOutputModel>("sp_SearchPictureInfo", new { Prc_ID = input.Prc_ID, Cust_ID = input.Cust_ID, AppCode = input.AppCode},
                             commandType: CommandType.StoredProcedure).FirstOrDefault();

我得到错误:

System.Data.SqlClient.SqlException: '无法解决等于操作中“Cyrillic_General_CI_AS”和“SQL_Latin1_General_CP1_CI_AS”之间的排序规则冲突。

如果我从 ms 管理工作室调用程序
DECLARE @return_value int

EXEC    @return_value = [dbo].[sp_SearchPictureInfo]
        @Prc_ID = 2663,
        @Cust_ID = 26429,
        @AppCode = N'19139'

SELECT  'Return Value' = @return_value

GO

没有错误,只是返回值。

我该如何解决整理?

最佳答案

很可能您的系统数据库具有不同的排序规则。

您可以通过在 SQL Management Studio 中执行以下查询来检查:

SELECT name, collation_name  
FROM sys.databases  

同样在非主数据库上,您可以使用右键单击 -> 属性 -> 常规 -> 维护,您将看到排序规则作为最后一个选项。

可以使用此查询更改非主服务器:
USE master;  
GO  
ALTER DATABASE <<YOUR_DATABASE_OTHER_THAN_MASTER>>
COLLATE Latin1_General_CI_AS ;  
GO 

如果您必须更改主版本(就像我一样),您将无法通过 SQL 管理工作室。对我来说,最简单的方法是停止它以及所有 SQL 服务,导航到 SQL 的 binn 文件夹(对于 2016 和 x64)是这样的:

C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Binn



然后,如果您使用默认实例,只需运行:
sqlservr.exe -m -q"Latin1_General_CI_AS"

或您想设置的任何排序规则。如果您有多个实例,还添加以下参数:
-s"<<YOUR_SQL_INSTANCE>>" e.g. -> sqlservr.exe -m -s"SQLEXP2014" -q"Latin1_General_CI_AS" 

希望这将帮助您解决您的问题:)

来源:

https://docs.microsoft.com/en-us/sql/relational-databases/collations/view-collation-information?view=sql-server-2017

https://www.mssqltips.com/sqlservertip/3519/changing-sql-server-collation-after-installation/

关于c# - 无法解决 equal to 操作中 "Cyrillic_General_CI_AS"和 "SQL_Latin1_General_CP1_CI_AS"之间的排序规则冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50267340/

相关文章:

asp.net-mvc - ASP.NET MVC : Reuse of View by two controller actions

C# 扩展索引器?

c# - 使 Point3D 成为从 Point2D 派生并实现 IPoint3D 接口(interface)的引用类型的原因?

c# - 如何在 C# 中以编程方式读取日志文件信息的 sql server mdf header

sql-server - 如何针对 RDS SQL Server 实例执行 SQL 查询

sql-server - ZombieCheck 异常 - 此 SqlTransaction 已完成;它不再可用——在简单提交期间

c# - Microsoft 图表、MVC 3 和 Razor

c# - 用于 C# 的最佳免费 Excel 编写器,用于将数据表输出到 excel

c# - 使用 libvlc 创建音频可视化工具

asp.net-mvc-3 - ASP.MVC 3 Razor 在 Html.PartialView 扩展中添加模型前缀