Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / проблема с парзингом XML / 25 сообщений из 29, страница 1 из 2
06.10.2021, 16:33
    #40102388
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с парзингом XML
Господа, у меня есть скрипт, который вызывает процедуру, внутри которой разиться XML. Код процедуры не находится под моим контролем. Я лишь ее вызываю. Когда я запускаю скрипт SSMS и вызываю в нем процедуру, все работает нормально. Когда я вставляю скрипт в джобу, изнутри процедуры прилетает.

"XML parsing: line 10, character 27, unexpected end of input"

Текст русский есть в XML. Специально закодированных символов нет.

Отличается контекст. Другой юзер.

Что тут не так, почему при запуске от меня работает, от другого юзера в джобе нет.

Не выглядит так, что есть проблемы с правами. Есть проблема с какими-то настройками. Возможно с коллешном, кодировкой, языком. Что тут можно сделать?
...
Рейтинг: 0 / 0
06.10.2021, 16:44
    #40102394
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с парзингом XML
При это в 10 строке вообще стоит

<EndDateTime>2021-08-07T21:17:00</EndDateTime>
...
Рейтинг: 0 / 0
06.10.2021, 17:03
    #40102403
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с парзингом XML
a_voronin
Господа, у меня есть скрипт, который вызывает процедуру, внутри которой разиться XML. Код процедуры не находится под моим контролем. Я лишь ее вызываю. Когда я запускаю скрипт SSMS и вызываю в нем процедуру, все работает нормально. Когда я вставляю скрипт в джобу, изнутри процедуры прилетает.

"XML parsing: line 10, character 27, unexpected end of input"

Текст русский есть в XML. Специально закодированных символов нет.

Отличается контекст. Другой юзер.

Что тут не так, почему при запуске от меня работает, от другого юзера в джобе нет.

Не выглядит так, что есть проблемы с правами. Есть проблема с какими-то настройками. Возможно с коллешном, кодировкой, языком. Что тут можно сделать?


ну, типа такого.
...
Рейтинг: 0 / 0
06.10.2021, 17:29
    #40102413
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с парзингом XML
a_voronin

Отличается контекст. Другой юзер.


сравните set-ы своей сессии и сессии sql job
полагаю, что дело в
"SET QUOTED_IDENTIFIER must be ON when you invoke XML data type methods."
link
...
Рейтинг: 0 / 0
06.10.2021, 17:34
    #40102415
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с парзингом XML
unexpected end of input бывает вот в таких случаях:
Код: sql
1.
2.
3.
4.
select cast(N'
<root>
<EndDateTime>2021-08-07T21:17:0'
as xml)


Код: plaintext
1.
Msg 9400, Level 16, State 1, Line 1
XML parsing: line 3, character 31, unexpected end of input

- наверное, где-то при передаче в джоб xml обрезается.
...
Рейтинг: 0 / 0
06.10.2021, 17:35
    #40102416
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с парзингом XML
komrad
a_voronin

Отличается контекст. Другой юзер.


сравните set-ы своей сессии и сессии sql job
полагаю, что дело в
"SET QUOTED_IDENTIFIER must be ON when you invoke XML data type methods."
link



Уже сделал

SET ANSI_NULLS, QUOTED_IDENTIFIER ON;
SET LANGUAGE Russian;
EXECUTE AS USER = '...';
...
Рейтинг: 0 / 0
06.10.2021, 17:48
    #40102425
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с парзингом XML
a_voronin,

обычно такое при усечении строки. Иногда двоичный ноль может строку обрезать, но тут вроде экранирование должно быть.
...
Рейтинг: 0 / 0
06.10.2021, 18:04
    #40102430
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с парзингом XML
a_voronin
Господа, у меня есть скрипт, который вызывает процедуру, внутри которой разиться XML. Код процедуры не находится под моим контролем. Я лишь ее вызываю.

в ХП XML передается каким типом?
Как Вы определяете XML в SSMS и в шаге джоба?
...
Рейтинг: 0 / 0
06.10.2021, 18:12
    #40102435
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с парзингом XML
Лучше пущай расскажет откель он этот xml получает.
Файл, нибось, читает...
...
Рейтинг: 0 / 0
07.10.2021, 12:10
    #40102641
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с парзингом XML
aleks222,
xml достается запросом с oracle.
...
Рейтинг: 0 / 0
07.10.2021, 13:09
    #40102679
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с парзингом XML
a_voronin,

а если попытаться получить эту ошибку в SSMS при помощи настроек сеанса?
...
Рейтинг: 0 / 0
07.10.2021, 13:42
    #40102694
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с парзингом XML
Владислав Колосов
a_voronin,

а если попытаться получить эту ошибку в SSMS при помощи настроек сеанса?


Эта ошибка была в SSMS пока я не сделал вот так

set @Document = REPLACE(@Document, N'<?xml version="1.0" encoding="UTF-8"?>', '<?xml version="1.0" encoding="UTF-16"?>');

Тут вот в чем дело. Вызов exec происходит через LinkedServer и кербероса нет
...
Рейтинг: 0 / 0
07.10.2021, 13:43
    #40102695
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с парзингом XML
a_voronin,

ошибка происходит при присваивании nvarchar(max) параметру или переменной типа xml
...
Рейтинг: 0 / 0
07.10.2021, 13:53
    #40102697
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с парзингом XML
a_voronin
aleks222,
xml достается запросом с oracle.

Энто, все равно, что файл читать.
Зависит от региональных настроек профиля пользователя Windows.
Обеспечьте одинаковые - и будет вам щастье.

