У меня есть скрипт, который переключается между двумя базами данных: master & 'B'.
Мастер базы данных имеет параметры сортировки 'SQL_Latin1_General_CP1_CI_AS'
База данных B имеет параметры сортировки 'Latin1_General_CI_AS'
Я пытался использовать команды COLLATE и CAST, но пока безрезультатно.
USE B
DECLARE @ProductsUserName varchar(200)
SET @ProductsUserName = 'SomeValue'
USE master
DECLARE @UserNameMaster varchar(200) = @ProductsUserName COLLATE SQL_Latin1_General_CP1_CI_AS
DECLARE @GrantViewServerStatement varchar(200) = 'GRANT VIEW SERVER STATE TO ' + @UserNameMaster
Запрос взорвется в последней строке и выдаст ошибку:
'Неявное преобразованиезначения varchar для varchar невозможно выполнить, поскольку сопоставление значения не разрешено из-за конфликта сопоставления между «Latin1_General_CI_AS» и «SQL_Latin1_General_CP1_CI_AS» в операторе добавления. '
Очевидно, что существует некоторая проблема с использованием'+ 'оператор между двумя varchars, которые имеют разные параметры сортировки.Но не уверен, как «преобразовать» переменную в новое сопоставление!