- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在 Windows Server 2008 R2 上使用 .NET Framework 4.0、C# 和 SQL Server 2008 R2。我的 LINQ to SQL 数据上下文位于单独的库中,相关代码在 Windows 服务中运行。
我有一个经过良好测试的关键任务存储过程,它采用大约 19 个参数(我知道我知道),执行一些简单的“if”逻辑并构建一些变量,并将数据插入 3 个表中。它不使用游标或临时表。我已经描述了 SP 的作用,因为我无权发布 sql 代码。
我在 Internet 上看到很多关于命令超时导致的 SqlException 的帖子,而响应很少超出“增加命令超时”的范围。 Example
我遇到了上述异常,因此尝试将创建数据上下文时的命令超时增加到 10 分钟。在它坐在那里等待那 10 分钟后,我仍然得到异常(exception)。然后,我添加了一些调试日志记录以捕获 LINQ to SQL 的输出,并使用相同的参数值在 SQL Server Management Studio 中运行 SP。它在几分之一秒内成功完成。
这是 LINQ to SQL 日志输出(默认情况下超时)与其他一些日志输出混合在一起,我在这篇文章中混淆了 SP 名称:
16:01:37 15269 Irrelevant log line, deleted for StackOverflow
EXEC @RETURN_VALUE = [dbo].[NAMEHIDDENONSTACKOVERFLOW] @Eastings = @p0, @Northings = @p1, @Speed = @p2, @UpdateDate = @p3, @UserId = @p4, @Postion = @p5, @Direction = @p6, @VehicleId = @p7, @Status = @p8, @Confidence = @p9, @Latitude = @p10, @Longitude = @p11, @PosLatitude = @p12, @PosLongitude = @p13, @WatchBoxId = @p14, @LastWatchBoxId = @p15, @WatchBoxIdAlert = @p16, @ImbolizationState = @p17, @TowAwayAlertState = @p18
-- @p0: Input Int (Size = -1; Prec = 0; Scale = 0) [560120]
-- @p1: Input Int (Size = -1; Prec = 0; Scale = 0) [5754714]
-- @p2: Input Int (Size = -1; Prec = 0; Scale = 0) [0]
-- @p3: Input DateTime (Size = -1; Prec = 0; Scale = 0) [02/08/2011 20:45:08]
-- @p4: Input Int (Size = -1; Prec = 0; Scale = 0) [11]
-- @p5: Input NVarChar (Size = 4000; Prec = 0; Scale = 0) [Swindon United Kingdom]
-- @p6: Input NVarChar (Size = 4000; Prec = 0; Scale = 0) [5]
-- @p7: Input Int (Size = -1; Prec = 0; Scale = 0) [15269]
-- @p8: Input Int (Size = -1; Prec = 0; Scale = 0) [901]
-- @p9: Input Int (Size = -1; Prec = 0; Scale = 0) [0]
-- @p10: Input Float (Size = -1; Prec = 0; Scale = 0) [51.939899]
-- @p11: Input Float (Size = -1; Prec = 0; Scale = 0) [-2.125414]
-- @p12: Input Float (Size = -1; Prec = 0; Scale = 0) [51.9333333]
-- @p13: Input Float (Size = -1; Prec = 0; Scale = 0) [-2.1]
-- @p14: Input Int (Size = -1; Prec = 0; Scale = 0) [-1]
-- @p15: Input Int (Size = -1; Prec = 0; Scale = 0) [-1]
-- @p16: Input Int (Size = -1; Prec = 0; Scale = 0) [0]
-- @p17: Input Int (Size = -1; Prec = 0; Scale = 0) [0]
-- @p18: Input Int (Size = -1; Prec = 0; Scale = 0) [0]
-- @RETURN_VALUE: Output Int (Size = -1; Prec = 0; Scale = 0) [Null]
-- Context: SqlProvider(Sql2008) Model: AttributedMetaModel Build: 4.0.30319.1
16:02:23 0 Error in DoPoll 1 Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
我从 Stack Overflow 搜索中得到的唯一线索是,可能存在一个名为“参数嗅探”的问题,但我仍在继续阅读以弄清楚它是关于什么的。
这是非常关键的东西,如果它在生产中失败,我会遇到很多麻烦,所以我很想回滚 LINQ 并返回 Vanilla ADO。我的问题是:我的方法有什么问题吗(换句话说:我是个白痴吗?)或者 LINQ to SQL 中是否存在某些问题或错误可能导致此问题?我能做些什么来解决这个问题,还是恢复到 Vanilla ADO 会更好?
最佳答案
我假设您已尝试增加 Linq 数据上下文的超时时间,正如您提到的,您发现的大多数帖子都暗示了这一点。
然而...
在这种情况下,让很多人感到困惑的是 Web 服务器,特别是如果您在 IIS7 上运行它。
在过去,我曾遇到过这样的情况,我花了无数个小时来追查问题,找出超时的地方,只是通过在 IIS7 管理中更改服务器应用程序的超时值,在五秒钟内修复它面板。
我并不是说这绝对是你的问题,但如果你只将网络服务器设置为 30 秒(这是默认值),你可以整天坐下来在你的数据上下文中更改超时,并且你永远到不了任何地方。
如果您想尝试一下,请登录到运行 Web 服务器的计算机,展开左侧 Pane 中的服务器/网站,向下钻取到运行存储过程的应用程序。
在这一点上,你有几个地方要看。如果您返回到网站级别 EG:“默认网站”并单击它,然后单击最右侧的高级设置并展开连接限制,您可以在其中设置整个网站的秒数。
如果您从经典的 ASP 文件调用您的 SP,请单击您的 Web 应用程序,然后双击中央 Pane 中的 ASP 图标,展开“限制属性”并更改脚本超时值以适应。
最后,如果您使用某种 CGI 操作执行此操作,请单击您的网络应用程序,然后双击 CGI,然后更改其中的时间。
最后但并非最不重要的一点是,如果以上方法均无济于事,您可以尝试将以下 XML 片段添加到应用程序 web.config 文件中的适当位置,以控制 .NET 脚本执行超时:
<system.web>
<httpRuntime executionTimeout="180"/>
<\system.web>
如果您没有在 IIS7 上运行,那么您需要查看您的服务器用于类似设置的控制面板。
关于c# - LINQ to SQL 中是否存在会导致存储过程超时的错误或限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7310266/
我正在尝试使用 Spark 从 Cassandra 读取数据。 DataFrame rdf = sqlContext.read().option("keyspace", "readypulse
这是代码: void i_log_ (int error, const char * file, int line, const char * fmt, ...) { /* Get erro
我必须调试一个严重依赖 Gtk 的程序。问题是由于某些原因,在使用 GtkWindow 对象时开始出现许多运行时警告。问题是,即使 Gtk 提示严重错误,它也不会因这些错误而中止。我没有代码库的更改历
我正在尝试从已有效编译和链接的程序中检索二进制文件。我已经通过 GL_PROGRAM_BINARY_LENGTH 收到了它的长度。该文档说有两个实例可能会发生 GL_INVALID_OPERATION
我有一个托管在 Azure 环境中的服务。我正在使用控制台应用程序使用该服务。这样做时,我得到了异常: "The requested service, 'http://xxxx-d.yyyy.be/S
我有以下代码,它被 SEGV 信号杀死。使用调试器表明它被 main() 中的第一个 sem_init() 杀死。如果我注释掉第一个 sem_init() ,第二个会导致同样的问题。我试图弄清楚是什么
目前我正在编写一个应用程序(目标 iOS 6,启用 ARC),它使用 JSON 进行数据传输,使用核心数据进行持久存储。 JSON 数据由 PHP 脚本通过 json_encode 从 MySQL 数
我对 Xamarin.Forms 还是很陌生。我在出现的主页上有一个非常简单的功能 async public Task BaseAppearing() { if (UserID
这是我的代码的简化版本。 public class MainActivity extends ActionBarActivity { private ArrayList entry = new Arr
我想弄明白为什么我的两个 Java 库很难很好地协同工作。这是场景: 库 1 有一个类 A,其构造函数如下: public A(Object obj) { /* boilerplate */ } 在以
如果网站不需要身份验证,我的代码可以正常工作,如果需要,则在打印“已创建凭据”后会立即出现 EXC_BAD_ACCESS 错误。我不会发布任何内容,并且此代码是直接从文档中复制的 - 知道出了什么问题
我在使用 NSArray 填充 UITableView 时遇到问题。我确信我正在做一些愚蠢的事情,但我无法弄清楚。当我尝试进行简单的计数时,我得到了 EXC_BAD_ACCESS,我知道这是因为我试图
我在 UITableViewCell 上有一个 UITextField,在另一个单元格上有一个按钮。 我单击 UITextField(出现键盘)。 UITextField 调用了以下方法: - (BO
我有一个应用程序出现间歇性崩溃。崩溃日志显示了一个堆栈跟踪,这对我来说很难破译,因此希望其他人看到了这一点并能为我指出正确的方向。 基本上,应用程序在启动时执行反向地理编码请求,以在标签中显示用户的位
我开发了一个 CGImage,当程序使用以下命令将其显示在屏幕上时它工作正常: [output_view.layer performSelectorOnMainThread:@selector(set
我正在使用新的 EncryptedSharedPreferences以谷歌推荐的方式上课: private fun securePrefs(context: Context): SharedPrefe
我有一个中继器,里面有一些控件,其中一个是文本框。我正在尝试使用 jquery 获取文本框,我的代码如下所示: $("#").click(function (event) {}); 但我总是得到 nu
在以下场景中观察到 TTS 初始化错误,太随机了。 已安装 TTS 引擎,存在语音集,并且可以从辅助功能选项中播放示例 tts。 TTS 初始化在之前初始化和播放的同一设备上随机失败。 在不同的设备(
maven pom.xml org.openjdk.jol jol-core 0.10 Java 类: public class MyObjectData { pr
在不担心冲突的情况下,可以使用 MD5 作为哈希值,字符串长度最多为多少? 这可能是通过为特定字符集中的每个可能的字符串生成 MD5 哈希来计算的,长度不断增加,直到哈希第二次出现(冲突)。没有冲突的
我是一名优秀的程序员,十分优秀!