Я хочу создать файл XML из своей базы данных с помощью bcp.
Следующий код работает в SQL Server 2008, но не в SQl Express 2005.
Это ошибка кода: SQLState = S1000, NativeError = 0
Error = [Microsoft][SQL Native Client] Host-file columns may be skipped only when copying into the Server
Это Sql Express информация: Microsoft SQL Server Management Studio Express: 9.00.4035.00
Компоненты доступа к данным Microsoft (MDAC): 2000.085.1132.00 (xpsp.080413-0852)
Microsoft MSXML: 2.6 3.0 4.0 5.0 6.0
Microsoft Internet Explorer 8.0.6001.18702
Microsoft .NET Framework: 2.0.50727.3615
SO: 5.1.2600
Это мой код:
DECLARE @FileName VARCHAR(150)
DECLARE @dataExport AS DATETIME
DECLARE @param VARCHAR(8)
SET @FileName = 'c:\BackupSql\XMLOutput.xml'
SET @dataExport = '20110122'
SET @param = 'XXX'
DECLARE @SQLCmd VARCHAR(1800)
SELECT @SQLCmd = 'bcp ' +
'"DECLARE @xml as xml; ' +
'DECLARE @text varchar(MAX); ' +
'SET @xml = (select ' +
'(select ''' + convert(varchar(10), @dateExport, 112) + ''' as DateExport ' +
'FOR XML PATH (''DATA''), TYPE), ' +
'(select ' +
'(select Item as ITEM, cast(Quantity as int) as QTY,
convert(decimal(10,6), Price) as PRICE, ''0.0'' as TOTAL, convert(varchar(10), DateInv, 112) as DATE from '+ DB_NAME() +'.dbo.ITEMS where (ITEM not like ''X-%'' and ITEM not like ''Y-%'') and DateInv = ''' + convert(varchar(10), @dateExport, 112) + ''' ' +
'FOR XML PATH(''LINE''), TYPE) ' +
'FOR XML PATH(''BODY''), TYPE) ' +
'FOR XML PATH (''''), ' +
'ROOT(''MYROOT''), TYPE); ' +
'SET @text = REPLACE(CAST(@xml AS varchar(max)), ''><'', ''>'' + CHAR(13) + CHAR(10) + ''<''); ' +
'SELECT @text" ' +
' queryout ' +
@FileName + ' -c -T -S' + convert(varchar(128), serverproperty('servername')) --Trustedonnection e ANSI
EXECUTE master..xp_cmdshell @SQLCmd