Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Не удалось разрешить конфликт параметров сортировки между "Cyrillic_General_CI_AS"...  [new]
googlogmob
Member

Откуда: Украина, Киев-Одесса
Сообщений: 182
Не нашел в инете решения по этой проблеме
Установлен новый экземпляр сервера. Через линкованый сервер перелиты некоторые таблицы
Запрос, который без проблем выполнялся на "старом" сервере, на "новом" завершается с ошибкой

Запрос:
DECLARE @banc TABLE (mask1 NVARCHAR(100), mask2 NVARCHAR(100),name NVARCHAR(100));
INSERT @banc (mask1,mask2, name) VALUES   

  (N'%рога%', N'%копыта%', N'Рога и копыта') ;

   SELECT month (t.[DatePosting]) as 'Месяц', t.LB1 as 'ЛБ1', t.vid as 'Вид', b.name as 'Банк', sum (t.[76]) as 'Платежи'
           FROM [SAO_1Cdata].[dbo].[76]  t
           right JOIN @banc b ON t.externalchannel LIKE b.mask1  OR t.Beneficiary LIKE b.mask1 OR
		                   t.externalchannel  LIKE  b.mask2 OR t.Beneficiary   LIKE  b.mask2 
  GROUP BY month (t.[DatePosting]), t.LB1,t.vid, b.name


ошибка:
Сообщение 468, уровень 16, состояние 9, строка 30
Не удалось разрешить конфликт параметров сортировки между "Cyrillic_General_CI_AS" и "Latin1_General_CI_AS_KS_WS" в операции like.

На "старом" и "новом" серверах установлен "Cyrillic_General_CI_AS"
22 май 14, 18:34    [16057370]     Ответить | Цитировать Сообщить модератору
 Re: Не удалось разрешить конфликт параметров сортировки между "Cyrillic_General_CI_AS"...  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
googlogmob,

collation, начиная еще с 2000-ого сервера можно устанавливать каждому конкретному столбцу.
проверить можно через sys.columns.
22 май 14, 18:51    [16057440]     Ответить | Цитировать Сообщить модератору
 Re: Не удалось разрешить конфликт параметров сортировки между "Cyrillic_General_CI_AS"...  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8805
автор
На "старом" и "новом" серверах установлен "Cyrillic_General_CI_AS"


автор
Через линкованый сервер перелиты некоторые таблицы

Чудес не бывает, порядок сортировки сам по себе не изменяется. Значит таблицы были созданы неверно или первая цитата не соответствует истине.
23 май 14, 12:04    [16060511]     Ответить | Цитировать Сообщить модератору
 Re: Не удалось разрешить конфликт параметров сортировки между "Cyrillic_General_CI_AS"...  [new]
Glory
Member

Откуда:
Сообщений: 104751
googlogmob
Через линкованый сервер перелиты некоторые таблицы

И с каким collate "перелиты" ?
23 май 14, 12:45    [16060837]     Ответить | Цитировать Сообщить модератору
 Re: Не удалось разрешить конфликт параметров сортировки между "Cyrillic_General_CI_AS"...  [new]
o-o
Guest
как вариант, ТС выполняет свой код в базе с коллэйшеном, отличным от коллэйшена той самой базы SAO_1Cdata.
вот пример:
инстанс имеет коллэйшен Cyrillic_General_CI_AS
в нем 2 базы:

test -- унаследовала коллэйшен сервера, в ней же находится таблица dbo.client_cyr со столбцами с коллэйшеном по умолчанию, т.е. сплошной Cyrillic_General_CI_AS

test_Latin1_General_CI_AS_KS_WS -- создана спецом с коллэйшеном Latin1_General_CI_AS_KS_WS.

выполняю один и тот же код в обеих базах, в первой все ок, во второй та самая ошибка:
select serverproperty('collation') as server_coll, 
       databasepropertyex('test', 'collation') as test_db_coll,
       databasepropertyex('test_Latin1_General_CI_AS_KS_WS', 
       'collation') as test_Latin1_General_CI_AS_KS_WS_db_coll;
