Экспорт XML через BCP Bulk Export - PullRequest
       2

Экспорт XML через BCP Bulk Export

3 голосов
/ 10 января 2012

Я получил таблицу tblScan с некоторыми varbinary данными. Я хочу экспортировать эту таблицу в XML-файл, чтобы вставить ее в SQL Azure с помощью BCP Bulk insert. ( Кстати, возможно ли даже преобразовать varbinary данные в XML ?? )

Я делаю:

DECLARE @String varchar(8000)
SET @String='bcp "SELECT * FROM dbo.tblScan FOR XML RAW, XMLSCHEMA" queryout C:\Users\DAAGEU\Desktop\tblScanOutput.xml -c -T'
EXEC xp_cmdshell @String

Но я получил эту ошибку вывода:

Output error

Есть ли другие решения для этого?

1 Ответ

4 голосов
/ 10 января 2012

На самом деле это проблема с VarBinary и XML (в SQL 2008 R2):

FOR XML EXPLICIT и RAW в настоящее время не поддерживают адресацию двоичные данные в виде URL-адресов в столбце SomeComlumn. Удалите столбец, или используйте режим BINARY BASE64, или создайте URL-адрес напрямую, используя синтаксис 'dbobject / TABLE [@ PK1 = "V1"] / @ COLUMN ".

Быстрый поиск показал это сообщение .

Есть ли особая причина, по которой вы хотите экспортировать в XML? Я использую bcp, используя бинарный вывод по умолчанию, и нет проблем с полями VarBinary. Двоичные файлы намного меньше, чем файлы XML. И если вы не хотите делать какие-либо манипуляции между экспортом и импортом, я предлагаю вам использовать двоичные файлы.

Попробуйте изменить запрос на:

SET @String='bcp "SELECT * FROM dbo.tblScan FOR XML RAW, BINARY BASE64" queryout C:\Users\DAAGEU\Desktop\tblScanOutput.xml -c -T'

Однако, как видно из журналов, ваша текущая проблема - логин. Вы используете доверенное соединение, но знаете ли вы, какой идентификатор запускает процесс bcp, когда он создается механизмом SQL Server? Скорее всего, это будет идентичность SQL Server, которая, как я полагаю, не имеет доступа к базе данных / таблице (и, скорее всего, это локальная система или сетевая служба). Если вы все еще хотите сделать это с помощью SQL-запроса, а не командного файла (.bat или .cmd), я предлагаю вам использовать явные учетные данные для входа в систему (аутентификация SQL Server), а не доверенное соединение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...