如何编写查询以使其在服务器中运行而不会在页面刷新时被取消?
How to write a query so that it runs in server without getting cancelled out on page refresh?
假设我有一个网页。在该网页中,我有一个带有点击事件监听器的按钮。当我单击该按钮时,它会调用 ajax(XMLHttpRequest)来更新服务器端数据库中的某些值。我的数据库查询需要很长时间才能完成,因此响应也需要很长时间才能返回客户端(因为代码是同步的)。同时,如果我刷新我的网页,ajax 请求将被取消并且更新查询也会停止。
我想让它以这样的方式工作,即我将进行 ajax 调用,它会启动数据库查询但不会等待它完成。而且就算,我刷新了页面,数据库查询也不应该取消掉。
在后端(服务器端),我有 C# asp.net 框架和 sql 服务器数据库。
所以 ajax 调用转到我用 C# 编写的服务器端代码,然后我从那里调用包含长查询的存储过程。
我希望 ajax 调用将启动这个长查询,而不是等待查询完成。即使我刷新页面,查询也不会被取消。(Ajax 调用可能会被取消但是查询
不应该在我的服务器中停止 运行)
C#、dapper、asp.net 和 sql 服务器有哪些方法可以实现这个场景?
如果查询需要很长时间,您有一个单独的临时文件 table 用于存储查询结果。
您为查询创建了一个存储过程,并将查询结果存储到临时 table 中,用户名作为单独的列。
您可以从 UI 启动存储过程,您应该有一个 ajax 方法来从特定用户的临时 table 检索最新结果。
希望你能理解我的解释。
已更新:
有一个单独的 table 用于启动存储过程。现在,您可以在后台为每个 onChange 通知使用 运行 存储过程的 sqldependency。请查看此答案以了解 sqldependency 实现。
希望对您有所帮助
假设我有一个网页。在该网页中,我有一个带有点击事件监听器的按钮。当我单击该按钮时,它会调用 ajax(XMLHttpRequest)来更新服务器端数据库中的某些值。我的数据库查询需要很长时间才能完成,因此响应也需要很长时间才能返回客户端(因为代码是同步的)。同时,如果我刷新我的网页,ajax 请求将被取消并且更新查询也会停止。
我想让它以这样的方式工作,即我将进行 ajax 调用,它会启动数据库查询但不会等待它完成。而且就算,我刷新了页面,数据库查询也不应该取消掉。
在后端(服务器端),我有 C# asp.net 框架和 sql 服务器数据库。
所以 ajax 调用转到我用 C# 编写的服务器端代码,然后我从那里调用包含长查询的存储过程。
我希望 ajax 调用将启动这个长查询,而不是等待查询完成。即使我刷新页面,查询也不会被取消。(Ajax 调用可能会被取消但是查询 不应该在我的服务器中停止 运行)
C#、dapper、asp.net 和 sql 服务器有哪些方法可以实现这个场景?
如果查询需要很长时间,您有一个单独的临时文件 table 用于存储查询结果。
您为查询创建了一个存储过程,并将查询结果存储到临时 table 中,用户名作为单独的列。
您可以从 UI 启动存储过程,您应该有一个 ajax 方法来从特定用户的临时 table 检索最新结果。
希望你能理解我的解释。
已更新:
有一个单独的 table 用于启动存储过程。现在,您可以在后台为每个 onChange 通知使用 运行 存储过程的 sqldependency。请查看此答案以了解 sqldependency 实现。
希望对您有所帮助