问题标签 [arithabort]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
8 回答
37602 浏览

sql-server - 从 Web 执行时查询超时,但从 SSMS 执行时超快

我正在尝试在我维护的 Web 应用程序中调试 SQL 超时的来源。我有后面的 C# 代码的源代码,所以我确切地知道正在运行什么代码。我已将应用程序调试到执行超时的 SQL 代码的行,并观察 SQL 探查器中运行的查询。

从 Web 执行此查询时,它会在 30 秒后超时。但是,当我完全按照 Profiler 中的方式剪切/粘贴查询并将其放入 SSMS 并运行它时,它几乎会立即返回。我已经将问题追溯到在网络正在使用的连接中将 ARITHABORT 设置为 OFF(也就是说,如果我在 SSMS 会话中将 ARITHABORT 关闭,它会运行很长时间,如果我将其重新打开,那么它会运行很快)。但是,阅读 ARITHABORT 的描述,它似乎并不适用......我只是在做一个简单的 SELECT,根本没有执行任何算术运算......只有一个带有 WHERE 条件的 INNER JOIN:

为什么 ARITHABORT OFF 在这种情况下会导致这种行为?有什么方法可以从 SSMS 更改该连接的 ARITHABORT 设置?我正在使用 SQL Server 2008。

0 投票
1 回答
6725 浏览

linq-to-sql - 如何为 Linq To SQL 中的连接设置 ARITHABORT ON

默认情况下,对于 OLEDB 连接,SQL 连接选项 ARITHABORT 是关闭的,我假设 Linq To SQL 正在使用它。但是我需要它打开。原因是我的数据库包含一些索引视图,如果连接没有 ARITHABORT ON,则对属于索引视图一部分的表的任何插入/更新/删除操作都会失败。如果使用 WITH(NOEXPAND) 提示(您必须在 SQL 标准版中使用它来获得索引视图的性能优势),即使选择索引视图本身也会失败。

数据上下文中是否有我可以指定我想要此选项的地方?或者我可以在代码中的某个地方做到这一点?

我已经管理了一个笨拙的解决方法,但我不喜欢它....我必须为每个选择/插入/更新/删除操作创建一个存储过程,并且在这个过程中首先运行 SET ARITHABORT ON,然后执行另一个过程其中包含实际的选择/插入/更新/删除。换句话说,第一个 proc 只是第二个的包装器。将 SET ARITHABORT ON 放在选择/插入/更新/删除代码上方是行不通的。

0 投票
1 回答
2058 浏览

sql-server-2008 - 在 EF4 中控制 ArithAbort

我们的 EF4 MVC 解决方案存在一些性能问题。我们已经能够追踪到 ArithAbort 在与数据库的所有连接之前设置为关闭,现在我们正试图强制它保持为“开启”。

我们看过: 如何控制 Linq to SQL 发出的“SET”语句

但似乎 EF4 在每次查询之前都重置了连接,所以这不起作用。

到目前为止,我们已经尝试在给定查询之前“设置 ArithAbort”,但没有成功。我们还尝试过很长的路要走,并在我们设置它的地方建立新的连接,但仍然没有运气。

那么,任何人都知道我们如何在对数据库进行任何 linq 查询之前对其进行设置?

更改数据库设置不是一种选择。

编辑:根据 Andiihs 的建议,我尝试了包装解决方案并将以下代码行添加到 EFCachingCommand 类

这实质上确保了任何 Linq-sql 调用都以正确的 set 语句为前缀。

我还必须补充:

到 EFCachingCommandDefinition 中的 GetAffectedEntitySets 函数,以使其与存储过程调用一起正常工作。

0 投票
1 回答
757 浏览

sql - 设置 ARITHABORT On 仅在 asp 中失败

我有这个错误信息:

我只想知道为什么当我从 asp 代码调用我的存储过程时它给了我错误,而当我在管理工作室时它没有给我错误?

我知道这是因为我在存储过程中使用了一些 xml 数据,但管理工作室和代码之间有什么区别

谢谢

0 投票
0 回答
111 浏览

sql-server - SQL Server ARITHABORT 设置

