• Using sql azure for Elmah


    The MSDN docs contain the list of T-SQL that is either partially supported or not supported.  For example see the following location for CREATE TABLE - http://msdn.microsoft.com/en-us/library/ee336258.aspx

    In Elmah's case, the filegroup is not supported on 'create table' ddl. 

    Use the script below for SQL Azure instead.

    /* ------------------------------------------------------------------------
    TABLES
    ------------------------------------------------------------------------ */
    IF EXISTS(SELECT * FROM sysobjects WHERE xtype = 'U' AND name = 'ELMAH_Error')
    DROP TABLE [dbo].[ELMAH_Error]
    GO
    CREATE TABLE [dbo].[ELMAH_Error]
    (
    [ErrorId] UNIQUEIDENTIFIER NOT NULL,
    [Application] NVARCHAR(60) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
    [Host] NVARCHAR(50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
    [Type] NVARCHAR(100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
    [Source] NVARCHAR(60) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
    [Message] NVARCHAR(500) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
    [User] NVARCHAR(50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
    [StatusCode] INT NOT NULL,
    [TimeUtc] DATETIME NOT NULL,
    [Sequence] INT IDENTITY (1, 1) NOT NULL,
    [AllXml] NTEXT COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
    )

    GO

    ALTER TABLE [dbo].[ELMAH_Error] WITH NOCHECK ADD
    CONSTRAINT [PK_ELMAH_Error] PRIMARY KEY ([ErrorId])
    GO

    ALTER TABLE [dbo].[ELMAH_Error] ADD
    CONSTRAINT [DF_ELMAH_Error_ErrorId] DEFAULT (NEWID()) FOR [ErrorId]
    GO

    CREATE NONCLUSTERED INDEX [IX_ELMAH_Error_App_Time_Seq] ON [dbo].[ELMAH_Error]
    (
    [Application] ASC,
    [TimeUtc] DESC,
    [Sequence] DESC
    )
    GO

    /* ------------------------------------------------------------------------
    STORED PROCEDURES
    ------------------------------------------------------------------------ */

    SET QUOTED_IDENTIFIER ON
    GO
    SET ANSI_NULLS ON
    GO

    IF EXISTS(SELECT * FROM sysobjects WHERE xtype = 'P' AND name = 'ELMAH_GetErrorXml')
    DROP PROCEDURE [dbo].[ELMAH_GetErrorXml]
    GO
    CREATE PROCEDURE [dbo].[ELMAH_GetErrorXml]
    (
    @Application NVARCHAR(60),
    @ErrorId UNIQUEIDENTIFIER
    )
    AS

    SET NOCOUNT ON

    SELECT
    [AllXml]
    FROM
    [ELMAH_Error]
    WHERE
    [ErrorId] = @ErrorId
    AND
    [Application] = @Application

    GO
    SET QUOTED_IDENTIFIER OFF
    GO
    SET ANSI_NULLS ON
    GO

    SET QUOTED_IDENTIFIER ON
    GO
    SET ANSI_NULLS ON
    GO


    IF EXISTS(SELECT * FROM sysobjects WHERE xtype = 'P' AND name = 'ELMAH_GetErrorsXml')
    DROP PROCEDURE [dbo].[ELMAH_GetErrorsXml]
    GO
    CREATE PROCEDURE [dbo].[ELMAH_GetErrorsXml]
    (
    @Application NVARCHAR(60),
    @PageIndex INT = 0,
    @PageSize INT = 15,
    @TotalCount INT OUTPUT
    )
    AS

    SET NOCOUNT ON

    DECLARE @FirstTimeUTC DATETIME
    DECLARE @FirstSequence INT
    DECLARE @StartRow INT
    DECLARE @StartRowIndex INT

    SELECT
    @TotalCount = COUNT(1)
    FROM
    [ELMAH_Error]
    WHERE
    [Application] = @Application

    -- Get the ID of the first error for the requested page

    SET @StartRowIndex = @PageIndex * @PageSize + 1

    IF @StartRowIndex <= @TotalCount
    BEGIN

    SET ROWCOUNT @StartRowIndex

    SELECT
    @FirstTimeUTC = [TimeUtc],
    @FirstSequence = [Sequence]
    FROM
    [ELMAH_Error]
    WHERE
    [Application] = @Application
    ORDER BY
    [TimeUtc] DESC,
    [Sequence] DESC

    END
    ELSE
    BEGIN

    SET @PageSize = 0

    END

    -- Now set the row count to the requested page size and get
    -- all records below it for the pertaining application.

    SET ROWCOUNT @PageSize

    SELECT
    errorId = [ErrorId],
    application = [Application],
    host = [Host],
    type = [Type],
    source = [Source],
    message = [Message],
    [user] = [User],
    statusCode = [StatusCode],
    time = CONVERT(VARCHAR(50), [TimeUtc], 126) + 'Z'
    FROM
    [ELMAH_Error] error
    WHERE
    [Application] = @Application
    AND
    [TimeUtc] <= @FirstTimeUTC
    AND
    [Sequence] <= @FirstSequence
    ORDER BY
    [TimeUtc] DESC,
    [Sequence] DESC
    FOR
    XML AUTO

    GO
    SET QUOTED_IDENTIFIER OFF
    GO
    SET ANSI_NULLS ON
    GO

    SET QUOTED_IDENTIFIER ON
    GO
    SET ANSI_NULLS ON
    GO


    IF EXISTS(SELECT * FROM sysobjects WHERE xtype = 'P' AND name = 'ELMAH_LogError')
    DROP PROCEDURE [dbo].[ELMAH_LogError]
    GO
    CREATE PROCEDURE [dbo].[ELMAH_LogError]
    (
    @ErrorId UNIQUEIDENTIFIER,
    @Application NVARCHAR(60),
    @Host NVARCHAR(30),
    @Type NVARCHAR(100),
    @Source NVARCHAR(60),
    @Message NVARCHAR(500),
    @User NVARCHAR(50),
    @AllXml NTEXT,
    @StatusCode INT,
    @TimeUtc DATETIME
    )
    AS

    SET NOCOUNT ON

    INSERT
    INTO
    [ELMAH_Error]
    (
    [ErrorId],
    [Application],
    [Host],
    [Type],
    [Source],
    [Message],
    [User],
    [AllXml],
    [StatusCode],
    [TimeUtc]
    )
    VALUES
    (
    @ErrorId,
    @Application,
    @Host,
    @Type,
    @Source,
    @Message,
    @User,
    @AllXml,
    @StatusCode,
    @TimeUtc
    )

    GO
    SET QUOTED_IDENTIFIER OFF
    GO
    SET ANSI_NULLS ON
    GO

  • 相关阅读:
    R语言爬虫:CSS方法与XPath方法对比(代码实现)
    R语言爬虫:Rvest包函数介绍(表格)
    R语言爬虫:使用R语言爬取豆瓣电影数据
    R语言学习笔记(二十二):字符串处理中的函数对比(代码实现)
    R语言学习笔记(二十一):字符串处理中的元字符(代码展示)
    history命令详解
    文件服务器:FTP服务器详解
    Linux下的DOS攻击
    Linux-/proc目录简介
    Linux-详解inode节点
  • 原文地址:https://www.cnblogs.com/rickiedu/p/3955246.html
Copyright © 2020-2023  润新知