经过长时间的挖掘,我找到了解决问题的方法:
我创建了一个这样的存储过程:
USE [DATABASE NAME]
GO
/****** Object: StoredProcedure [dbo].[asp_Write_String_To_File] Script Date: 11/21/2013 09:33:59 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [PROCEDUER NAME]
(
@String Varchar(max), --8000 in SQL Server 2000
@Path VARCHAR(255),
@Filename VARCHAR(100)
)
AS
DECLARE @objFileSystem int,
@objTextStream int,
@objErrorObject int,
@strErrorMessage Varchar(1000),
@Command varchar(1000),
@hr int,
@fileAndPath varchar(80)
set nocount on
select @strErrorMessage='opening the File System Object'
EXECUTE @hr = sp_OACreate 'Scripting.FileSystemObject' , @objFileSystem OUT
Select @FileAndPath=@path+'\'+@filename
if @HR=0 Select @objErrorObject=@objFileSystem , @strErrorMessage='Creating file "'+@FileAndPath+'"'
if @HR=0 execute @hr = sp_OAMethod @objFileSystem , 'CreateTextFile' , @objTextStream OUT, @FileAndPath,2,True
if @HR=0 Select @objErrorObject=@objTextStream, @strErrorMessage='writing to the file "'+@FileAndPath+'"'
if @HR=0 execute @hr = sp_OAMethod @objTextStream, 'Write', Null, @String
if @HR=0 Select @objErrorObject=@objTextStream, @strErrorMessage='closing the file "'+@FileAndPath+'"'
if @HR=0 execute @hr = sp_OAMethod @objTextStream, 'Close'
if @hr<>0
begin
Declare
@Source varchar(255),
@Description Varchar(255),
@Helpfile Varchar(255),
@HelpID int
EXECUTE sp_OAGetErrorInfo @objErrorObject, @source output,@Description output,@Helpfile output,@HelpID output
Select @strErrorMessage='Error whilst ' +coalesce(@strErrorMessage,'doing something') +', '+coalesce(@Description,'')
raiserror (@strErrorMessage,16,1)
end
EXECUTE sp_OADestroy @objTextStream
EXECUTE sp_OADestroy @objTextStream
然后在查询中我这样调用存储过程:
USE [DATABASE NAME]
declare @xml nvarchar(max)
declare @FilePath nvarchar(255)
declare @FileName nvarchar(255)
set @FilePath = '[Path to store file]' -- Location to store the file
set @FileName = '[File Name to store].xml' -- This is the XML filename
BEGIN
set @xml =
(
SELECT ( -- Add This
SELECT FinishCode, Reason, COUNT(*) AS Numbers
FROM [DATABASE] ch WITH (NOLOCK)
WHERE [Condition 1]
AND [Condition 2]
GROUP BY Reason, FinishCode
ORDER BY Numbers
FOR XML PATH('FinishCode'),
ROOT('UK_Products_Pipeline'),
TYPE
) -- Add This
FOR XML PATH('Dial_Stats') -- Add This
)
exec asp_Write_String_To_File @xml, @FilePath, @FileName
END
然后调用存储过程并将文件写入您的