设置ARITHABORT ON 的最佳位置在哪里?在 Db 中还是在 App 中?MSDN说要在登录会话中打开。如果我们必须打开每个登录会话,为什么我不能在 DB 中打开而不是在每个登录会话中打开。

0 投票
1 回答
121 浏览

sql-server - 无法更新 sql server 中的数据 - arithabort 错误

在一个 vb.net 项目中,我几乎无法解决我遇到的 arithabort 问题的每个插入/更新查询,现在,我的项目对我来说很好,昨天,通过在另一台服务器上部署应用程序(windows 2003 R2 SP2),我再次遇到了 arithabort 问题,我不知道如何再次解决这个问题。为了执行插入/更新查询,我使用了 ADODB.Connection 对象,在运行其中一个之前,我执行了以下两个查询:

有任何想法吗?谢谢

编辑:刚刚注意到在服务器上安装了 SQL Server 2008,就我而言,我使用的是 SQL Server 2008 R2,这将解释遇到的错误。

0 投票
2 回答
2698 浏览

sql-server - ARITHABORT OFF 对性能产生不利影响

我完全知道来自应用程序的 SQL 查询通常使用SET ARITHBAORT OFFwhere 作为 SSMS(默认情况下)使用SET ARITHBAORT ON. 我也相信这SET ARITHBAORT OFF只是为了遗留兼容性,真正的查询应该使用SET ARITHBAORT ON.

我有一个作为 C# Console App 批处理文件的一部分运行的查询。SET ARITHBAORT OFF上下文是用和 准备的(默认情况下)SET ANSI_WARNINGS ON。前 92 个调用执行良好,第 93 个调用总是锁定(每个调用使用不同的参数)。SET ARITHBAORT OFF如果我在使用第 93 次调用中的参数调用存储过程之前使用,我已经能够在 SSMS 中重现这一点。

继续我的问题(抱歉到目前为止的背景信息).... Erland Sommarskog 文章指出:

接下来说到ARITHABORT,大家应该知道,在SQL 2005及以后的版本中,只要ANSI_WARNINGS为ON,这个设置影响为零。因此,没有理由为了此事而将其打开。

但是,我使用的是 SQL Server 2014,我发现:

运行良好,但

无限期地运行。因此,如果SET ANSI_WARNINGS ON使ARITHBAORT选项无关紧要,为什么我的查询会锁定?谢谢。

http://www.sommarskog.se/query-plan-mysteries.html

0 投票
1 回答
1151 浏览

sql - 失败,因为不正确的 arithabort 设置

我创建了一个唯一索引(如果 IsDelete != 1,案例描述应该是唯一的)

然后,当我运行以下过程时,它会抛出“更新失败,因为以下 SET 选项的设置不正确:'ARITHABORT'。验证 SET 选项对于过滤索引的使用是否正确。

我尝试在 UPDATE 语句之前添加 SET ARITHABORT ON ,但这没有做任何事情。

任何帮助是极大的赞赏!

0 投票
1 回答
190 浏览

sql-server-2008 - SSRS 给我一个错误,但查询在 SSMS 中完美运行

我已经研究了很长时间的查询终于奏效了。我一直在努力将其实施到 SSRS 报告中。但是,当尝试将查询复制粘贴到数据集中时,我收到以下错误:

现在 Arithabort 在数据库中设置为 on。这是我确信的。ssrs 不能使用 arithabort 吗?

这是我的查询:

0 投票
1 回答
550 浏览

sql-server - 如何在视图中使用 ARITHABORT?

我有一个视图,它在 SSMS(MS Sql Server)中工作得非常快,但在我的网络应用程序中工作得非常慢。我在数据库中的 ARITHABORT 设置设置为 ON,但我不确定这是否会持续到 Web 应用程序。

有没有办法在视图本身中设置它?我知道 SSMS 和网络应用程序之间的速度差异还有其他可能的问题,但只是想试一试(因为许多其他有相同问题的人说这解决了它)。

顺便说一句,我不是数据库管理员,也没有真正的访问权限。我所拥有的只是这个视图和我正在开发的 Web 应用程序的代码。