|
導讀數據庫,簡而言之可視為電子化的文件柜——存儲電子文件的處所,用戶可以對文件中的數據進行新增、截取、更新、刪除等操作。所謂“數據庫”是以一定方式儲存在一起、能與多個用戶共享、具有盡可能小的冗余度、與應... 數據庫,簡而言之可視為電子化的文件柜——存儲電子文件的處所,用戶可以對文件中的數據進行新增、截取、更新、刪除等操作。所謂“數據庫”是以一定方式儲存在一起、能與多個用戶共享、具有盡可能小的冗余度、與應用程序彼此獨立的數據集合。 SQLMail可以收發郵件,可能好多人都有xp_sendmail發送過郵件,這里介紹一種郵件服務器接收郵件后,根據郵件內容(只能是查詢語句) 把郵件中的查詢語句執行后的結果以附件形式自動返回給發送郵件者。 eg: 發送郵件,郵件內容為: select top 10 id,name from sysobjects則服務器自動回復郵件,內容為上述查詢語句的執行結果,以附件形式發送。 1:當然是先配置好SQL郵件服務了,這方面的資料比較多,此處不贅述。 2: 把sp_processmail稍作修改 (把發件人的郵件地址解析為真正的郵箱地址) Alter procedure sp_processmail @subject varchar(255)=NULL, @filetype varchar(3)=’txt’, @separator varchar(3)=’tab’, @set_user varchar(132)=’guest’, @dbuse varchar(132)=’master’ as declare @status int declare @msg_id varchar(64) declare @originator varchar(255) declare @originator_address varchar(255) declare @a varchar(255) declare @cc_list varchar(255) declare @msgsubject varchar(255) declare @query varchar(8000) declare @messages int declare @mapifailure int declare @resultmsg varchar(80) declare @filename varchar(12) declare @current_msg varchar(64) select @messages=0 select @mapifailure=0 if @separator=’tab’ select @separator=CHAR(9) /* get first message id */ exec @status = master.dbo.xp_findnextmsg @msg_id=@msg_id output, @unread_only=’true’ if @status <> 0 select @mapifailure=1 while (@mapifailure=0) begin if @msg_id is null break if @msg_id = ’’ break exec @status = master.dbo.xp_readmail @msg_id=@msg_id, @originator=@originator output, @cc_list=@cc_list output, @subject=@msgsubject output, @message=@query output, @peek=’true’, @originator_address= @originator_address output, @suppress_attach=’true’ if @status <> 0 begin select @mapifailure=1 break end /* get new message id before processing & deleting current */ select @current_msg=@msg_id exec @status = master.dbo.xp_findnextmsg @msg_id=@msg_id output, @unread_only=’true’ if @status <> 0 begin select @mapifailure=1 end if ((@subject IS NULL) OR (@subject=@msgsubject)) begin /* generate random filename */ select @filename=’SQL’ + convert(varchar,ROUND(RAND()*100000,0)) + ’.’ + @filetype exec @status = master.dbo.xp_sendmail -- @recipients=@originator, @recipients=@originator_address, @copy_recipients=@cc_list, @message=@query, @query=@query, @subject=’Query Results’, @separator=@separator, @width=256, @attachments=@filename, @attach_results=’true’, @no_output=’false’, @echo_error=’true’, @set_user=@set_user, @dbuse=@dbuse if @status <> 0 begin select @mapifailure=1 break end select @messages=@messages+1 exec master.dbo.xp_deletemail @current_msg end /* end of xp_sendmail block */ end /* end of xp_findnextmsg loop */ /* finished examining the contents of inbox; now send results */ if @mapifailure=1 begin raiserror(15079,-1,-1,@messages) return(1) end else return(0) -- sp_processmail 3:在master數據庫下建一個存儲過程 use master create proc answerMail as sp_processmail @subject = ’sql’,@filetype = ’CSV’,@separator =’,’,@set_user = ’dbo’ ,@dbuse = ’數據庫名’ 4: 用job調度此存儲過程。 5: 現在可以測試了。發一封郵件給服務器上配置的郵箱地址。 主題為 sql 內容為 一句簡單的查詢語句 eg: select getdate() 發送 6: 等到job調度時間到后即可收到回復。 全新的路由器不僅讓你更穩定快速地連接無線網絡,更可以讓家中的智能設備連接在一起。 |
溫馨提示:喜歡本站的話,請收藏一下本站!