go
	
DECLARE @banc TABLE (mask1 NVARCHAR(100), mask2 NVARCHAR(100),
        name NVARCHAR(100));
INSERT @banc (mask1,mask2, name) VALUES   
(N'%рога%', N'%копыта%', N'Рога и копыта') ;
    
select *
from @banc b join test.dbo.client_cyr c on c.FirstName like b.mask1


короче: табличная переменная наследует коллэйшен базы

К сообщению приложен файл. Размер - 69Kb
23 май 14, 13:54    [16061328]     Ответить | Цитировать Сообщить модератору
 Re: Не удалось разрешить конфликт параметров сортировки между "Cyrillic_General_CI_AS"...  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4893
Проверьте с каким Collation создана tempdb. На временных таблицах #T это имело значение, на @T не уверен, предлагаю вам проверить. В общем, я сталкивался с такой проблемой и она была вызвана нестыковкой Collation текущей базы и базы временных таблиц. Изменить Collation можно только перестановкой сервера (типа Upgrade) с сохранением текущих баз.
23 май 14, 14:50    [16061770]     Ответить | Цитировать Сообщить модератору
 Re: Не удалось разрешить конфликт параметров сортировки между "Cyrillic_General_CI_AS"...  [new]
o-o
Guest
a_voronin,

типа нечитатель?
в моем примере коллейшен сервера (т.е. его системных баз) тот самый Cyrillic_General_CI_AS,
а ошибку я получаю.
ибо поля табличной переменной унаследовали коллэйшен базы,
где код выполняется. а не коллэйшен Tempdb
23 май 14, 14:55    [16061803]     Ответить | Цитировать Сообщить модератору
 Re: Не удалось разрешить конфликт параметров сортировки между "Cyrillic_General_CI_AS"...  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
o-o,

COLLATE сервера используется как значение по умолчанию при создании новой базы.
ЕМНИП, больше нигде

Табличные переменные хранятся аналогично временным таблицам в tempdb
23 май 14, 14:59    [16061841]     Ответить | Цитировать Сообщить модератору
 Re: Не удалось разрешить конфликт параметров сортировки между "Cyrillic_General_CI_AS"...  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
iap
o-o,

COLLATE сервера используется как значение по умолчанию при создании новой базы.
ЕМНИП, больше нигде

Табличные переменные хранятся аналогично временным таблицам в tempdb
Может, и приврал про "значение по умолчанию новых баз", ибо они получаются из базы model.
23 май 14, 15:01    [16061860]     Ответить | Цитировать Сообщить модератору
 Re: Не удалось разрешить конфликт параметров сортировки между "Cyrillic_General_CI_AS"...  [new]
o-o
Guest
iap,

вы пробовали мой случай воспроизвести?

я где-то спорю, что табличные переменные хранятся в Tempdb?

вы можете рассказать, как сменить коллэйшен системныx баз,
кроме тех "способов", к-ыми меняется коллэйшен сервера?
(т.е. переустановка либо

Rebuild the master database specifying the new collation in the SQLCOLLATION property of the setup command. For example:

Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=InstanceName
/SQLSYSADMINACCOUNTS=accounts /[ SAPWD= StrongPassword ]
/SQLCOLLATION=CollationName

что примерно то же самое по последствиям)???

The server collation acts as the default collation for all system databases that are installed with the instance of SQL Server, and also any newly created user databases.
Set or Change the Server Collation
23 май 14, 15:08    [16061905]     Ответить | Цитировать Сообщить модератору
 Re: Не удалось разрешить конфликт параметров сортировки между "Cyrillic_General_CI_AS"...  [new]
o-o
Guest
iap
iap
o-o,

COLLATE сервера используется как значение по умолчанию при создании новой базы.
ЕМНИП, больше нигде

Табличные переменные хранятся аналогично временным таблицам в tempdb
Может, и приврал про "значение по умолчанию новых баз", ибо они получаются из базы model.


