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

Откуда:
Сообщений: 135
Уважаемые коллеги,
вот есть задача - сохранить данные в xml файле и отправить его по почте ...
по описанному способу см. статью glory https://www.sql.ru/faq/faq_topic.aspx?fid=131 все пишется ок ...
но! как бы написать все тоже, но в одной процедуре селектом ..?
типа:

declare @cmd varchar(150)
declare	@result int
set @cmd = 'BCP "SELECT [idCompany],[nameCompany],[Items]
FROM [dbo].[Companies]
FOR XML AUTO" queryout \\10.0.7.4\ErrIU\a123.xml -w -C1251 -r -T'
EXEC @result = master..xp_cmdshell @cmd

вот так не работает ... не понимаю, можно ли exec как то прикрутить ... или как-нибудь без него ..?
5 авг 13, 14:23    [14664086]     Ответить | Цитировать Сообщить модератору
 Re: вывод данных в xml файл и сохранение его на диске  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
http://msdn.microsoft.com/ru-ru/library/ms190307.aspx в части параметров @query и @attach_query_result_as_file.
5 авг 13, 14:34    [14664179]     Ответить | Цитировать Сообщить модератору
 Re: вывод данных в xml файл и сохранение его на диске  [new]
SerRock
Member

Откуда:
Сообщений: 135
pkarklin,

вопрос не в отправке ... вопрос, как сформировать xml файл в одной процедуре ...
5 авг 13, 15:25    [14664638]     Ответить | Цитировать Сообщить модератору
 Re: вывод данных в xml файл и сохранение его на диске  [new]
Glory
Member

Откуда:
Сообщений: 104751
SerRock
как сформировать xml файл в одной процедуре ...

Написать нужный запрос. как показано в приведенной вами же ссылке
5 авг 13, 15:36    [14664764]     Ответить | Цитировать Сообщить модератору
 Re: вывод данных в xml файл и сохранение его на диске  [new]
SerRock
Member

Откуда:
Сообщений: 135
Glory,

Понял, спасибо ... только как то странно, что можно сохранить xml файл на диске одним единственным способом, да и еще вызовом из другой процедуры ...
6 авг 13, 09:02    [14667368]     Ответить | Цитировать Сообщить модератору
 Re: вывод данных в xml файл и сохранение его на диске  [new]
Гость333
Member

Откуда:
Сообщений: 3683
SerRock
можно сохранить xml файл на диске одним единственным способом

Неверно, способов больше, чем один. Например, написать и использовать CLR-модуль.

SerRock
Как бы написать все тоже, но в одной процедуре
...
как сформировать xml файл в одной процедуре
...
да и еще вызовом из другой процедуры ...

Тут вообще непонятно, что к чему. Какие "одну процедуру" и "другую процедуру" вы имеете в виду?
6 авг 13, 09:18    [14667429]     Ответить | Цитировать Сообщить модератору
 Re: вывод данных в xml файл и сохранение его на диске  [new]
SerRock
Member

Откуда:
Сообщений: 135
Гость333,

DECLARE @result int
DECLARE @OutputFileName varchar(150)
DECLARE @cmd varchar( 150)

Set @OutputFileName = 'c:\mysql.xml'
Set @cmd = 'BCP "EXEC get_xml" queryout "' + @OutputFileName + '" -C ACP -c -r -T'

EXEC @result = master..xp_cmdshell @cmd

get_xml - это др. хранимка, в которой "select ... for xml, auto ..."
т.е. нужно запускать 'BCP "EXEC get_xml" queryout ... и вызывать из нее другую ... если вместо имени процедуры написать сам select процедуры get_xml, то не работает ...
CLR модуль - тоже решение, но придется переделать (правда не много) тех. проц. пользователей, а слушать их нытье хочется меньше всего
6 авг 13, 11:22    [14668156]     Ответить | Цитировать Сообщить модератору
 Re: вывод данных в xml файл и сохранение его на диске  [new]
Glory
Member

Откуда:
Сообщений: 104751
SerRock
если вместо имени процедуры написать сам select процедуры get_xml, то не работает ...

Т.е. сообщение об ошибке - "Не работает" ?
6 авг 13, 11:26    [14668190]     Ответить | Цитировать Сообщить модератору
 Re: вывод данных в xml файл и сохранение его на диске  [new]
Гость333
Member

Откуда:
Сообщений: 3683
SerRock
если вместо имени процедуры написать сам select процедуры get_xml, то не работает ...

Выполнил сейчас такую команду:
exec xp_cmdshell 'BCP "SELECT object_id, name FROM tempdb.sys.objects FOR XML AUTO" queryout D:\2\a123.xml -S (local)\R2 -C ACP -c -r -T'

В указанной папке обнаружил искомый файл. Так что, действительно, надо бы показать сообщение об ошибке.
6 авг 13, 11:37    [14668271]     Ответить | Цитировать Сообщить модератору
 Re: вывод данных в xml файл и сохранение его на диске  [new]
повторюшка
Guest
Гость333,

