Конфликт сопоставления в SSRS - PullRequest
0 голосов
/ 12 июня 2018

В настоящее время используется SQL Server 2014 и возникла проблема с сопоставлением хранимой процедуры.В настоящее время у меня есть отчет, который запускает хранимую процедуру, код работает нормально при запуске в SSMS, но я заметил, что, хотя он выполняется как часть отчета SSRS, существует проблема сопоставления между Latin1_General_CI_AS_KS_WS и Latin1_General_CI_AS.

Для моей базы данных установлено значение Latin1_General_CI_AS, а также для всех столбцов таблицы, поэтому я не знаю, куда она ведет это Latin1_General_CI_AS_KS_WS несоответствие. Может ли кто-нибудь предложить какие-либо предложения?

Спасибо

1 Ответ

0 голосов
/ 12 июня 2018

Latin1_General_CI_AS_KS_WS - это сопоставление по умолчанию для SSRS.

Либо вы пишете SQL-запросы со свойством COLLATE для всех ваших сравнений строк, либо переустанавливаете SSRS с правильным сопоставлением по умолчанию.

Имейте в виду, что если вы используете ALTER DATABASE для изменения параметров сортировки базы данных SSRS, это не повлияет на уже созданные объекты, только на новые с этого момента.


Если это проблема сДля определенного столбца (а не всей базы данных) вы можете выполнить этот запрос, чтобы проверить текущее сопоставление всех столбцов.

SELECT 
    ColumnName = QUOTENAME(s.name) + '.' + QUOTENAME(t.name) + '.' + QUOTENAME(c.name),
    Collation = c.collation_name
FROM 
    sys.schemas s
    INNER JOIN sys.tables t ON t.schema_id = s.schema_id
    INNER JOIN sys.columns c ON c.object_id = t.object_id
WHERE 
    C.collation_name is not null
ORDER BY 
    1

Затем используйте ALTER TABLE <tablename> ALTER COLUMN <columnname> <type> COLLATE <newCollate>, чтобы изменить его.

...