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

Popular posts from this blog

javascript - Enclosure Memory Copies -

php - Replacing tags in braces, even nested tags, with regex -