在不停止查询的情况下断开网络连接

Yus*_*seq 13 sql-server network

我有一个与断开网络连接会停止查询的相反问题吗?. 我想启动查询并断开连接而不等待结果,但我不希望查询停止。是否可以?

Dan*_*man 25

正如您的问题中引用的答案所示,SQL Server 将在检测到网络连接终止时取消正在执行的查询并回滚事务。SQL Server 会话需要连接的客户端来查询返回结果和消息(信息、警告和错误消息)。

您有几个选项可以为长时间运行的查询维护连接/会话,无论是否使用交互式客户端应用程序。

RDP 进入 SQL Server 机器或跳转框并从那里执行查询。这将允许您在客户端应用程序(例如 SSMS、SQLCMD、ADS 等)继续运行时断开与 RDP 会话的连接。您可以稍后重新连接到同一个远程桌面会话以查看结果。

使用 T-SQL、PowerShell、CmdExec 或 SSIS 作业步骤创建 SQL Server 代理作业,以在没有交互式客户端的情况下执行查询。

使用 SQLCMD、PowerShell 或其他命令行工具创建 Windows 任务计划程序任务以执行查询。

将查询封装在存储过程中,并将其作为 Service Broker 激活的过程执行。这需要启用 Service Broker 的数据库,并且 proc 代码将需要捕获结果。有关此技术的代码示例和其他注意事项,请参阅异步过程执行

如果没有交互式客户端,结果和消息将不可见,因此请确保根据您的需要记录/捕获这些内容。还要确保命令行应用程序在出错后返回非零退出代码,以便 SQL Server 代理或 Windows 任务计划程序将其报告为错误。


Dav*_*ett 12

不直接使用普通工具(SSMS 等)和访问库 - 如果断开连接,进度应该停止并且任何活动事务都将回滚。

您可以通过设置为立即启动的代理作业来运行这些语句,假设这已配置并且您的登录名具有足够的权限。