а вы пробовали сменить коллэйшен базы model?
да и любой другой системной базы?
use master
go

alter database model collate Cyrillic_General_CI_AS
go
----------------------
Msg 3708, Level 16, State 5, Line 2
Cannot alter the database 'model' because it is a system database.
23 май 14, 15:12    [16061944]     Ответить | Цитировать Сообщить модератору
 Re: Не удалось разрешить конфликт параметров сортировки между "Cyrillic_General_CI_AS"...  [new]
o-o
Guest
дошло, как убедить.
подтверждающая картинка:

К сообщению приложен файл. Размер - 39Kb
23 май 14, 15:21    [16062018]     Ответить | Цитировать Сообщить модератору
 Re: Не удалось разрешить конфликт параметров сортировки между "Cyrillic_General_CI_AS"...  [new]
googlogmob
Member

Откуда: Украина, Киев-Одесса
Сообщений: 182
А каким образом можно решить проблему?
в SAO_1Cdata tempbd используется Cyrillic_General_CI_AS

К сообщению приложен файл. Размер - 65Kb
26 май 14, 15:53    [16074404]     Ответить | Цитировать Сообщить модератору
 Re: Не удалось разрешить конфликт параметров сортировки между "Cyrillic_General_CI_AS"...  [new]
googlogmob
Member

Откуда: Украина, Киев-Одесса
Сообщений: 182


К сообщению приложен файл. Размер - 81Kb
26 май 14, 15:54    [16074409]     Ответить | Цитировать Сообщить модератору
 Re: Не удалось разрешить конфликт параметров сортировки между "Cyrillic_General_CI_AS"...  [new]
Glory
Member

Откуда:
Сообщений: 104751
googlogmob
А каким образом можно решить проблему?

Создавать объекты с одинаковыми коллейтами.
Или указывать коллейт в операциях сравнения.
26 май 14, 15:56    [16074434]     Ответить | Цитировать Сообщить модератору
 Re: Не удалось разрешить конфликт параметров сортировки между "Cyrillic_General_CI_AS"...  [new]
googlogmob
Member

Откуда: Украина, Киев-Одесса
Сообщений: 182
Glory
googlogmob
А каким образом можно решить проблему?

Создавать объекты с одинаковыми коллейтами.
Или указывать коллейт в операциях сравнения.


сейчас приходится указывать коллейт в запросах
Но в какой BD указан Latin? В tembbd Cyrillic_General_CI_AS ( в SAO_1Cdata также Cyrillic_General_CI_AS)
26 май 14, 16:02    [16074498]     Ответить | Цитировать Сообщить модератору
 Re: Не удалось разрешить конфликт параметров сортировки между "Cyrillic_General_CI_AS"...  [new]
Glory
Member

Откуда:
Сообщений: 104751
googlogmob
Но в какой BD указан Latin?

Сраниваются не базы данных, а конкретные поля конкретных таблиц.
Найдите, сравнение каких полей вызывает ошибку.
Выясните, почему эти поля имеют разные коллейты.
26 май 14, 16:04    [16074522]     Ответить | Цитировать Сообщить модератору
 Re: Не удалось разрешить конфликт параметров сортировки между "Cyrillic_General_CI_AS"...  [new]
o-o
Guest
googlogmob
А каким образом можно решить проблему?
в SAO_1Cdata tempbd используется Cyrillic_General_CI_AS


вот что вы пристали к tempdb.
выполните ровно там, где выдается ошибка:
select db_name(), databasepropertyex(DB_NAME(), 'collation')
26 май 14, 16:37    [16074790]     Ответить | Цитировать Сообщить модератору
 Re: Не удалось разрешить конфликт параметров сортировки между "Cyrillic_General_CI_AS"...  [new]
o-o
Guest
либо:
выполните вот такое
select name, collation_name 
from sys.databases
where collation_name = 'Latin1_General_CI_AS_KS_WS'


а я отгадаю, в какой же базе вы выполняете свой запрос.
у меня на сей супер коллэйшен выдались базы репортинга, у вас, поди, тоже самое
26 май 14, 16:41    [16074825]     Ответить | Цитировать Сообщить модератору
 Re: Не удалось разрешить конфликт параметров сортировки между "Cyrillic_General_CI_AS"...  [new]
o-o
Guest
googlogmob
А каким образом можно решить проблему?


DECLARE @banc TABLE (mask1 NVARCHAR(100) collate Cyrillic_General_CI_AS, 
                     mask2 NVARCHAR(100) collate Cyrillic_General_CI_AS,
                     name  NVARCHAR(100) collate Cyrillic_General_CI_AS);
26 май 14, 16:44    [16074843]     Ответить | Цитировать Сообщить модератору
 Re: Не удалось разрешить конфликт параметров сортировки между "Cyrillic_General_CI_AS"...  [new]
googlogmob
Member

Откуда: Украина, Киев-Одесса
Сообщений: 182
o-o
либо:
выполните вот такое
select name, collation_name 
from sys.databases
where collation_name = 'Latin1_General_CI_AS_KS_WS'


а я отгадаю, в какой же базе вы выполняете свой запрос.
у меня на сей супер коллэйшен выдались базы репортинга, у вас, поди, тоже самое


не возвращает ни одной записи..

сейчас и приходится через: :(
DECLARE @banc TABLE (mask1 NVARCHAR(100) collate Cyrillic_General_CI_AS, 
                     mask2 NVARCHAR(100) collate Cyrillic_General_CI_AS,
                     name  NVARCHAR(100) collate Cyrillic_General_CI_AS);
26 май 14, 17:20    [16075126]     Ответить | Цитировать Сообщить модератору
 Re: Не удалось разрешить конфликт параметров сортировки между "Cyrillic_General_CI_AS"...  [new]
Glory
Member

Откуда:
Сообщений: 104751
googlogmob
сейчас и приходится через: :(

BOL

collation_definition
Is the collation of the column that is made up of a Microsoft Windows locale and a comparison style, a Windows locale and the binary notation, or a Microsoft SQL Server collation. If collation_definition is not specified, the column inherits the collation of the current database.

Если вы уверяте, что у вас все базы с Cyrillic_General_CI_AS, то тогда "проблема" с " Через линкованый сервер перелиты некоторые таблицы"
26 май 14, 17:23    [16075142]     Ответить | Цитировать Сообщить модератору
 Re: Не удалось разрешить конфликт параметров сортировки между "Cyrillic_General_CI_AS"...  [new]
googlogmob
Member

Откуда: Украина, Киев-Одесса
Сообщений: 182
Glory
googlogmob
Но в какой BD указан Latin?

Сраниваются не базы данных, а конкретные поля конкретных таблиц.
Найдите, сравнение каких полей вызывает ошибку.
Выясните, почему эти поля имеют разные коллейты.


Таки да.. Столбцы в Latin..

Наверное проще создать новую БД и перелить в нее значения с нужным коллейт

К сообщению приложен файл. Размер - 69Kb
26 май 14, 17:27    [16075173]     Ответить | Цитировать Сообщить модератору
 Re: Не удалось разрешить конфликт параметров сортировки между "Cyrillic_General_CI_AS"...  [new]
o-o
Guest
если все затрагиваемые поля nvarchar,
то можно просто поменять коллэйшен
26 май 14, 17:30    [16075188]     Ответить | Цитировать Сообщить модератору
 Re: Не удалось разрешить конфликт параметров сортировки между "Cyrillic_General_CI_AS"...  [new]
googlogmob
Member

Откуда: Украина, Киев-Одесса
Сообщений: 182
o-o
если все затрагиваемые поля nvarchar,
то можно просто поменять коллэйшен


да, nvarchar.
через alter table? если не сложно, напишите шаблон текста запроса
26 май 14, 17:32    [16075202]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить