Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Cannot resolve collation conflict for concatenation operation.  [new]
tyyr
Guest
Здравствуйте!
есть два идентичных сервера SQL Server 2000, на разных машинах, разные IP.
версии практически одинаковые

Microsoft SQL Server  2000 - 8.00.2145 (Intel X86)   Jun 22 2005 20:26:20   Copyright (c) 1988-2003 Microsoft Corporation  Standard Edition on Windows NT 5.2 (Build 3790: Service Pack 2) 
Microsoft SQL Server  2000 - 8.00.2145 (Intel X86)   Jun 22 2005 20:26:20   Copyright (c) 1988-2003 Microsoft Corporation  Standard Edition on Windows NT 5.0 (Build 2195: Service Pack 4)


на первом выполняется запрос, а на втором выдает ошибку "Cannot resolve collation conflict for concatenation operation.":
SELECT '0x'+RIGHT(UPPER(master.dbo.fn_varbintohexstr(787)),4) 


в чем может быть причина?
10 сен 13, 19:34    [14822284]     Ответить | Цитировать Сообщить модератору
 Re: Cannot resolve collation conflict for concatenation operation.  [new]
zxc1257
Member

Откуда:
Сообщений: 71
tyyr,

select '0x' collate Cyrillic_General_CI_AS + 'fffa' collate Cyrillic_General_CS_AS


Сообщение 468, уровень 16, состояние 9, строка 2
Не удалось разрешить конфликт параметров сортировки между "Cyrillic_General_CS_AS" и "Cyrillic_General_CI_AS" в операции add.
10 сен 13, 19:41    [14822312]     Ответить | Цитировать Сообщить модератору
 Re: Cannot resolve collation conflict for concatenation operation.  [new]
Гость333
Member

Откуда:
Сообщений: 3683
tyyr
SELECT '0x'+RIGHT(UPPER(master.dbo.fn_varbintohexstr(787)),4)

В этом выражении строка '0x' имеет коллейшен текущей БД, а результат функции master.dbo.fn_varbintohexstr имеет коллейшен БД master.

Вам нужно привести всё к одному коллейшену, например, к текущей БД:
SELECT '0x'+RIGHT(UPPER(master.dbo.fn_varbintohexstr(787)),4) COLLATE DATABASE_DEFAULT
10 сен 13, 19:46    [14822327]     Ответить | Цитировать Сообщить модератору
 Re: Cannot resolve collation conflict for concatenation operation.  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
Гость333
tyyr
SELECT '0x'+RIGHT(UPPER(master.dbo.fn_varbintohexstr(787)),4)

В этом выражении строка '0x' имеет коллейшен текущей БД, а результат функции master.dbo.fn_varbintohexstr имеет коллейшен БД master.

Вам нужно привести всё к одному коллейшену, например, к текущей БД:
SELECT '0x'+RIGHT(UPPER(master.dbo.fn_varbintohexstr(787)),4) COLLATE DATABASE_DEFAULT
На SQL2000 нет никакого DATABASE_DEFAULT, ЕМНИП
10 сен 13, 19:53    [14822347]     Ответить | Цитировать Сообщить модератору
 Re: Cannot resolve collation conflict for concatenation operation.  [new]
Гость333
Member

Откуда:
Сообщений: 3683
iap
На SQL2000 нет никакого DATABASE_DEFAULT, ЕМНИП

Таки изменяет... ну разве что совсем чуть-чуть :-)
http://technet.microsoft.com/en-us/library/aa258237(v=sql.80).aspx
COLLATE
SQL Server 2000
Syntax
COLLATE {< collation_name > | database_default}
10 сен 13, 19:58    [14822355]     Ответить | Цитировать Сообщить модератору
 Re: Cannot resolve collation conflict for concatenation operation.  [new]
tyyr
Guest
Гость333
SELECT '0x'+RIGHT(UPPER(master.dbo.fn_varbintohexstr(787)),4) COLLATE DATABASE_DEFAULT

спасибо всем за ответы.
это решение работает.

я так понял на серверах различние настройки этого, из за этого в одном работает
а в другом нужно задавать collate
10 сен 13, 20:16    [14822426]     Ответить | Цитировать Сообщить модератору
 Re: Cannot resolve collation conflict for concatenation operation.  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
tyyr
Гость333
SELECT '0x'+RIGHT(UPPER(master.dbo.fn_varbintohexstr(787)),4) COLLATE DATABASE_DEFAULT

спасибо всем за ответы.
это решение работает.

я так понял на серверах различние настройки этого, из за этого в одном работает
а в другом нужно задавать collate
Не на серверах, а в базах.
10 сен 13, 21:48    [14822732]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить