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

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

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

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

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

оставьте в проверяемой строке один непечатный символ, например 10.
...
Рейтинг: 0 / 0
SSAS 2012. Ошибка процессинга &#xA
    #40136882
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
SSAS 2012. Ошибка процессинга &#xA
    #40136892
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
SSAS 2012. Ошибка процессинга &#xA
    #40136903
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
SSAS 2012. Ошибка процессинга &#xA
    #40136921
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLex,

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

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

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


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


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