Advertisement
Guest User

Untitled

a guest
Aug 31st, 2015
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.30 KB | None | 0 0
  1. /*
  2. LOG STORED PROCEDURE RUN TIMES AND ERROR MESSAGES
  3.  
  4. Example:
  5. ====================
  6. -- Place at beginning of your stored procedure
  7. DECLARE @Parameters VARCHAR(200) = NULL;
  8. SET @Parameters = 'Account: ' + ISNULL(@Account,'') + ' UserID: ' + ISNULL(@UserID,'');
  9. DECLARE @StartTime DATETIME = GETDATE();
  10. EXEC Call_ssProcedureLog @ObjectID = @@PROCID, @StartDate = @StartTime, @AdditionalInfo = @Parameters;
  11.  
  12. -- Place at end of your stored procedure
  13. DECLARE @EndDate DATETIME = GETDATE();
  14. EXEC Call_ssProcedureLog @ObjectID = @@PROCID, @StartDate = @StartTime, @EndDate = @EndDate;
  15. */
  16.  
  17. IF OBJECT_ID('[dbo].[sp_log]') IS NULL
  18. BEGIN
  19. CREATE TABLE [dbo].[sp_log](
  20. [ID] [int] IDENTITY(1,1) NOT NULL,
  21. [StartDate] [datetime] NULL,
  22. [EndDate] [datetime] NULL,
  23. [DatabaseID] [int] NULL,
  24. [ObjectID] [int] NULL,
  25. [ProcedureName] [nvarchar](100) NULL,
  26. [RunTimeSec] AS (case when [EndDate] IS NOT NULL AND [StartDate] IS NOT NULL then datediff(second,[StartDate],[EndDate]) end),
  27. [ErrorLine] [int] NULL,
  28. [ErrorMessage] [nvarchar](4000) NULL,
  29. [AdditionalInfo] [nvarchar](4000) NULL,
  30. CONSTRAINT [PK_sp_log] PRIMARY KEY CLUSTERED
  31. (
  32. [ID] ASC
  33. )WITH (FILLFACTOR = 97) ON [PRIMARY]
  34. ) ON [PRIMARY]
  35. END
  36. GO
  37.  
  38. IF OBJECT_ID('[dbo].[sp_logger]') IS NOT NULL DROP PROCEDURE [dbo].[sp_logger]
  39. GO
  40.  
  41. CREATE PROCEDURE [dbo].[sp_logger]
  42. @StartDate DATETIME = NULL,
  43. @EndDate DATETIME = NULL,
  44. @ObjectID INT = NULL,
  45. @DatabaseID INT = NULL,
  46. @RunTimeSec INT = NULL,
  47. @AdditionalInfo NVARCHAR(4000) = NULL
  48. AS
  49. BEGIN
  50. SET NOCOUNT ON;
  51.  
  52. DECLARE
  53. @ProcedureName NVARCHAR(100);
  54.  
  55. SET @DatabaseID = COALESCE(@DatabaseID, DB_ID());
  56. SET @ProcedureName = COALESCE
  57. (
  58. QUOTENAME(DB_NAME(@DatabaseID)) + '.'
  59. + QUOTENAME(OBJECT_SCHEMA_NAME(@ObjectID, @DatabaseID))
  60. + '.' + QUOTENAME(OBJECT_NAME(@ObjectID, @DatabaseID)),
  61. ERROR_PROCEDURE()
  62. );
  63.  
  64. IF @EndDate IS NOT NULL
  65. BEGIN
  66. UPDATE sp_log
  67. SET EndDate = @EndDate
  68. where StartDate = @StartDate
  69. AND ObjectID = @ObjectID
  70. END
  71. ELSE
  72. BEGIN
  73. INSERT sp_log
  74. (
  75. StartDate,
  76. EndDate,
  77. DatabaseID,
  78. ObjectID,
  79. ProcedureName,
  80. ErrorLine,
  81. ErrorMessage,
  82. AdditionalInfo
  83. )
  84. SELECT
  85. @StartDate,
  86. @EndDate,
  87. @DatabaseID,
  88. @ObjectID,
  89. @ProcedureName,
  90. ERROR_LINE(),
  91. ERROR_MESSAGE(),
  92. @AdditionalInfo;
  93. END
  94. END
  95. GO
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement