Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Получить длинную строку XML в хранимой процедуре  [new]
JavaStudent
Member

Откуда:
Сообщений: 97
Не могу решить вопрос получения длинных строк в хранимке (XML).
BULK не устраивает. Не дают доступ к папкам сети. Я не могу объяснить, какой мне нужен доступ со стороны сервера к папке.

Нашел, что клиент может отсылать ADODB.Stream, но что должно быть на стороне SQL сервера?
Чтобы из ADODB.Stream в хранимке получить XML ?

Какие есть еще варианты?
21 авг 18, 11:43    [21649195]     Ответить | Цитировать Сообщить модератору
 Re: Получить длинную строку XML в хранимой процедуре  [new]
ЛиП
Member

Откуда:
Сообщений: 347
SSIS
21 авг 18, 11:59    [21649236]     Ответить | Цитировать Сообщить модератору
 Re: Получить длинную строку XML в хранимой процедуре  [new]
invm
Member

Откуда: Москва
Сообщений: 8803
JavaStudent
Какие есть еще варианты?
Самый лучший вариант - внятно объяснить, что же вы хотите сделать.
21 авг 18, 11:59    [21649237]     Ответить | Цитировать Сообщить модератору
 Re: Получить длинную строку XML в хранимой процедуре  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 928
JavaStudent
Не могу решить вопрос получения длинных строк в хранимке (XML).
BULK не устраивает. Не дают доступ к папкам сети. Я не могу объяснить, какой мне нужен доступ со стороны сервера к папке.
Нашел, что клиент может отсылать ADODB.Stream, но что должно быть на стороне SQL сервера?
Чтобы из ADODB.Stream в хранимке получить XML ?
Какие есть еще варианты?


ТС, постарайся описать не только конкретно возникшую проблему, но и задачу в целом, которую ты пытаешься решить, какие технологии уже используются,...
+ иначе
Не дают доступа к папкам сети? Иди к мамкам!
Какой клиент, какой стрим?
Наркоман шоле?
Вариант один - к психотерапевту!
21 авг 18, 12:04    [21649248]     Ответить | Цитировать Сообщить модератору
 Re: Получить длинную строку XML в хранимой процедуре  [new]
JavaStudent
Member

Откуда:
Сообщений: 97
C клиента вызываю хранимку с входным параметром XML строка. Все работает, но если файлик XML большой, то не работает.

Я как понял, что я могу послать серверу файлик на вход. Чтобы сервер получил в хранимке в итоге XML.

Через BULK работает, т.е. кушает большие файлики, но не хочется писать файл в папку на сервере.
21 авг 18, 12:50    [21649326]     Ответить | Цитировать Сообщить модератору
 Re: Получить длинную строку XML в хранимой процедуре  [new]
invm
Member

Откуда: Москва
Сообщений: 8803
JavaStudent
C клиента вызываю хранимку с входным параметром XML строка.
Тип параметра должен быть varchar(max), nvarchar(max) или xml.
21 авг 18, 12:56    [21649333]     Ответить | Цитировать Сообщить модератору
 Re: Получить длинную строку XML в хранимой процедуре  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6613
invm,

ну может "XML большой" у него больше 2ГБ
21 авг 18, 12:58    [21649334]     Ответить | Цитировать Сообщить модератору
 Re: Получить длинную строку XML в хранимой процедуре  [new]
invm
Member

Откуда: Москва
Сообщений: 8803
TaPaK
ну может "XML большой" у него больше 2ГБ
Тогда и BULK бы не работал.
21 авг 18, 13:03    [21649346]     Ответить | Цитировать Сообщить модератору
 Re: Получить длинную строку XML в хранимой процедуре  [new]
aleks222
Member

Откуда:
Сообщений: 747
JavaStudent
Не могу решить вопрос получения длинных строк в хранимке (XML).
BULK не устраивает. Не дают доступ к папкам сети. Я не могу объяснить, какой мне нужен доступ со стороны сервера к папке.

Нашел, что клиент может отсылать ADODB.Stream, но что должно быть на стороне SQL сервера?
Чтобы из ADODB.Stream в хранимке получить XML ?

Какие есть еще варианты?


1. ADODB.Stream для хранимки бесполезен.
2. На другой стороне для ADODB.Stream должно быть ПОЛЕ таблицы в открытом Recordset-е, в вашем конкретном случае поле типа (n)varchar(max).
21 авг 18, 13:04    [21649349]     Ответить | Цитировать Сообщить модератору
 Re: Получить длинную строку XML в хранимой процедуре  [new]
aleks222
Member

Откуда:
Сообщений: 747
Ой, варианты то забыл.

Вариант "для хранимки":

Пилить XML клиентом на куски, кусок передавать в хранимку, в хранимке дописывать кусок в поле таблицы.
21 авг 18, 13:06    [21649354]     Ответить | Цитировать Сообщить модератору
 Re: Получить длинную строку XML в хранимой процедуре  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 29304
JavaStudent
Все работает, но если файлик XML большой, то не работает.
"Не работает" - это какая ошибка, какой у неё номер и текст?