ЗЫ. Ну или, завязывайте с varchar. Nvarchar и никаких проблем.
...
Рейтинг: 0 / 0
07.10.2021, 14:14
    #40102706
andy st
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с парзингом XML
set textsize 1000000000 в джобе в том же шаге перед вызовом процедуры стоит?
...
Рейтинг: 0 / 0
07.10.2021, 14:20
    #40102713
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с парзингом XML
andy st
set textsize 1000000000 в джобе в том же шаге перед вызовом процедуры стоит?

a_voronin

"XML parsing: line 10, character 27, unexpected end of input"


Рановато про два гига беспокоиться.
...
Рейтинг: 0 / 0
07.10.2021, 14:24
    #40102717
andy st
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с парзингом XML
aleks222
andy st
set textsize 1000000000 в джобе в том же шаге перед вызовом процедуры стоит?

a_voronin

"XML parsing: line 10, character 27, unexpected end of input"


Рановато про два гига беспокоиться.

Я такое словил, когда по умолчанию в агенте nvarchar(max) урезался до 512 символов.
Тогда начал об этом беспокоиться во всех регламентных заданиях, которые тащуть блобы со сторонних источников
...
Рейтинг: 0 / 0
07.10.2021, 14:39
    #40102726
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с парзингом XML
aleks222
andy st
set textsize 1000000000 в джобе в том же шаге перед вызовом процедуры стоит?

a_voronin

"XML parsing: line 10, character 27, unexpected end of input"


Рановато про два гига беспокоиться.


Там никакими гигами не пахнет. размер порядка 426244 байт . К 1 мб не более
...
Рейтинг: 0 / 0
07.10.2021, 14:41
    #40102727
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с парзингом XML
andy st
aleks222
пропущено...

пропущено...


Рановато про два гига беспокоиться.

Я такое словил, когда по умолчанию в агенте nvarchar(max) урезался до 512 символов.
Тогда начал об этом беспокоиться во всех регламентных заданиях, которые тащуть блобы со сторонних источников


поведение скрипта меняет про таких манипуляциях
EXEC ('
SET ANSI_NULLS, QUOTED_IDENTIFIER ON;
SET LANGUAGE Russian;
SET DATEFORMAT ymd;
--EXECUTE AS USER = ''...'';

EXEC [DB].[..].[..] ?', @Document) AT [..];


В таком виде он работает в SSMS но не в джобе
...
Рейтинг: 0 / 0
07.10.2021, 15:00
    #40102747
andy st
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с парзингом XML
a_voronin,
в студии textsize по умолчанию большой
а если из студии перед процедурой поставить SET TEXTSIZE 1024 без всего другого ошибка не повторится?
...
Рейтинг: 0 / 0
07.10.2021, 15:13
    #40102753
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с парзингом XML
andy st
a_voronin,
в студии textsize по умолчанию большой
а если из студии перед процедурой поставить SET TEXTSIZE 1024 без всего другого ошибка не повторится?


Я уже сказал выше, что ошибку можно повторить в студии убрав

set @Document = REPLACE(@Document, N'<?xml version="1.0" encoding="UTF-8"?>', '<?xml version="1.0" encoding="UTF-16"?>');

Мне удалось запустить скрипт перенеся джоб на тот сервер, где вызывается конечная процедура.

Выглядит так, что при вызове через linked server меняет текущий юзер и региональные настройки.
...
Рейтинг: 0 / 0
07.10.2021, 15:44
    #40102766
andy st
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с парзингом XML
можно попробовать помедитировать на
Код: sql
1.
insert into localtable (str) exec ('select @@LANGUAGE') at [..]


Код: sql
1.
insert into localtable (str) exec('select * from sys.dm_exec_sessions where session_id = @@spid for xml path') at [..]


запущенные из джоба
...
Рейтинг: 0 / 0
07.10.2021, 16:18
    #40102782
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с парзингом XML
andy st
можно попробовать помедитировать на
Код: sql
1.
insert into localtable (str) exec ('select @@LANGUAGE') at [..]


Код: sql
1.
insert into localtable (str) exec('select * from sys.dm_exec_sessions where session_id = @@spid for xml path') at [..]


запущенные из джоба


Медитировать даже полезно.
Только вот... разбор/генерация ХМЛ от языковых настроек MS SQL не зависит от слова совсем.

ЗЫ. Если же у тредстартера самопальный парсер - тут наука бессильна.
...
Рейтинг: 0 / 0
07.10.2021, 16:47
    #40102794
andy st
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с парзингом XML
aleks222
Только вот... разбор/генерация ХМЛ от языковых настроек MS SQL не зависит от слова совсем.

может быть. не ковырял парсер настолько сильно, чтобы это подтвердить или опровергнуть :)
но я там для медитации еще и настройки сессии и логины предложил слить.

aleks222
ЗЫ. Если же у тредстартера самопальный парсер - тут наука бессильна.

ошибка вроде стандартная mssql и вылетает на этапе присвоения строки типу xml
повторяется на ура
хотя самописный парсер может запросто мимикрировать под встроенный :)

Под 2019 сервер с его поддержкой UTF-8 вообще можно интересности творить. Может что с этим связано
...
Рейтинг: 0 / 0
08.10.2021, 13:09
    #40103033
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с парзингом XML
a_voronin,

в таком случае остается попробовать изменить дефолтные настройки сеанса для сервера.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / проблема с парзингом XML / 25 сообщений из 29, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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