为存储过程创建日志文件






1.56/5 (10投票s)
2007年4月19日
1分钟阅读

82823
在本文中,我将展示如何为存储过程创建日志文件。
引言
我们创建存储过程来实现业务逻辑。有时为了方便起见,我们希望逐行记录一些消息。在这里,我提供一个示例来准备存储过程的日志文件。
示例
为存储过程创建日志文件
在这个例子中,我将展示如何为存储过程创建日志文件。
日志文件将在数据库服务器上创建。
请为 C: 驱动器或要创建日志文件的文件夹授予写入权限。
创建一个名为 Person 的表
create table Person
(
PID int Primary Key identity (1, 1)
,Person_Name varchar(50)
,Person_Address varchar(150) not null
)
这是存储过程中使用的测试表
create procedure CreateLog
(
@Msg varchar(500)
,@Start bit
)
为
begin
declare @cmd varchar(2000)
if(@Start = 1)
begin
set @cmd = 'echo --------------'+ convert(varchar(10),getDate(),101) +'------- --------------- > C:\MyLog.txt'
exec master..xp_cmdshell @cmd
end
set @cmd = 'echo ' + @Msg + ' >> C:\MyLog.txt'
exec master..xp_cmdshell @cmd
end
现在我将创建一个存储过程,在其中插入一条记录,然后将 Person_Address 更新为 null 值,这将引发错误,我将在日志文件中记录该错误。
create procedure PersonUpdate
(
@PID int
,@Address varchar(50)
)
为
begin
declare @LineNumber varchar(500)
begin transaction
insert into Person values ('Mack','New York')
if(@@error <> 0) goto ErrorHandler
exec CreateLog 'Mack , New York inserted in Person table',1
Update Person set Person_Address = @Address where PID = @PID
if(@@error <> 0) goto ErrorHandler
exec CreateLog 'city has been update For give PID',0
commit transaction
return
ErrorHandler
begin
Rollback transaction
set @Msg = 'Transaction Rollbacked, Error occured'
exec CreateLog @Msg,0
End
End
现在执行该命令
exec PersonUpdate 1,null
现在转到 C:\MyLog.txt
并打开此文件,消息已记录在此处。