asp.net-mvc – MVC ELMAH和SQL Azure
发布时间:2020-12-15 18:48:38 所属栏目:asp.Net 来源:网络整理
导读:背景故事: 我们主要使用AWS进行一切(托管,数据库,通知等)。现在,我正在考虑将数据库端移动到SQL Azure,因为我们在AWS RDS上获得了疯狂的账单。所以我试图做的是在SQL Azure中创建一个DB,并更新连接字符串以指向新的DB。过去,ELMAH(这个具体实施: htt
背景故事:
我们主要使用AWS进行一切(托管,数据库,通知等)。现在,我正在考虑将数据库端移动到SQL Azure,因为我们在AWS RDS上获得了疯狂的账单。所以我试图做的是在SQL Azure中创建一个DB,并更新连接字符串以指向新的DB。过去,ELMAH(这个具体实施: https://github.com/alexanderbeletsky/elmah.mvc)过去工作完美无缺。 现在的情况: 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 – 设置asp:DropDownList的html’name’attriubut
- 如何解决分布式系统中的跨时区问题[实例篇]
- 关于Expression Tree和IL Emit的所谓的"性能差别"
- asp.net – 使用DataContext静态变量
- asp.net-mvc – 是否可以使用RedirectToAction清除路由值?
- asp.net – 使用StartMode =“AlwaysRunning”在ASP .NET 4
- asp.net – 恶意用户可以修改viewstate吗?
- asp.net – 高效地加入Entity Framework Core中另一个表的最
- asp.net – (客户端)禁用提交按钮的最佳方法是什么?
- asp.net-mvc – 帮助/提示提高我的ASP.NET MVC 2网站的性能
推荐文章
站长推荐
- asp.net字符串分割函数使用方法分享
- asp.net-mvc – 具有属性列表的ASP.Net MVC Html
- asp.net – 将SQL计数结果存储到变量VB中
- asp.net-web-api – 使用ASP.NET MVC 6 WebAPI从
- asp.net-mvc – MVC3自定义输出缓存
- ASP.NET MVC4 Razor模板简易分页效果
- asp.net – 如何决定在viewstate中存储什么?
- ASP.NET MVC:如何将多个对象传输到View方法?
- asp.net-mvc – HttpResponseMessage内容不会显示
- asp.net – 如何在SSRS公式字段中按两个日期计算
热点阅读