小编RJB*_*man的帖子

为什么我的Azure SQL数据库删除查询性能如此之慢?

我有一个大约9GB的Azure Sql数据库.它提供一个Web应用程序,每小时处理大约135K请求.大多数数据都是短暂的,它会在几分钟到五天内存放在数据库中并被删除.每天大约10GB通过数据库移动.

我试图在表上运行删除查询,从350,000条记录中删除约250,000条记录.大约10%的记录有一个或两个nvarchar(max)值足够大,可以存储在LOB存储中.

在周末,我试图一次删除它们.它在我取消查询之前运行了四个小时,然后它又回来了8个小时 - 糟糕的举动.我真的没想到它会那么糟糕.

然后我尝试了另一种方法.这个批处理在晚上运行,当时Web应用程序每小时处理大约100K请求.tblJobs Id字段是唯一标识符,它是主键.

insert @tableIds select Id from dbo.tblJobs with(nolock) 
where (datediff(day, SchedDate, getDate()) > 60)  
   or (datediff(day, ModifiedDate, getDate()) > 3 and ToBeRemoved = 1)

set @maintLogStr = 'uspMaintenance [tblJobs] Obsolete J records count @tableIds: ' + convert(nvarchar(12), (select count(1) from @tableIds))
insert dbo.admin_MaintenanceLog(LogEntry) values(@maintLogStr)

set @maintLogId = newid()
set @maintLogStr = 'uspMaintenance [tblJobs] Obsolete J records beginning loop...'
insert dbo.admin_MaintenanceLog(Id, LogEntry) values(@maintLogId, @maintLogStr)

while exists(select * from @tableIds)
begin
    delete @tableIdsTmp
    begin transaction …
Run Code Online (Sandbox Code Playgroud)

t-sql azure azure-sql-database

8
推荐指数
1
解决办法
2468
查看次数

为什么DropDownListFor会在提交后丢失多个选择,但ListBoxFor不会?

我已经阅读了很多关于使用MultiSelectList的文章,还没有理解我的DropDownListFor出了什么问题.我有一个ListBoxFor与相同的View,ViewModel和数据工作正常.我想使用DropDownListFor,因为它具有ListBoxFor没有的optionLabel参数.

首次加载View时,DropDownListFor和ListBoxFor都会显示多个选定的项目.

初步观点

单击"提交"按钮时,所选项目集合将回发到Controller操作,并且视图将刷新,ListBoxFor仍显示两个选定项目,但DropDownListFor仅显示一个选定项目.

刷新视图 控制器动作正在构建MultiSelectList,如下所示:

vm.TasksFilterGroup.Assignees = new MultiSelectList(employees, "Id", "FullName", new string[] { "51b6f06a-e04d-4f98-88ef-cd0cfa8a2757", "51b6f06a-e04d-4f98-88ef-cd0cfa8a2769" });
Run Code Online (Sandbox Code Playgroud)

View代码如下所示:

<div class="form-group">
  <label>ListBoxFor</label>
  @Html.ListBoxFor(m => m.TasksFilterGroup.SelectedAssignees, Model.TasksFilterGroup.Assignees, new { @class = "form-control", multiple = "multiple" })
</div>
<div class="form-group">
  <label>DropDownListFor</label>
  @Html.DropDownListFor(m => m.TasksFilterGroup.SelectedAssignees, Model.TasksFilterGroup.Assignees, new { @class = "form-control", multiple = "multiple" })
</div>
Run Code Online (Sandbox Code Playgroud)

为什么DropDownListFor会在提交后丢失多个选择,但ListBoxFor不会?

asp.net-mvc asp.net-mvc-5.2

8
推荐指数
1
解决办法
2431
查看次数

损坏的Azure SQL存储过程只能通过drop recreate修复

请原谅我这是否重复.我能找到的最接近的是随机超时运行存储过程 - 删除重新创建修复,但我不确定有关重新编译存储过程的答案.

我有一个Azure SQL数据库,最新版本,具有来自Azure Web应用程序前端的大量流量.我有一个夜间远程作业,运行批处理来重建Azure SQL数据库上的索引,因为这似乎有助于控制数据库大小和性能.

通常,重建索引大约需要20分钟.昨晚它在2小时后超时.该批处理中的错误处理程序未记录任何错误.

重建索引启动后不久,一个特定的存储过程开始为每个调用它的客户端计时.使用相同表的其他存储过程没有任何问题.当我发现问题时,我可以通过改变存储过程立即返回来缓解所有超时和暂停进程.当我再次更改存储过程以使其正常运行时,问题立即重新出现.我的理解是,改变存储过程迫使它重新编译但是没有修复它.

最终,我完全放弃并使用原始代码重新创建了该过程,问题得到了解决.

这个程序及其使用的模式已经完全稳定了好几个月.程序本身很简单:

CREATE Procedure [dbo].[uspActivityGet] (@databaseid uniqueidentifier) AS
begin
    SET NOCOUNT ON;
    --There may be writing activities to the table asynchronously, do not use nolock on tblActivity - the ActivityBlob might be null in a dirty read.
    select top 100 a.Id, h.HandsetNumber, a.ActivityBlob, a.ActivityReceived
    from dbo.tblDatabases d with(nolock) join dbo.tblHandsets h with(nolock) on d.DatabaseId = h.DatabaseId join dbo.tblActivity a on h.Id = a.HandsetId
    where d.DatabaseId = @databaseid and a.ActivitySent …
Run Code Online (Sandbox Code Playgroud)

sql-server stored-procedures azure-sql-database

6
推荐指数
1
解决办法
219
查看次数

生成XML文档的Intuit QBO SDK更新Bill错误ItemElementName的值与System.Decimal的类型不匹配

我正在使用Intuit QBO SDK v3 Intuit.Ipp.QueryFilter.QueryService(Of Bill)获取由Bill.Id过滤的Bills集合.该集合已成功填充.我想修改Bill的某些ItemBasedExpenseLineDetail成员的BillableStatus,并使用Intuit.Ipp.DataService.DataService.Update(Of Bill)更新它.无论我是否实际修改了Bill的任何属性,Update方法都会生成以下错误:

Intuit.Ipp.E​​xception.SerializationException:生成XML文档时出错.---> System.InvalidOperationException:生成XML文档时出错.---> System.InvalidOperationException:ItemElementName的值与System.Decimal的类型不匹配; 你需要将它设置为Intuit.Ipp.Data.ItemChoiceType.@ UnitPrice.在Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterBill.Write163_ItemBasedExpenseLineDetail(字符串N,串NS,ItemBasedExpenseLineDetail O,布尔ISNULLABLE,布尔needType)在Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterBill.Write181_Line(字符串N,串NS,线O,在Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterBill.Write185_Bill(String n,String ns,Bill o,Boolean isNullable,Boolean isNullable,Boolean isNullable,Boolean needType)

Bill的所有ItemBasedExpenseLineDetail成员的值似乎正好是Intuit.Ipp.Data.ItemChoiceType.UnitPrice,如Watch或Immediate Window所示,例如:

?DirectCast(qboItem.Line(0).AnyIntuitObject,Intuit.Ipp.Data.ItemBasedExpenseLineDetail).ItemElementName

UnitPrice {2}

任何想法如何执行更新没有此错误或在哪里进一步查看?

sdk xml-serialization quickbooks-online

4
推荐指数
1
解决办法
603
查看次数

Intuit Quickbooks在线应用程序授权退出工作

我们有一个Web服务,用于授权我们的应用程序与QuickBooks Online之间的连接。它已经工作了两年,最近一次成功的授权是在2/28/17。新的授权尝试可以与忒好了,但是当他们点击该按钮连接到QuickBooks的,他们得到一个错误,签订“很抱歉!我们遇到了一些问题,请稍后再试。” 显示此错误的网址是一样的东西,“ https://appcenter.intuit.com/Connect/CompanySelection?oauth_token=qyprdVRQgReiMqcN2CZDW5U7nX2sz1iC2f4pYWbHuyY9JB ”。任何想法如何,我也许能确定是退出工作?谢谢。

一些额外的信息。授权/取消授权过程可以在Sandbox公司和我的开发人员帐户中正常运行。

quickbooks-online intuit-partner-platform

3
推荐指数
1
解决办法
1306
查看次数