Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / SSAS 2012. Ошибка процессинга &#xA / 14 сообщений из 14, страница 1 из 1
28.02.2022, 12:15
    #40136678
yagrus3
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSAS 2012. Ошибка процессинга &#xA
Hello world!
В ходе процессинга измерения в OLAP-кубе получаю ошибку. См. скрин.

Подскажите,
1. что это это за символ?
2. как его найти в SQL-таблице, как правильно написать LIKE?
3. почему он влияет на XML, который строит SSAS?
...
Рейтинг: 0 / 0
28.02.2022, 12:41
    #40136681
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSAS 2012. Ошибка процессинга &#xA
yagrus3,

это символ возврата каретки.
...
Рейтинг: 0 / 0
28.02.2022, 12:48
    #40136682
yagrus3
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSAS 2012. Ошибка процессинга &#xA
Владислав Колосов, а почему он ломает XML?
...
Рейтинг: 0 / 0
28.02.2022, 12:48
    #40136683
ShIgor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSAS 2012. Ошибка процессинга &#xA
yagrus3,

дарю:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
with cte as (
select
  [id],
  [подозрительное поле] [field],
  0 as [lev]
from 
  [таблица]
where
     [field] like '%['+CHAR(1)+'-'+CHAR(8)+']%' 
  or [field] like '%['+CHAR(9)+']%' 
  or [field] like '%['+CHAR(10)+'-'+CHAR(13)+']%' 
  or [field] like '%['+CHAR(14)+']%' 
  or [field] like '%['+CHAR(15)+'-'+CHAR(31)+']%'
union all
select
  cte.[id],
  cast(replace(cte.[field], char([lev]+1), '~') as varchar(80)) [field],
  cte.[lev]+1 [lev]
from cte
where cte.[lev]+1 < 32
)
update [таблица] set [field] = cte.[field]
from
  cte
  inner join [таблица] on [таблица].[id] = cte.[id]
where
  cte.[lev] = 31



но в настройках поля у имени атрибута измерения есть опция InvalidXMLCharacters - можете поиграть с ней.

Владислав Колосов, - капитан очевидность, только возврат каретки это 0xD, 0xA - это перевод строки
...
Рейтинг: 0 / 0
28.02.2022, 14:54
    #40136698
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSAS 2012. Ошибка процессинга &#xA
ShIgor,

автор0xA - это перевод строки
Да, попутал.
...
Рейтинг: 0 / 0
28.02.2022, 15:27
    #40136710
ShIgor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSAS 2012. Ошибка процессинга &#xA
Владислав Колосов,

вот объясните лучше почему не работает сравнение с [field] like '%['+CHAR(1)+'-'+CHAR(31)+']%'
2 символа, 9 и 14 делают невозможным написать сравнение без or, одним условием.
...
Рейтинг: 0 / 0
28.02.2022, 16:04
    #40136728
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSAS 2012. Ошибка процессинга &#xA
ShIgor
Владислав Колосов,

вот объясните лучше почему не работает сравнение с [field] like '%['+CHAR(1)+'-'+CHAR(31)+']%'
2 символа, 9 и 14 делают невозможным написать сравнение без or, одним условием.


а что значит "не работает"?


Никаких проблем like %...% и символами 1,31, 9 или 14 не наблюдается
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
declare 
	@ch1 char(1) = char(1)
	, @ch31 char(1) = char(31)
	, @ch9 char(1) = char(9)
	, @ch14 char(1) = char(14)

	


declare @s varchar(100) = 'bla-bla-' + @ch9 + '[' + @ch1 + '-' + @ch31 + ']' + @ch14 + '-bla-bla'



select 'Ok'
where
	@s like '%[' + @ch1 + '-' + @ch31 + ']%'
...
Рейтинг: 0 / 0
01.03.2022, 09:04
    #40136827
ShIgor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSAS 2012. Ошибка процессинга &#xA
msLex,

оставьте в проверяемой строке один непечатный символ, например 10.
...
Рейтинг: 0 / 0
01.03.2022, 12:58
    #40136882
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSAS 2012. Ошибка процессинга &#xA
ShIgor
msLex,

оставьте в проверяемой строке один непечатный символ, например 10.



Т.е. строка состоящая только из 1 символа char(10) ?

Никаких проблем также не наблюдается

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
declare 
	@ch1 char(1) = char(1)
	, @ch31 char(1) = char(31)
	, @ch9 char(1) = char(9)
	, @ch14 char(1) = char(14)
	, @ch10 char(1) = char(10)
	


declare @s varchar(100) = @ch10


select 'Ok'
where
	@s like '%[' + @ch1 + '-' + @ch31 + ']%'



