传入多个查询的脱机和联机执行问题



我有一个SQL Server服务和多个Windows服务在同一台服务器上做一些后台工作。

其中一个(我称之为"A"(有一个例程,在午夜对活动数据库执行"single_user/online"one_answers"online/multi_user"以执行一些备份操作。另一个在数据库上执行多个查询(我称之为"B"(。

问题如下:

1.-Windows服务"A"执行SET ONLINE

2.-Windows服务"B"执行随机SELECT

3.-Windows服务"A"尝试执行SET MULTI_USER。由于存在从Windows服务"B"建立的活动连接,因此此执行被删除。

我曾尝试在SqlCommand的同一CommandText上执行SET ONLINESET MULTI_USER,但这并没有拒绝来自Windows服务"B"的传入查询,从而中断了我的进程并锁定了数据库(因为SINGLE_USER(。

如何在Windows服务"A"上同时发出ONLINEMULTI_USER命令,以取消Windows服务"B"或等待进程完成?(取消Windows服务"B"不是问题(

sp_dettach_dbsp_attach_db有用吗?

听起来服务A在将数据库带入单用户模式后正在关闭其连接。这就释放了服务B成为单个用户,在这一点上,服务A不能再改变模式,直到它能够夺回单个连接,而只要服务B或任何其他客户端拥有它,它就无法做到这一点

我能想到你可以在这里做的几件事:

  1. 离线操作完成后,开始轮询,直到服务A可以再次成为单个用户
  2. 从服务B中查找连接的SPID并终止它

有关更多信息,请参阅此链接中有关单用户模式的限制和限制部分。

感谢所有人,但我从一开始就重新分析了我遇到的问题,并得出结论,"SET SINGLE_USER"操作是不必要的,因为该过程不需要在该模式下执行操作,所以最后使用"SET OFFLINE"one_answers"SET ONLINE"操作可以防止中间连接问题。

相关内容

  • 没有找到相关文章

最新更新