И какой размер файлика?
21 авг 18, 13:43    [21649475]     Ответить | Цитировать Сообщить модератору
 Re: Получить длинную строку XML в хранимой процедуре  [new]
JavaStudent
Member

Откуда:
Сообщений: 97
alexeyvg, Проблема, в том что клиент не умеет (или я не умею) слать XML на вход хранимки. Поставил задачку под другим углом.
Закачать текстовый файлик (без ограничения на объем), разбираюсь как, потом его в строку XML.

Пока разбираюсь с клиентом.
22 авг 18, 09:56    [21650309]     Ответить | Цитировать Сообщить модератору
 Re: Получить длинную строку XML в хранимой процедуре  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 29304
JavaStudent
alexeyvg, Проблема, в том что клиент не умеет (или я не умею) слать XML на вход хранимки. Поставил задачку под другим углом.
Так задайте вопрос на форуме по используемому вами ЯП. Кстати, подойдёт и передача как параметра бинарного массива или текстовой строки.
Со стороны сиквела это сделать намного сложнее, а уж если файл лежит на компе клиента, то намного сложнее, так что проще научиться делать эти вещи, которые, вообще говоря, обязательно знать программисту клиента.
Или, если файл действительно большой (про размер вы не говорите), то прислушайтесь к советам про SSIS и BCP
22 авг 18, 11:01    [21650424]     Ответить | Цитировать Сообщить модератору
 Re: Получить длинную строку XML в хранимой процедуре  [new]
aleks222
Member

Откуда:
Сообщений: 747
JavaStudent
alexeyvg, Проблема, в том что клиент не умеет (или я не умею) слать XML на вход хранимки. Поставил задачку под другим углом.
Закачать текстовый файлик (без ограничения на объем), разбираюсь как, потом его в строку XML.

Пока разбираюсь с клиентом.


Откроем неофиту страшную тайну: XML = текстовая строка.
22 авг 18, 13:24    [21650692]     Ответить | Цитировать Сообщить модератору
 Re: Получить длинную строку XML в хранимой процедуре  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 29304
aleks222
JavaStudent
alexeyvg, Проблема, в том что клиент не умеет (или я не умею) слать XML на вход хранимки. Поставил задачку под другим углом.
Закачать текстовый файлик (без ограничения на объем), разбираюсь как, потом его в строку XML.

Пока разбираюсь с клиентом.
Откроем неофиту страшную тайну: XML = текстовая строка.
Вообще в клиентских библиотеках может быть специальный тип для XML. Например, в SqlDbType из System.Data.SqlClient.SqlParameter такой присутствует.

Но можно обойтись и строкой. Может, ТС этого не знал?
22 авг 18, 13:30    [21650709]     Ответить | Цитировать Сообщить модератору
 Re: Получить длинную строку XML в хранимой процедуре  [new]
энди
Member

Откуда: Киров, Россия
Сообщений: 1012
aleks222
JavaStudent
alexeyvg, Проблема, в том что клиент не умеет (или я не умею) слать XML на вход хранимки. Поставил задачку под другим углом.
Закачать текстовый файлик (без ограничения на объем), разбираюсь как, потом его в строку XML.

Пока разбираюсь с клиентом.


Откроем неофиту страшную тайну: XML = текстовая строка.


Далеко не всегда, в том же дельфи обращение к этим полям идет разное, asString и asXML, а заменить одно другим нельзя. Это касается библиотеки SDAC от деварта.
22 авг 18, 14:17    [21650772]     Ответить | Цитировать Сообщить модератору
 Re: Получить длинную строку XML в хранимой процедуре  [new]
JavaStudent
Member

Откуда:
Сообщений: 97
Тогда вопрос решил перешел на ADO.Connection - строка 8000 символов, если файлик большой, то писал в общую папку на сервер, а оттуда уже забирал. Если не очень, то резал на три куска. В ХП если приходил путь, брал файлик по пути или разбирал сразу строку.
28 мар 19, 18:33    [21846506]     Ответить | Цитировать Сообщить модератору
 Re: Получить длинную строку XML в хранимой процедуре  [new]
aleks222
Member

Откуда:
Сообщений: 747
JavaStudent
Тогда вопрос решил перешел на ADO.Connection - строка 8000 символов, если файлик большой, то писал в общую папку на сервер, а оттуда уже забирал. Если не очень, то резал на три куска. В ХП если приходил путь, брал файлик по пути или разбирал сразу строку.

}{реновый ты студент.

https://docs.microsoft.com/ru-ru/sql/ado/reference/ado-api/appendchunk-and-getchunk-methods-example-vb?view=sql-server-2017
30 мар 19, 13:45    [21847782]     Ответить | Цитировать Сообщить модератору
 Re: Получить длинную строку XML в хранимой процедуре  [new]
JavaStudent
Member

Откуда:
Сообщений: 97
aleks222, спасибо. AppendChunk и GetChunk - буду знать. В следующем проекте попробуем.
27 май 19, 12:03    [21894602]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить