如何取消长时间运行的数据库操作?

2024-02-19

目前正在与 Oracle 合作,但还需要 MS SQL 的解决方案。

我有一个 GUI,允许用户生成将在数据库上执行的 SQL。这可能需要很长时间,具体取决于它们生成的搜索。我希望 GUI/应用程序在此搜索期间做出响应,并且希望用户能够取消搜索。

我正在使用后台工作线程。

我的问题是,当用户取消搜索时,我无法中断对数据库的调用。它会等到完成,然后可以轮询“CancelationPending”属性。这不仅浪费了数据库资源,而且还给我的代码带来了问题。

如果用户在一个很长的查询中点击“搜索”,然后点击“取消”,然后再次“搜索”——第一个搜索仍在数据库中缓慢进行。当他们再次点击搜索时,后台工作人员仍然忙碌。我解决这个问题的唯一方法是创建一个新的后台工作者。

这似乎是一种非常丑陋的做事方式。数据库继续工作我正在创建后台工作人员的新实例......当我真的想停止数据库调用并重新使用同一个工作人员时。

我怎样才能做到这一点?


如果您使用 ADO.NET 和 SQL 数据提供程序,请查看 SqlCommand.Cancel 方法。这正是您正在寻找的。但是,它会尝试取消,并且取消可能需要时间。基本上,由 SQL Server 决定何时批准您的取消请求。当查询被取消时,您应该得到一个 SqlException ,指示用户取消了操作。显然,您不想将此异常视为异常并对其进行特殊处理,例如如果 SqlException 是由于用户取消操作而导致的,则只需吞掉它即可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何取消长时间运行的数据库操作? 的相关文章

  • 如何列出表中的所有列?

    对于各种流行的数据库系统 如何列出表中的所有列 对于 MySQL 请使用 DESCRIBE name of table 只要您使用 SQL Plus 或 Oracle 的 SQL Developer 这也适用于 Oracle
  • 实体框架 - 循环更新属性

    我正在尝试找到一种方法来循环 EF 对象的属性并更新这些属性的值 更具体地说 我有 50 个字段 其中最多填充 50 个下拉列表 所有 50 个可能都需要填充 也可能不需要填充 为了解决这个问题 我有一个中继器 最多可以创建 50 个 DD
  • 使用 Thread.Sleep() 时,异步编程如何与线程一起工作?

    假设 前言 在之前的问题中 我们注意到Thread Sleep阻塞线程参见 什么时候使用Task Delay 什么时候使用Thread Sleep https stackoverflow com questions 20082221 whe
  • Parallel.For 和 Break() 误解?

    我正在研究 For 循环中的并行性中断 看完之后this http tipsandtricks runicsoft com CSharp ParallelClass html and this http reedcopsey com 201
  • 专家 C#/.Net/WPF 开发人员应该了解哪些知识? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 无论表单上的焦点控件如何,如何捕获 Keys.F1?

    我使用了 KeyDown 事件和一些简单的代码 例如if e KeyCode Keys F1 捕获在表单上按下 F1 但如果表单上有一些文本框 或者表单上有一些带有 Dock Fill 的电子表格 则上面的代码将毫无用处并且不执行任何操作
  • 父窗体中的居中消息框[重复]

    这个问题在这里已经有答案了 有没有一种简单的方法可以在 net 2 0中将MessageBox居中于父窗体中 我在 C 中确实需要这个并发现中心消息框 C http bytes com topic c sharp answers 26712
  • 使用 LINQ to SQL 的 .NET 架构的最佳设计实践(DAL 必要吗?我们真的可以使用 POCO吗?要采用的设计模式吗?)

    我避免在 net arch n 层架构上编写看起来像是另一个线程的内容 但请耐心等待 希望我和其他人一样 在选择用于企业应用程序的架构时 考虑到当今的趋势和新兴技术 仍然没有 100 满意或不清楚应采取的最佳方法 我想我正在寻求大众社区对方
  • 如何在 PHP MYSQL 中将数据库表和每条记录从一台数据库服务器复制到另一台数据库服务器?>

    您好 我编写了一段代码 可以将数据库表从一个服务器复制到另一个服务器 但是每个表的记录没有复制 如何编写一个可以将表和每个记录从一个数据库服务器复制到另一个数据库服务器的函数 这是我的示例代码
  • 依赖注入的惰性解析

    我有 net 课程 我使用 Unity 作为 IOC 来解决我们的依赖关系 它尝试在开始时加载所有依赖项 Unity中有没有一种方法 设置 允许在运行时加载依赖项 还有更好的解决方案 Unity 2 0 中对 Lazy 和 IEnumera
  • 查询 dns 别名

    我找到了一些code http msdn microsoft com en us library system net dns gethostbyaddress VS 71 aspx来自 msdn 站点 下面包含代码 看起来它将返回给定服务
  • C# 证书生成框架

    有谁知道可以生成公钥 私钥 X 509 证书并签署这些证书的 C 框架 BouncyCastleCrypto 虽然这个名字很疯狂 但我很确定它具有所有这些功能 几乎所有 RFC 标准均已实施 当我几年前使用它时 它的文档记录很少 但是单元测
  • JavaScript:根据文化格式化数字/货币,例如 .NET String.Format()?

    这似乎是一个有人在 2009 年就已经解决的问题 但我找不到一个像样的 JavaScript 库 它需要这样的数字 12345 58 并根据特定区域性 即 nl nl 或 ISO 货币代码正确设置其格式 dojo 表现出了希望 但它默认不包
  • 将 C# 字符串传递给非托管 C++ DLL

    我有一个简单的应用程序 它加载一个非托管 dll 并从 C 向它传递一些字符串值 但在 C dll 应用程序中 我收到异常 试图访问读 写保护的内存 我的 DLL 导入如下所示 DllImport X dll CallingConventi
  • FullCalendar Asp.Net WebForms

    我正在尝试实施全日历 https i stack imgur com wmhGx png在我的 ASP NET 上WebForms项目 我见过一些实现此目的的示例 但没有任何运气 因为它们是针对我不习惯的 MVC 的 My Events数据
  • 使用 ContractNamespace 属性设置 WCF DataContract 命名空间

    在设计我的服务时 我决定要自定义出现在生成的 WSDL 中的名称空间 对于数据合同 我遇到了合约命名空间 http msdn microsoft com en us library system runtime serialization
  • ASP.NET Core 与现有的 IoC 容器和环境?

    我想运行ASP NET 核心网络堆栈以及MVC在已托管现有应用程序的 Windows 服务环境中 以便为其提供前端 该应用程序使用 Autofac 来处理 DI 问题 这很好 因为它已经有一个扩展Microsoft Extensions D
  • SSL/TLS/HTTPS 站点在 C#/.NET WebBrowser 控件中非常慢,但在 Internet Explorer 中则很好

    背景 我正在修改自动维基浏览器 http en wikipedia org wiki Wikipedia AutoWikiBrowser使用托管在安全服务器上的 MediaWiki 站点 我允许用户通过 C 应用程序中的 WebBrowse
  • 如何在 Oracle 上生成版本 4(随机)UUID?

    该博客解释说 输出sys guid 对于每个系统来说不是随机的 http feuerthoughts blogspot de 2006 02 watch out for sequential oracle guids html http f
  • 从 Delphi 调用 C# dll

    我用单一方法编写了 Net 3 5 dll 由Delphi exe调用 不幸的是它不起作用 步骤 1 使用以下代码创建 C 3 5 dll public class MyDllClass public static int MyDllMet