а я просто пробую сделать то же самое из MS:
exec xp_cmdshell 'BCP "SELECT object_id, name 
                  FROM tempdb.sys.objects FOR XML AUTO" queryout c:\a123.xml -C ACP -c -r -T'

(сервер локальный, авторизация win)
так не создает файл, а выдает 1 колонку "output",
куда пишет 13 строк синтаксиса использования BCP.
а из cmd выполняется и файл создает.
ну и
exec xp_cmdshell 'dir c:\'
тоже выполняется.
что это может означать?
6 авг 13, 12:29    [14668700]     Ответить | Цитировать Сообщить модератору
 Re: вывод данных в xml файл и сохранение его на диске  [new]
Glory
Member

Откуда:
Сообщений: 104751
повторюшка
куда пишет 13 строк синтаксиса использования BCP.

А перевод строки в тексте комадны вы сами додумали или посоветовал кто ?
6 авг 13, 12:33    [14668738]     Ответить | Цитировать Сообщить модератору
 Re: вывод данных в xml файл и сохранение его на диске  [new]
повторюшка
Guest
Glory,

конечно, сами :)
заработало, сэнкс
6 авг 13, 12:35    [14668760]     Ответить | Цитировать Сообщить модератору
 Re: вывод данных в xml файл и сохранение его на диске  [new]
SerRock
Member

Откуда:
Сообщений: 135
Гость333,

Коллеги, большое спасибо, разобрался ...
во-первых select должен быть написан только в одну строку, иначе ошибка формата,
во-вторых, нельзя в select почему то использовать представления, иначе
Error = [Microsoft][SQL Server Native Client 10.0][SQL Server]Недопустимое имя объекта "dbo.view_sch_fact_doc".

хотя сам select отрабатывает правильно ...
т.е. как ни крути, а придется делать с вызовом процедуры, как Glory писал ...
6 авг 13, 12:36    [14668780]     Ответить | Цитировать Сообщить модератору
 Re: вывод данных в xml файл и сохранение его на диске  [new]
Glory
Member

Откуда:
Сообщений: 104751
SerRock
во-первых select должен быть написан только в одну строку, иначе ошибка формата,

А вы попробуйте в commandpromt написать команду из нескольких строк разделенных переводом строки.

SerRock
во-вторых, нельзя в select почему то использовать представления, иначе

Если указывать недопустимое имя, то ошибка будет всегда такая
6 авг 13, 12:39    [14668800]     Ответить | Цитировать Сообщить модератору
 Re: вывод данных в xml файл и сохранение его на диске  [new]
Гость333
Member

Откуда:
Сообщений: 3683
SerRock
нельзя в select почему то использовать представления, иначе
Error = [Microsoft][SQL Server Native Client 10.0][SQL Server]Недопустимое имя объекта "dbo.view_sch_fact_doc".

Проверьте, может, ваш запрос выполняется в БД, в которой нет такого объекта?
6 авг 13, 12:42    [14668832]     Ответить | Цитировать Сообщить модератору
 Re: вывод данных в xml файл и сохранение его на диске  [new]
SerRock
Member

Откуда:
Сообщений: 135
Гость333,

я приложил файл ... (чем описывать ситуацию) ...
как бы объект есть, да и сам select дает правильную выборку (ну, как минимум без ошибки) ... может в предложение from для BCP.EXE есть ограничения для представления?

P.S. перевод строки отработал (ну, на простенькой тренировочной таблице) ... спасибо

К сообщению приложен файл. Размер - 128Kb
6 авг 13, 14:27    [14669676]     Ответить | Цитировать Сообщить модератору
 Re: вывод данных в xml файл и сохранение его на диске  [new]
Гость333
Member

Откуда:
Сообщений: 3683
SerRock
как бы объект есть, да и сам select дает правильную выборку

Замените ваш запрос "SELECT TOP (10) ... FOR XML ..." на "SELECT DB_NAME()", выполните и посмотрите на содержимое файла.
6 авг 13, 14:33    [14669708]     Ответить | Цитировать Сообщить модератору
 Re: вывод данных в xml файл и сохранение его на диске  [new]
Glory
Member

Откуда:
Сообщений: 104751
SerRock
я приложил файл ... (чем описывать ситуацию) ...
как бы объект есть,

В какой базе - вот вопрос
6 авг 13, 14:34    [14669716]     Ответить | Цитировать Сообщить модератору
 Re: вывод данных в xml файл и сохранение его на диске  [new]
MDB.dbo.view_sch_fact_doc
Guest
SerRock,

так свое MDB надо не во внешний USE, a впереди view вписать:
MDB.dbo.view_sch_fact_doc
6 авг 13, 14:41    [14669758]     Ответить | Цитировать Сообщить модератору
 Re: вывод данных в xml файл и сохранение его на диске  [new]
SerRock
Member

Откуда:
Сообщений: 135
MDB.dbo.view_sch_fact_doc,

всем огромное спасибо за потраченное на меня время ... после замены каждой!!! dbo. на MDB.dbo. запрос отработал и xml сохранился в положенном месте ...
проблема решена ...
6 авг 13, 15:13    [14669976]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить