Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 sp_OACreate лимиты  [new]
sp_OACreate
Guest
Declare @Object as Int;
Declare @ResponseText as Varchar(8000);
Declare @Url as Varchar(MAX);

set @Url = 'http://mysite.ru/cgi-bin/my_xml.cgi'

Exec sp_OACreate 'MSXML2.XMLHTTP', @Object OUT;
Exec sp_OAMethod @Object, 'open', NULL, 'get', @Url, 'false'
Exec sp_OAMethod @Object, 'send'
Exec sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT
Exec sp_OADestroy @Object

SELECT @ResponseText

Имеется XML длиной 4210 строк, при парсинге @ResponseText возвращяет NULL. Когда длину xml сокращяю до 3970 все работает
@ResponseText возвращяет значения. Может быть в sp_OACreate есть лимит nvarchar(4000) поэтому ? Если да может есть какой нибудь другой метод парсирования ?
11 дек 14, 16:29    [16984439]     Ответить | Цитировать Сообщить модератору
 Re: sp_OACreate лимиты  [new]
Glory
Member

Откуда:
Сообщений: 104760
sp_OACreate
Может быть в sp_OACreate есть лимит nvarchar(4000) поэтому ?

nvarchar(4000) занимает столько же места, как и ваш @ResponseText as Varchar(8000)

sp_OACreate
Имеется XML длиной 4210 строк,

Что за единица измерения "строка" ?
11 дек 14, 16:32    [16984469]     Ответить | Цитировать Сообщить модератору
 Re: sp_OACreate лимиты  [new]
sp_OACreate
Guest
Glory,
XML выглядит следующим образом:

<nagios>
<service>
<service_description>-some_description</service_description>
<color>00FF00</color>
<status_txt>OK</status_txt>
<last_check>2014-12-11 15:32:29</last_check>
<plugin_output>7774.63(2774.63).</plugin_output>
</service>
.........
</nagios>
11 дек 14, 16:34    [16984484]     Ответить | Цитировать Сообщить модератору
 Re: sp_OACreate лимиты  [new]
Glory
Member

Откуда:
Сообщений: 104760
sp_OACreate
XML выглядит следующим образом:

Это замечательно. Нужно самому определить сколько байтов занимает ваш xml и помещаются ли эти байты в @ResponseText as Varchar(8000) ?
11 дек 14, 16:40    [16984526]     Ответить | Цитировать Сообщить модератору
 Re: sp_OACreate лимиты  [new]
sp_OACreate
Guest
Glory,

Encoding стоит UTF-8 ,насколько я понимяю он занимает 2 баита ,а из-за того что там больше 4000 мой лимит varchar(8000) превышен.
11 дек 14, 16:43    [16984552]     Ответить | Цитировать Сообщить модератору
 Re: sp_OACreate лимиты  [new]
Glory
Member

Откуда:
Сообщений: 104760
sp_OACreate
Encoding стоит UTF-8 ,насколько я понимяю он занимает 2 баита ,а из-за того что там больше 4000 мой лимит varchar(8000) превышен.

Логично
11 дек 14, 16:45    [16984564]     Ответить | Цитировать Сообщить модератору
 Re: sp_OACreate лимиты  [new]
sp_OACreate
Guest
Glory,

Может есть другие методы парсинга ? Вы опытнее меня может быть подскажите как сделать ?
11 дек 14, 16:46    [16984575]     Ответить | Цитировать Сообщить модератору
 Re: sp_OACreate лимиты  [new]
sp_OACreate
Guest
есть какой-нибудь encoding который занимает 1 баит ?
11 дек 14, 16:49    [16984588]     Ответить | Цитировать Сообщить модератору
 Re: sp_OACreate лимиты  [new]
Glory
Member

Откуда:
Сообщений: 104760
sp_OACreate
Может есть другие методы парсинга ? Вы опытнее меня может быть подскажите как сделать ?

А где у вас тут парсинг ?
У вас тут обращение к какому то url.
Если это делается только для того, чтобы работать с XML, то MSSQL умеет это делать самостоятельно, без внешних утилит
11 дек 14, 16:50    [16984597]     Ответить | Цитировать Сообщить модератору
 Re: sp_OACreate лимиты  [new]
sp_OACreate
Guest
Glory,

Я обращяюсь к URL беру XML , делаю парсинг информации закидываю в темп таблицу , делаю селект с таблицы (информация для мониторинга) и затем удаляю емп таблицу и так каждые 5 минут
11 дек 14, 16:54    [16984619]     Ответить | Цитировать Сообщить модератору
 Re: sp_OACreate лимиты  [new]
Shakill
Member

Откуда: мск
Сообщений: 1880
sp_OACreate, попробуйте получать responsetext как-то так

declare @r table (r nvarchar(max)) 
insert @r exec sys.sp_OAGetProperty @OLE,'responsetext'
11 дек 14, 16:55    [16984624]     Ответить | Цитировать Сообщить модератору
 Re: sp_OACreate лимиты  [new]
sp_OACreate
Guest
Shakill,

Возврощяет NULL
11 дек 14, 16:59    [16984647]     Ответить | Цитировать Сообщить модератору
 Re: sp_OACreate лимиты  [new]
sp_OACreate
Guest
есть какой-нибудь encoding который занимает 1 баит ?
11 дек 14, 17:02    [16984672]     Ответить | Цитировать Сообщить модератору
 Re: sp_OACreate лимиты  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7869
sp_OACreate, Вы бы сервер еще джигу заставили танцевать... Пишите отдельное приложение.
11 дек 14, 17:45    [16984952]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить