bcpを使用してデータベースからxmlファイルを作成したいとします。ホストファイルの列は、サーバにコピーするときだけスキップすることができます。
次のコードこれは、コードエラーであるSQL Server 2008で動作しますが、いないSQL Expressの2005
: のMicrosoft SQL Server Management StudioのExpressの::9.00 SQLState = S1000, NativeError = 0 Error = [Microsoft][SQL Native Client] Host-file columns may be skipped only when copying into the Server
は、これらは、SQL Expressの情報です.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:2600年5月1日
これは私のコードです:
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
そして、何を正確に、あなたの質問です?!?! –
このコードはSQL Express 2005では動作しません。理由はわかりません。 XMLファイルを作成しますが、空です。 – vano