65.9K
CodeProject 正在变化。 阅读更多。
Home

为存储过程创建日志文件

starIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIconemptyStarIcon

1.56/5 (10投票s)

2007年4月19日

1分钟阅读

viewsIcon

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
并打开此文件,消息已记录在此处。

© . All rights reserved.