0

プラットフォーム:SQL Server 2012

登録番号を受け取り、その登録番号に基づいて、一連のHTMLとXMLを出力する2つのストアドプロシージャがあります。procには、SSMSで実行されたときにメッセージ領域に吐き出される一連の印刷ステートメントがあります。

それはうまく機能します、私はそれがこのように設計されているのは本当に好きではありませんが、私は継承し、彼らはそれが機能することを望んでいます。

この手順を実行して、メッセージの内容をファイルに吐き出したい。理想的には、実行後にファイルの名前を登録番号に変更します。

簡単に言うと、SQLステートメントのメッセージ部分をファイルに出力できます。

SSIS?または、いくつかの単純なBCPストアドプロシージャコマンド?誰かがこれに遭遇しますか?

4

2 に答える 2

0

を使用できますexecute spWriteStringToFile。ここでこれを見つけました:https ://www.simple-talk.com/code/WorkingWithFiles/spWriteStringTofile.txt

ALTER PROCEDURE spWriteStringToFile
 (
@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

それに関する完全な記事:https ://www.simple-talk.com/sql/t-sql-programming/reading-and-writing-files-in-sql-server-using-t-sql/

于 2013-03-04T05:57:16.003 に答える
0

すべての PRINT ステートメントを SELECT ステートメントに置き換えてから、各 SELECT ステートメントをテーブルに送信しました。次に、そのテーブルをプルして、SSIS を使用して HTM ファイルを適切に構築します。

于 2013-03-16T03:56:10.513 に答える