asp.net-mvc – MVC ELMAH和SQL Azure
|
背景故事:
现在的情况: ON [PRIMARY],NONCLUSTERED KEYS等 我迁移了我的数据库(现在),但是当我将更新的ELMAH脚本应用到数据库并试图进入该工具时,我会收到错误! 我以某种方式相信这是一个数据库问题,因为如果我删除: 任何有ELMAH工作的SQL Azure?你能给我SQL脚本生成表和存储过程吗? 解决方法这是我在SQl Azure上用于ELMAH DB的db脚本:--~Changing index [dbo].[ELMAH_Error].PK_ELMAH_Error to a clustered index. You may want to pick a different index to cluster on.
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo]. [ELMAH_Error]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[ELMAH_Error](
[ErrorId] [uniqueidentifier] NOT NULL,[Application] [nvarchar](60) NOT NULL,[Host] [nvarchar](50) NOT NULL,[Type] [nvarchar](100) NOT NULL,[Source] [nvarchar](60) NOT NULL,[Message] [nvarchar](500) NOT NULL,[User] [nvarchar](50) NOT NULL,[StatusCode] [int] NOT NULL,[TimeUtc] [datetime] NOT NULL,[Sequence] [int] IDENTITY(1,1) NOT NULL,[AllXml] [nvarchar](max) NOT NULL,CONSTRAINT [PK_ELMAH_Error] PRIMARY KEY CLUSTERED
(
[ErrorId] ASC
)WITH (STATISTICS_NORECOMPUTE = OFF,IGNORE_DUP_KEY = OFF)
)
END
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[ELMAH_Error]') AND name = N'IX_ELMAH_Error_App_Time_Seq')
CREATE NONCLUSTERED INDEX [IX_ELMAH_Error_App_Time_Seq] ON [dbo].[ELMAH_Error]
(
[Application] ASC,[TimeUtc] DESC,[Sequence] DESC
)WITH (STATISTICS_NORECOMPUTE = OFF,IGNORE_DUP_KEY = OFF,DROP_EXISTING = OFF,ONLINE = OFF)
GO
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[DF_ELMAH_Error_ErrorId]') AND type = 'D')
BEGIN
ALTER TABLE [dbo].[ELMAH_Error] ADD CONSTRAINT [DF_ELMAH_Error_ErrorId] DEFAULT (newid()) FOR [ErrorId]
END
GO
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[ELMAH_GetErrorsXml]') AND type in (N'P',N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'
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
'
END
GO
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[ELMAH_GetErrorXml]') AND type in (N'P',N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'
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
'
END
GO
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo]. [ELMAH_LogError]') AND type in (N'P',N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'
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 NVARCHAR(MAX),@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
)
'
END
GO
SQL Azure是SQL的特殊版本,有一些它不支持的东西。 您是否使用SQL Azure迁移向导来迁移数据库? (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – MVC HandleError过滤器没有捕获异常
- asp.net文件上传功能(单文件,多文件,自定义生成缩略图,水印
- entity-framework-4 – 首先在实体框架代码中使用导航属性
- asp.net – 如何确定用户的浏览器是否可以查看PDF文件
- asp.net-mvc – ActionLink后退按钮
- asp.net-mvc – ASP.NET MVC – 如何获取一个URL而不是一个
- asp.net-mvc – thinktecture identityserver v3
- asp.net-mvc – 为什么我的视图模型中的内部成员无法在视图
- asp.net-web-api – ember-data:根据需要加载hasMany关联
- asp.net-web-api – 我可以在WebAPI messageHandler中使用A
- asp.net-mvc – 如何在ASP.NET MVC 3中更新复杂模
- asp.net – AspNetCompatibilityRequirements是什
- 如何在服务器端缓存ASP.NET自定义HttpHandler响应
- asp.net-mvc-4 – 如何防止复杂类型的默认绑定器
- asp.net-mvc – 接受逗号和点作为小数分隔符[重复
- asp.net-mvc – 为什么ASP.NET MVC Html.CheckBo
- asp.net – 如何使用命令行msbuild部署VS2012网站
- asp.net-mvc-3 – 是否可以在Javascript文件中使
- 为Asp.Net MVC中的特定Controller或Action启用SS
- asp.net-web-api – 可以从Request对象获取当前的
