Guest User

Untitled

a guest
Jul 19th, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.20 KB | None | 0 0
  1. Create proc [dbo].[spExportAuditLog]
  2. as
  3.  
  4. set nocount on
  5. declare @errorvar int,@max int, @min int, @watermark int, @batch int, @beforecounter int, @aftercounter int, @AuditCounter int, @NewAuditCounter int, @errortext varchar(255)
  6. select @beforecounter=0
  7. select @aftercounter=0
  8. select @NewAuditCounter = count(*) from newaudit.dbo.auditlog
  9. print 'NewAudit AuditLog Count Before'
  10. print @NewAuditCounter
  11. print 'Audit AuditLog Count Before'
  12. select @AuditCounter=count(*) from [TARGETSQLSERVER].audit.dbo.auditlog
  13. print @AuditCounter
  14.  
  15. select top 1 @max=ID from newaudit.dbo.auditlog where datediff( minute, datestamp,getdate()) <= 1440 order by ID
  16.  
  17. select @min=min(ID) from newaudit.dbo.auditlog
  18. Set XACT_ABORT on
  19. select @batch =100000
  20. select @watermark=@min
  21. while (@watermark <=@max)
  22. begin
  23. begin transaction
  24. insert into [TARGETSQLSERVER].audit.dbo.auditlog(ApplicationName, MessageType, Message, Comments, UserID, CustomFields, Datestamp, ServerName, MRN)
  25. select ApplicationName, MessageType, Message, Comments, UserID, CustomFields, Datestamp, ServerName, MRN
  26. from newaudit.dbo.auditlog where ID between @watermark and @watermark+@batch and ID <= @max order by id
  27. if @@ERROR <> 0 select @errorvar=@errorvar+1
  28. delete from newaudit.dbo.auditlog where ID between @watermark and @watermark+@batch and ID <= @max
  29. if @@ERROR <> 0 select @errorvar=@errorvar+1
  30. if @errorvar > 0
  31. begin
  32. select @errortext= 'ROLLBACK!! Problem with error IDs between:' + CONVERT(varchar(50), @watermark) + ' and ' +CONVERT(varchar(50), @watermark+@batch)
  33. print @errorText
  34. rollback
  35. select @errorvar=0
  36. end
  37. else commit
  38. select @watermark = @watermark+@batch +1
  39. waitfor delay '000:00:10'
  40. end
  41.  
  42. select @NewAuditCounter = count(*) from newaudit.dbo.auditlog
  43. print 'NewAudit AuditLog Count After'
  44. print @NewAuditCounter
  45. print 'Audit AuditLog Count After'
  46. select @AuditCounter=count(*) from [TARGETSQLSERVER].audit.dbo.auditlog
  47. print @AuditCounter
Add Comment
Please, Sign In to add comment