Имя: Пароль:
IT
Админ
Проблема при выгрузке в XML средствами MS SQL Server 2000 (утилита BCP)
0 andrey153
 
21.11.12
11:28
Пытаюсь выгрузить в XML-файл данные из SQL базы(SQL Server 2000), код такой:

Declare cmd varchar(500);
Declare @OutputFileName varchar(500);
Declare @result int;

Set @OutputFileName = 'D:\SQL1C\For_Web.xml';

--Set cmd = 'BCP "set nocount on; USE SQL1C; Select top 3 CODE, RTrim(DESCR) as DESCR From SC31 Order by code For XML raw " queryout "'+ @OutputFileName + '" -w -C1251 -r -T';
Set cmd = 'BCP "set nocount on; USE SQL1C; EXEC SQL1C.dbo.EXPORT_TO_XML_FOR_WEB_TEST " queryout "'+ @OutputFileName + '" -w -C1251 -r -T';

Exec @result = master..xp_cmdshell cmd;

select @result as result;
print cmd;

Если в тексте непосредственно запрос, то работает, если вызов процедуры содержащей этот запрос то такая ошибка:

output                                                                                                                                                                                                                                                          
---------------------------------
SQLState = S1000, NativeError = 0
Error = [Microsoft][ODBC SQL Server Driver]Bcp файлы сервера должны содержать хотя бы один столбец
NULL

(3 row(s) affected)

result      
-----------
1

(1 row(s) affected)

BCP "set nocount on; USE SQL1C; EXEC SQL1C.dbo.EXPORT_TO_XML_FOR_WEB_TEST " queryout "D:\SQL1C\For_Web.xml" -w -C1251 -r -T

Сам текст процедуры EXPORT_TO_XML_FOR_WEB_TEST:

CREATE PROCEDURE EXPORT_TO_XML_FOR_WEB_TEST AS
--set nocount on;
Select top 10 CODE, RTrim(DESCR) as DESCR From SC31 Order by code For XML raw
--
GO
1 andrey153
 
21.11.12
11:28
Собственно текст ошибки: "Bcp файлы сервера должны содержать хотя бы один столбец"
2 andrey153
 
21.11.12
12:55
Если вдруг у кого будет аналогичная проблема, решил так:
выгрузил в глобальную временную таблицу результат выполнения процедуры,
а потом из этой временной таблицы в xml по другому никак не получается.
3 kokamoonga
 
22.11.12
01:19
(0) raw sql это конечно круто, но можно в графическом интерфейсе удобно и просто http://www.devart.com/ru/dbforge/sql/studio/