随机推荐

  • 禁用模板缓存 Jinja2

    我正在尝试禁用 Jinja2 的模板缓存 我环顾四周 发现有一个cache sizejinja 环境的参数 我正在使用以下内容 app jinja env jinja2 Environment cache size 0 loader jin
  • dnx/dotnetcore 包缓存位置可以更改吗

    我的计算机的 C 驱动器空间不足 我想将 DNX DOTNET 软件包的安装位置更改为 D 驱动器下的位置 包缓存位置可以配置吗 注意 我无法灵活地将我的配置文件位置更改为不同的驱动器 Use the NUGET PACKAGES环境变量并
  • Java比较两个地图

    在java中 我想比较两个地图 如下所示 我们是否有现有的API来执行此操作 Thanks Map
  • 如何修改GitBook中的字体大小?

    正如标题所示 有一个名为 编辑配置 的首选项GitBook https www gitbook io 编辑 它说你应该使用 json 来构建book json 我该如何编写这个文件来修改字体大小 在网上搜索了一下 几乎没有找到任何有用的文章
  • 如何在 Linux Bash 中将 ls 分配给数组?

    array ls d echo array 我有三个目录 ww ee qq 我希望它们位于一个数组中 然后打印该数组 会是这个 array ls d 编辑 参见戈登 戴维森的解决方案 https stackoverflow com a 18
  • 如何在禁用组框时禁用组框文本?

    我面临组框文本的问题 我通过调用 EnableWindow FALSE 禁用了组框 问题是组框标题没有变灰 谁能告诉我为什么会发生这种情况以及如何摆脱这个问题 这似乎是 comctrl32 dll 中的一个错误视觉风格 https lear
  • 当应用程序在后台时,iPhone PresentLocalNotificationNow 不会触发警报和声音

    我有一个应用程序注册位置更新 运行测试 有时当我在应用程序处于后台时进入某个区域时 我会收到带有声音的警报通知 有时我只在通知中心看到通知 而没有收到任何声音和警报 您可以做什么来始终收到声音和警报通知 这就是我的看法 UILocalNot
  • android Rect.intersect 始终为 false

    士兵级 centerX speedX r set centerX centerY 50 50 子弹级 centerX speedX r set centerX centerY 50 50 if Rect intersects r GameS
  • MVC 中的 ViewModel 和与实体框架的一对多关系?

    我有一个用于在数据库中存储有关顾问的信息的应用程序 该模型是一个实体框架模型 数据库表与许多其他表 工作经验 计划 能力区域等 具有一对多关系 现在 当我想在视图中创建一个新的 Consultant 对象时 我实际上只想将 Consulta
  • 如何仅使用串行控制台将二进制闪存文件发送到嵌入式系统?

    我有一个使用 ramdisk 启动的嵌入式 Linux 系统 因此它运行时没有可用的持久存储 它有闪存来存储内核和 ramdisk 唯一的连接是 RS 232 串行登录控制台 所以我受到其内置 busybox 提供的功能的限制 我想检索 r
  • UILabel 文本在更新时重叠?

    在我的应用程序中 我将文本标签的值从初始值 0 更改为触摸事件时递增 有时 但并非总是如此 新值会覆盖在 0 上 这并不酷 这是相关代码 UITableViewCell cell tableView cellForRowAtIndexPat
  • 在 C++ 中获取文本 CSV 文件中的字符串

    我有一个这样的大型 CSV 75 MB 1 3 4 1 5 4 2 4 0 1 11 3 我用这段代码存储我的数据 C风格 include
  • 如何保护 Laravel 环境文件中存储的数据库凭据的安全?

    我最近切换到基于环境的 Laravel 应用程序部署 并决定使用 ENV 将本地和生产服务器的凭据存储在 env 文件中 但是我发现打开调试时会抛出异常显示公开数据库凭据的环境变量 现在我确信调试将始终在生产中关闭 因为这是我的默认设置 然
  • Firebase - 获取用户时权限被拒绝

    我正在尝试使用此代码从 Firebase 数据库中获取用户 但出现此错误 取消错误错误域 com firebase代码 1 权限被拒绝 UserInfo NSLocalizedDescription 权限被拒绝 我的规则应该如何设置 这是代
  • 清单的 Robolectric @Config 路径值

    我正在尝试运行 robolectric 单元测试 但收到错误 因为在路径上找不到 AndroidManifest xml 任何人都可以给我一个 Config 清单值的示例路径 是相对路径还是绝对路径 提前致谢 如果您使用 Maven 来运行
  • Java - 复制 JPG 同时保留所有文件属性

    在保持文件所有属性 创建日期 日期等 的同时移动 复制文件的最佳方法是什么 谢谢 如果您使用的是 Java 7 请使用java nio file Files copy Path source Path target CopyOption o
  • jsp页面多语言支持

    在JSP页面中使用上述指令时 无法在JSP页面中显示俄语和匈牙利语字符 有没有办法在同一个JSP页面中支持俄语和匈牙利语字符 如果我使用charset UTF8 好吧 或者还有其他办法吗 ISO 8859 1 字符集支持only列出的字符h
  • 检测 Windows 字体大小(100%、125% 和 150%)

    我创建了一个应用程序 该应用程序在用户选择 125 或 150 之前都可以完美运行 这会破坏我的申请 后来我找到了通过检测DPI来找到字体大小的方法 在使用中文版 Windows 7 的用户开始使用我的应用程序之前 这种方法一直运行良好 整
  • python在函数中存储变量并稍后使用它[重复]

    这个问题在这里已经有答案了 是否可以将 while 循环中的变量存储到函数中 然后在循环结束时从函数中调用同一变量 例如 在 while 循环期间 这里的问题是 当我尝试从 store 检索变量时 它失败了 因为它需要传递参数 def st
  • 如何取消长时间运行的数据库操作?

    目前正在与 Oracle 合作 但还需要 MS SQL 的解决方案 我有一个 GUI 允许用户生成将在数据库上执行的 SQL 这可能需要很长时间 具体取决于它们生成的搜索 我希望 GUI 应用程序在此搜索期间做出响应 并且希望用户能够取消搜