или строка с символом char(10) и подходящая под паттерн поиска?

тоже проблем не наблюдаю
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
declare 
	@ch1 char(1) = char(1)
	, @ch31 char(1) = char(31)
	, @ch9 char(1) = char(9)
	, @ch14 char(1) = char(14)
	, @ch10 char(1) = char(10)
	


declare @s varchar(100) = 'bla-bla-' + @ch9 + '[' + @ch1 + '-' + @ch31 + ']' + @ch14 + '-bla-bla ' + @ch10



select 'Ok'
where
	@s like '%[' + @ch1 + '-' + @ch31 + ']%'




Если есть конкретный пример неверной работы like, лучше приведите репро (шаблон уже есть).
А так пока выгладить, что где-то что-то не сработало, и не разобравшись вы решили, что проблема в like.
...
Рейтинг: 0 / 0
01.03.2022, 14:05
    #40136892
ShIgor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSAS 2012. Ошибка процессинга &#xA
msLex,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
declare	@ch1 char(1) = char(1)
	, @ch31 char(1) = char(31)
	, @ch10 char(1) = char(10)
	, @ch13 char(1) = char(13)

declare @s varchar(100) = 'bla-bla-' + @ch10 + '-bla-bla'

select 'Ok' where @s like '%[' + @ch1 + '-' + @ch31 + ']%' 
select 'Ok' where @s like '%[' + @ch1 + '-' + @ch31 + ']%' or @s like '%[' + @ch10 + '-' + @ch13 + ']%'
...
Рейтинг: 0 / 0
01.03.2022, 14:59
    #40136903
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSAS 2012. Ошибка процессинга &#xA
ShIgor,

Все, теперь я понял в чем проблема.

Вы ожидаете диапазон по "номерам" символов.
На самом же деле, диапазоны нужно учитывать по расположению символов в коллейтах


В стандартных коллейтах, символы с 9 по 13 идут после 31.

Вот в каком порядке идут первые 31 символа

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
; with t as (
	select top 31 
		rn = ROW_NUMBER() over(order by 1/0)
	from sys.objects
)

select 'char(' + cast(rn as varchar(2)) + ')'
from t 
order by char(rn) 





если вы хотите все сравнения делать по № символа, то используйте бинарный коллейт

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
declare	@ch1 char(1) = char(1)
	, @ch31 char(1) = char(31)
	, @ch10 char(1) = char(10)
	, @ch13 char(1) = char(13)

declare @s varchar(100) = 'bla-bla-' + @ch10 + '-bla-bla'

select 'Ok' where @s like '%[' + @ch1 + '-' + @ch31 + ']%'  collate Cyrillic_General_100_BIN2




ЗЫ

Небольшой пример, почему порядок символов в коллейте важен и отличается от их бинарного кода

Код: sql
1.
2.
3.
4.
declare @s varchar(100) = 'а'

select 'Ok' where @s like '%[А-Я]%'  collate Cyrillic_General_100_CI_AS
select 'Ok' where @s like '%[А-Я]%'  collate Cyrillic_General_100_CS_AS
...
Рейтинг: 0 / 0
01.03.2022, 16:42
    #40136921
ShIgor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSAS 2012. Ошибка процессинга &#xA
msLex,

здорово, это хоть что-то объясняет, спасибо.
там есть еще какая-то засада, я уже не вспомню, писал это уж лет 10 назад как.
диапазонов в нашей колэйшн получается 3, у меня же их 5.
помню что то-ли какие-то сочетания символов не срабатывали, то-ли их последовательность, то-ли типы полей.
...
Рейтинг: 0 / 0
01.03.2022, 16:54
    #40136925
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSAS 2012. Ошибка процессинга &#xA
ShIgor
msLex,

здорово, это хоть что-то объясняет, спасибо.
там есть еще какая-то засада, я уже не вспомню, писал это уж лет 10 назад как.
диапазонов в нашей колэйшн получается 3, у меня же их 5.
помню что то-ли какие-то сочетания символов не срабатывали, то-ли их последовательность, то-ли типы полей.

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


использование bin коллейта должно все это решать.
...
Рейтинг: 0 / 0
02.03.2022, 11:34
    #40137059
yagrus3
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SSAS 2012. Ошибка процессинга &#xA
Спасибо всем за помощь!
В моем случае проблема была в том, что на диске оказалось мало места.
Сначала пробовал избавиться от проблемных символов, затем перезапуск службы SSAS. Не помогло.
После того, как освободил порядка 100Гб ошибка пропала.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / SSAS 2012. Ошибка процессинга &#xA / 14 сообщений из 14, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]