YuseqYaseq Asked: 2020-08-13 02:17:39 +0800 CST2020-08-13 02:17:39 +0800 CST 2020-08-13 02:17:39 +0800 CST 在不停止查询的情况下断开网络 772 我有一个相反的问题,断开网络是否会停止查询?. 我想在不等待结果的情况下启动查询并断开连接,但我不希望查询停止。可能吗? sql-server network 3 个回答 Voted Best Answer Dan Guzman 2020-08-13T03:35:20+08:002020-08-13T03:35:20+08:00 正如您问题中引用的答案所示,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 任务计划程序将其报告为错误。 David Spillett 2020-08-13T02:53:32+08:002020-08-13T02:53:32+08:00 不直接使用普通工具(SSMS 等)和访问库 - 如果您断开连接,进度应该停止并且任何活动事务都将回滚。 您可以通过设置为立即启动的代理作业运行语句,假设已配置并且您的登录具有足够的权限。 bf2020 2020-08-13T19:16:51+08:002020-08-13T19:16:51+08:00 这个答案与 Dan Guzman 的答案非常相似,但确实略有不同。将 RDP 放入您有权使用的永远在线框中,然后从那里提交执行。然后,Always on box 可以引发某种信号量或进行一些进一步的处理。如果您必须让客户端提交请求,然后您甚至不再需要 RDP,请使用任务计划程序。 如果我混淆了跳箱并重申他的观点,请向 Dan 道歉。
正如您问题中引用的答案所示,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 任务计划程序将其报告为错误。
不直接使用普通工具(SSMS 等)和访问库 - 如果您断开连接,进度应该停止并且任何活动事务都将回滚。
您可以通过设置为立即启动的代理作业运行语句,假设已配置并且您的登录具有足够的权限。
这个答案与 Dan Guzman 的答案非常相似,但确实略有不同。将 RDP 放入您有权使用的永远在线框中,然后从那里提交执行。然后,Always on box 可以引发某种信号量或进行一些进一步的处理。如果您必须让客户端提交请求,然后您甚至不再需要 RDP,请使用任务计划程序。
如果我混淆了跳箱并重申他的观点,请向 Dan 道歉。