2015-12-08 3 views
0

В SQLServer У меня есть функция, которая генерирует комплексный XML всех продуктов с несколькими столами присоединились: расположение, поставщики, заказы и т.д.сохранить огромный XML от SQL для веба

Нет проблем в том, что он работает в 68 сек и производит около 450 МБ. Его следует указывать только во время перехода на другой сервер, поэтому не имеет значения, требуется некоторое время.

Я хочу сделать это доступным для скачивания через веб-сервер.

Я пробовал некоторые вариации этого в классической осине:

Response.Buffer = false 
set rs=conn.execute("select cast(dbo.exportXML() as varchar(max)) as res") 
response.write rs("res") 

Но я просто получить место стандартного

Ошибки на сервере при обработке URL. Пожалуйста свяжитесь с системным администратором. Если вы являетесь системным администратором, нажмите здесь, чтобы узнать об этой ошибке.

Не мой обычный пользовательский обработчик ошибок 500, поэтому я не уверен, как найти ошибку.

Проблема заключается в response.write RS ("Рес"), если я просто сделать

temp = rs("res") 

скрипт работает, но не отображает ничего причины; если я тогда

response.write temp 

Я получаю тот же отказ.

Таким образом, проблема заключается в написании такой строки.

Могу ли я сохранить файл непосредственно из tsql; и периодически запускать задание из агента sql?

+0

Так что вы на самом деле не хотите, чтобы отобразить XML, которые вы хотите отправить его в браузер, как скачать? – mjw

+0

Возможно, скачан на другом сервере с помощью wget или что-то еще. Но это просто заголовок, не имеет значения, если я даже не могу даже записать данные. –

ответ

1

Я обнаружил, что, как представляется, ограничение на сколько данные могут быть записаны на один раз, используя Response.Write. Обходной путь я должен был разбить данные на куски, как это:

Dim Data, Done 
Done = False 
Do While Not Done 
    Data = RecordSet(0).GetChunk(8192) 
    If Not Len(Data) = 0 Then 
     Response.Write Data 
    Else 
     Done = True 
    End If 
Loop 
0

Попробуйте это:

Response.ContentType = "text/xml"  

rs.CursorLocation = 3 
rs.Open "select cast(dbo.exportXML() as varchar(max)) as res",conn 

'Persist the Recordset in XML format to the ASP Response object. 
'The constant value for adPersistXML is 1. 

rs.Save Response, 1 
Смежные вопросы