Не удается разрешить конфликт сопоставления между "Cyrillic_General_CI_AS" и "SQL_Latin1_General_CP1_CI_AS" в операции равно - PullRequest
0 голосов
/ 10 мая 2018

MS SQL сервер 2017

asp.net core 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

Нет ошибок, просто вернуть значение.

Как я могу решить сопоставление?

1 Ответ

0 голосов
/ 25 июля 2018

Скорее всего, ваши системные базы данных имеют разную сортировку.

Вы можете проверить это, выполнив следующий запрос в вашей студии SQL Management:

SELECT name, collation_name  
FROM sys.databases  

Также в неосновных базах данных вы можете использовать щелчок правой кнопкой мыши -> Свойства -> Общие -> Обслуживание, и вы увидите Collation как последний вариант.

Неосновные могут быть изменены с помощью этого запроса:

USE master;  
GO  
ALTER DATABASE <<YOUR_DATABASE_OTHER_THAN_MASTER>>
COLLATE Latin1_General_CI_AS ;  
GO 

Если вам нужно сменить мастер (как я), вы не сможете через SQL Management studio. Самым простым способом для меня было остановить его, как и все службы SQL, переход к папке binn в SQL (для 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/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...