xml - Host-file colums may be skipped only when copying into the server -
i want create xml file database bcp.
the following code works in sql server 2008 not in sql express 2005.
this code error: sqlstate = s1000, nativeerror = 0 error = [microsoft][sql native client] host-file columns may skipped when copying server
these sql express info: microsoft sql server management studio express: 9.00.4035.00
microsoft data access components (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
this code:
declare @filename varchar(150) declare @dataexport 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 xml; ' + 'declare @text varchar(max); ' + 'set @xml = (select ' + '(select ''' + convert(varchar(10), @dateexport, 112) + ''' dateexport ' + 'for xml path (''data''), type), ' + '(select ' + '(select item item, cast(quantity int) qty, convert(decimal(10,6), price) price, ''0.0'' total, convert(varchar(10), dateinv, 112) date '+ db_name() +'.dbo.items (item not ''x-%'' , item not ''y-%'') , 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 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
i found workaround:
1) created stored procedure returning xml content 2) executed former stored procedure in bcp code.
example code: found workaround:
first create stored procedure returning xml content , call in code bcp.
example code:
-- 1) -------------------------------------------- create procedure [dbo].[xxx_transformiteminxml] ( @dateexport datetime ) begin set nocount on declare @xml xml; declare @text varchar(max); set @xml = (select (select convert(varchar(10), getdate(), 112) dataesportazione xml path ('data'), type), (select (select item item, cast(quantity int) qty, convert(decimal(10,6), price) price, '0.0' total, convert(varchar(10), dateinv, 112) date mydb.dbo.items (item not 'x-%' , item not 'y-%') , dtainv = @dateexport xml path('line'), type) xml path('body'), type) xml path (''), root('myroot'), type) set @text = '<?xml version="1.0" encoding="iso-8859-1"?>' + char(13) + char(10); set @text = @text + replace(cast(@xml varchar(max)), '><', '>' + char(13) + char(10) + '<'); select @text end -- end stored procedure ---------------------------------------------------- -- bcp code ---------------------------------------------------------------- declare @filename varchar(50) declare @sqlcmd varchar(1500) declare @dataexport set @dataexport = getdate() set @filename = 'c:\backupsql\output.xml' select @sqlcmd = 'bcp "exec ' + db_name() + '.dbo.xxx_transformiteminxml ''' + convert(varchar(10),@dateexport, 112) + ''' " queryout ' + @filename + ' -c -t -s' + convert(nvarchar(128), serverproperty('servername')) -- trusted connection e ansi execute master..xp_cmdshell @sqlcmd -- end bcp code ------------------------------------------------------------
Comments
Post a Comment