che*_*d23 0 .net c# linq asp.net linq-to-sql
目前,我需要创建一个报告程序,该程序在SQL数据库中的许多不同表上运行报告.多个不同的客户端需要此功能,但某些客户端拥有比其他客户端更大 我想知道的是,如果查询一段时间过长,是否有可能在一段时间后停止查询.
为了给出一些上下文,一些客户端具有超过200万行的表,尽管不同的客户端在同一个表中可能只有50k行.我希望能够运行20秒的查询,如果还没有完成,那么向用户返回一条消息,说结果集太大,报告需要在小时之外生成不希望在白天运行资源密集型操作.
在连接字符串或DataContextvia CommandTimeout属性上设置连接超时.超时到期后,您将获得一个TimeoutException,您的查询将被取消.
您无法确定在超时发生时服务器上是否取消了查询,但在大多数情况下,它会相当快地取消.有关详细信息,请阅读优秀的文章"没有查询超时......".那里的重要部分是:
客户端使用注意事件向服务器发出查询超时信号.注意事件只是SQL Server客户端可以发送给它的不同类型的TDS数据包.除了连接/断开连接,T-SQL批处理和RPC事件之外,客户端还可以发出对服务器的注意信号.注意告诉服务器尽快取消连接当前正在执行的查询(如果有).注意不会回滚打开的事务,并且它不会停止当前正在执行的查询 - 服务器会在下一个可用机会中止它为连接所做的任何操作.通常,这种情况很快发生,但并非总是如此.
但请记住,它在提供商与提供商之间会有所不同,甚至可能会在服务器版本之间发生变化.
| 归档时间: |
|
| 查看次数: |
315 次 |
| 最近记录: |