Advertisement
Guest User

ELMAH-1.2-db-SQLServer.sql

a guest
Sep 1st, 2016
2,200
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 7.45 KB | None | 0 0
  1. /*
  2.  
  3.    ELMAH - Error Logging Modules and Handlers for ASP.NET
  4.    Copyright (c) 2004-9 Atif Aziz. All rights reserved.
  5.  
  6.     Author(s):
  7.  
  8.         Atif Aziz, http://www.raboof.com
  9.         Phil Haacked, http://haacked.com
  10.  
  11.    Licensed under the Apache License, Version 2.0 (the "License");
  12.    you may not use this file except in compliance with the License.
  13.    You may obtain a copy of the License at
  14.  
  15.       http://www.apache.org/licenses/LICENSE-2.0
  16.  
  17.    Unless required by applicable law or agreed to in writing, software
  18.    distributed under the License is distributed on an "AS IS" BASIS,
  19.    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  20.    See the License for the specific language governing permissions and
  21.    limitations under the License.
  22.  
  23. */
  24.  
  25. -- ELMAH DDL script for Microsoft SQL Server 2000 or later.
  26.  
  27. -- $Id: SQLServer.sql 677 2009-09-29 18:02:39Z azizatif $
  28.  
  29. DECLARE @DBCompatibilityLevel INT
  30. DECLARE @DBCompatibilityLevelMajor INT
  31. DECLARE @DBCompatibilityLevelMinor INT
  32.  
  33. SELECT
  34.     @DBCompatibilityLevel = cmptlevel
  35. FROM
  36.     master.dbo.sysdatabases
  37. WHERE
  38.     name = DB_NAME()
  39.  
  40. IF @DBCompatibilityLevel <> 80
  41. BEGIN
  42.  
  43.     SELECT @DBCompatibilityLevelMajor = @DBCompatibilityLevel / 10,
  44.            @DBCompatibilityLevelMinor = @DBCompatibilityLevel % 10
  45.            
  46.     PRINT N'
  47.    ===========================================================================
  48.    WARNING!
  49.    ---------------------------------------------------------------------------
  50.    
  51.    This script is designed for Microsoft SQL Server 2000 (8.0) but your
  52.    database is set up for compatibility with version '
  53.     + CAST(@DBCompatibilityLevelMajor AS NVARCHAR(80))
  54.     + N'.'
  55.     + CAST(@DBCompatibilityLevelMinor AS NVARCHAR(80))
  56.     + N'. Although
  57.    the script should work with later versions of Microsoft SQL Server,
  58.    you can ensure compatibility by executing the following statement:
  59.    
  60.    ALTER DATABASE ['
  61.     + DB_NAME()
  62.     + N']
  63.    SET COMPATIBILITY_LEVEL = 80
  64.  
  65.    If you are hosting ELMAH in the same database as your application
  66.    database and do not wish to change the compatibility option then you
  67.    should create a separate database to host ELMAH where you can set the
  68.    compatibility level more freely.
  69.    
  70.    If you continue with the current setup, please report any compatibility
  71.    issues you encounter over at:
  72.    
  73.    http://code.google.com/p/elmah/issues/list
  74.  
  75.    ===========================================================================
  76. '
  77. END
  78. GO
  79.  
  80. /* ------------------------------------------------------------------------
  81.         TABLES
  82.    ------------------------------------------------------------------------ */
  83.  
  84. CREATE TABLE [dbo].[ELMAH_Error]
  85. (
  86.     [ErrorId]     UNIQUEIDENTIFIER NOT NULL,
  87.     [Application] NVARCHAR(60)  COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
  88.     [Host]        NVARCHAR(50)  COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
  89.     [Type]        NVARCHAR(100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
  90.     [Source]      NVARCHAR(60)  COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
  91.     [Message]     NVARCHAR(500) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
  92.     [User]        NVARCHAR(50)  COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
  93.     [StatusCode]  INT NOT NULL,
  94.     [TimeUtc]     DATETIME NOT NULL,
  95.     [Sequence]    INT IDENTITY (1, 1) NOT NULL,
  96.     [AllXml]      NTEXT COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
  97. )
  98. ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
  99.  
  100. GO
  101.  
  102. ALTER TABLE [dbo].[ELMAH_Error] WITH NOCHECK ADD
  103.     CONSTRAINT [PK_ELMAH_Error] PRIMARY KEY NONCLUSTERED ([ErrorId]) ON [PRIMARY]
  104. GO
  105.  
  106. ALTER TABLE [dbo].[ELMAH_Error] ADD
  107.     CONSTRAINT [DF_ELMAH_Error_ErrorId] DEFAULT (NEWID()) FOR [ErrorId]
  108. GO
  109.  
  110. CREATE NONCLUSTERED INDEX [IX_ELMAH_Error_App_Time_Seq] ON [dbo].[ELMAH_Error]
  111. (
  112.     [Application]   ASC,
  113.     [TimeUtc]       DESC,
  114.     [Sequence]      DESC
  115. )
  116. ON [PRIMARY]
  117. GO
  118.  
  119. /* ------------------------------------------------------------------------
  120.         STORED PROCEDURES                                                      
  121.    ------------------------------------------------------------------------ */
  122.  
  123. SET QUOTED_IDENTIFIER ON
  124. GO
  125. SET ANSI_NULLS ON
  126. GO
  127.  
  128. CREATE PROCEDURE [dbo].[ELMAH_GetErrorXml]
  129. (
  130.     @Application NVARCHAR(60),
  131.     @ErrorId UNIQUEIDENTIFIER
  132. )
  133. AS
  134.  
  135.     SET NOCOUNT ON
  136.  
  137.     SELECT
  138.         [AllXml]
  139.     FROM
  140.         [ELMAH_Error]
  141.     WHERE
  142.         [ErrorId] = @ErrorId
  143.     AND
  144.         [Application] = @Application
  145.  
  146. GO
  147. SET QUOTED_IDENTIFIER OFF
  148. GO
  149. SET ANSI_NULLS ON
  150. GO
  151.  
  152. SET QUOTED_IDENTIFIER ON
  153. GO
  154. SET ANSI_NULLS ON
  155. GO
  156.  
  157. CREATE PROCEDURE [dbo].[ELMAH_GetErrorsXml]
  158. (
  159.     @Application NVARCHAR(60),
  160.     @PageIndex INT = 0,
  161.     @PageSize INT = 15,
  162.     @TotalCount INT OUTPUT
  163. )
  164. AS
  165.  
  166.     SET NOCOUNT ON
  167.  
  168.     DECLARE @FirstTimeUTC DATETIME
  169.     DECLARE @FirstSequence INT
  170.     DECLARE @StartRow INT
  171.     DECLARE @StartRowIndex INT
  172.  
  173.     SELECT
  174.         @TotalCount = COUNT(1)
  175.     FROM
  176.         [ELMAH_Error]
  177.     WHERE
  178.         [Application] = @Application
  179.  
  180.     -- Get the ID of the first error for the requested page
  181.  
  182.     SET @StartRowIndex = @PageIndex * @PageSize + 1
  183.  
  184.     IF @StartRowIndex <= @TotalCount
  185.     BEGIN
  186.  
  187.         SET ROWCOUNT @StartRowIndex
  188.  
  189.         SELECT  
  190.             @FirstTimeUTC = [TimeUtc],
  191.             @FirstSequence = [Sequence]
  192.         FROM
  193.             [ELMAH_Error]
  194.         WHERE  
  195.             [Application] = @Application
  196.         ORDER BY
  197.             [TimeUtc] DESC,
  198.             [Sequence] DESC
  199.  
  200.     END
  201.     ELSE
  202.     BEGIN
  203.  
  204.         SET @PageSize = 0
  205.  
  206.     END
  207.  
  208.     -- Now set the row count to the requested page size and get
  209.     -- all records below it for the pertaining application.
  210.  
  211.     SET ROWCOUNT @PageSize
  212.  
  213.     SELECT
  214.         errorId     = [ErrorId],
  215.         application = [Application],
  216.         host        = [Host],
  217.         type        = [Type],
  218.         source      = [Source],
  219.         message     = [Message],
  220.         [user]      = [User],
  221.         statusCode  = [StatusCode],
  222.         time        = CONVERT(VARCHAR(50), [TimeUtc], 126) + 'Z'
  223.     FROM
  224.         [ELMAH_Error] error
  225.     WHERE
  226.         [Application] = @Application
  227.     AND
  228.         [TimeUtc] <= @FirstTimeUTC
  229.     AND
  230.         [Sequence] <= @FirstSequence
  231.     ORDER BY
  232.         [TimeUtc] DESC,
  233.         [Sequence] DESC
  234.     FOR
  235.         XML AUTO
  236.  
  237. GO
  238. SET QUOTED_IDENTIFIER OFF
  239. GO
  240. SET ANSI_NULLS ON
  241. GO
  242.  
  243. SET QUOTED_IDENTIFIER ON
  244. GO
  245. SET ANSI_NULLS ON
  246. GO
  247.  
  248. CREATE PROCEDURE [dbo].[ELMAH_LogError]
  249. (
  250.     @ErrorId UNIQUEIDENTIFIER,
  251.     @Application NVARCHAR(60),
  252.     @Host NVARCHAR(30),
  253.     @Type NVARCHAR(100),
  254.     @Source NVARCHAR(60),
  255.     @Message NVARCHAR(500),
  256.     @User NVARCHAR(50),
  257.     @AllXml NTEXT,
  258.     @StatusCode INT,
  259.     @TimeUtc DATETIME
  260. )
  261. AS
  262.  
  263.     SET NOCOUNT ON
  264.  
  265.     INSERT
  266.     INTO
  267.         [ELMAH_Error]
  268.         (
  269.             [ErrorId],
  270.             [Application],
  271.             [Host],
  272.             [Type],
  273.             [Source],
  274.             [Message],
  275.             [User],
  276.             [AllXml],
  277.             [StatusCode],
  278.             [TimeUtc]
  279.         )
  280.     VALUES
  281.         (
  282.             @ErrorId,
  283.             @Application,
  284.             @Host,
  285.             @Type,
  286.             @Source,
  287.             @Message,
  288.             @User,
  289.             @AllXml,
  290.             @StatusCode,
  291.             @TimeUtc
  292.         )
  293.  
  294. GO
  295. SET QUOTED_IDENTIFIER OFF
  296. GO
  297. SET ANSI_NULLS ON
  298. GO
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement