Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL死锁..现在处于单用户模式_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

SQL死锁..现在处于单用户模式

SQL死锁..现在处于单用户模式,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,今天早上,两个数据库在单用户模式下运行时出错。由于以下错误,我无法执行任何操作:( 我在尝试以下操作(将主数据库用作系统管理员)时收到该错误: 为此,我尝试重新启动SQL Server,尝试终止所有进程,甚至尝试自己重置单个用户: ALTER DATABASE dbname SET SINGLE_USER WITH ROLLBACK IMMEDIATE; GO 正在运行的作业旨在复制数据库,并立即将其置于单用户模式,以尝试加快速度 不管怎样,我可以把锁取下来吗?好的,我自己回答 我必须使用以下

今天早上,两个数据库在单用户模式下运行时出错。由于以下错误,我无法执行任何操作:(

我在尝试以下操作(将主数据库用作系统管理员)时收到该错误:

为此,我尝试重新启动SQL Server,尝试终止所有进程,甚至尝试自己重置单个用户:

ALTER DATABASE dbname
SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
正在运行的作业旨在复制数据库,并立即将其置于单用户模式,以尝试加快速度


不管怎样,我可以把锁取下来吗?

好的,我自己回答

我必须使用以下方法:

sp_who
它显示了当前连接的用户和会话的详细信息,然后我想起了Activity Monitor,它显示了相同的内容…无论如何,它把我从办公桌上带到了某个违反我意愿与数据库保持连接的窃听者那里

无论如何,一旦我关闭了电脑(拔下它…活该),我就可以运行SQL将其修改为
MULTI_USER
模式(使用系统管理员用户):

仅供关心此问题的人员参考,此功能可用于立即将数据库设置为
单用户

ALTER DATABASE dbname
SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
更多详细信息,如果您知道进程id,可以使用
kill pid

kill 62
请记住,SSMS也为您的用户创建了一个流程,在我的案例中,由于另一个原因,该流程被拒绝

编辑:根据Bobby的建议,我们可以使用:

sp_Who2 

这可以告诉我们哪个进程被另一个进程阻止。

也有同样的问题。这对我来说很有效:

set deadlock_priority high; -- could also try "10" instead of "high" (5)
alter database dbname set multi_user; -- can also add "with rollback immediate"
根据想法/解释:


当相关系统进程处于死区场景时。
SPID 15和SPID 29-都是后台系统进程

在这种情况下,这有助于:

--------- START OF CMDs--------   
SET DEADLOCK_PRIORITY HIGH ---- could also try "10" instead of "high" (5)  
GO  
ALTER DATABASE <dbname> SET SINGLE_USER WITH ROLLBACK IMMEDIATE  
GO  
ALTER DATABASE <dbname> SET MULTI_USER  
GO   
-------------------------- END OF CMDs ------------------  
-----------CMDs的启动--------
将死锁设置为高优先级——也可以尝试“10”而不是“高”(5)
去
ALTER DATABASE SET单用户,立即回滚
去
ALTER数据库集多用户
去
--------------------------CMDs结束------------------

如果使用sp_Who2,您可以在“BlkBY”中找出哪个进程被哪个进程阻止类别。仅供参考。为博比干杯,我会将其添加到信息中。我很感激。仍然无法实现此功能。即使运行了所有内容,它仍然表示无法实现此功能,因为数据库以单用户模式运行。我使用的是SQL Server 2005。:-/sp_who2显示了什么?执行命令abov时是否报告成功e或您是否收到错误?sql server max concurrent connections的设置是什么?还有一些其他堆栈交换问题/答案可能会引导您走向其他路径
sp_Who2 
set deadlock_priority high; -- could also try "10" instead of "high" (5)
alter database dbname set multi_user; -- can also add "with rollback immediate"
--------- START OF CMDs--------   
SET DEADLOCK_PRIORITY HIGH ---- could also try "10" instead of "high" (5)  
GO  
ALTER DATABASE <dbname> SET SINGLE_USER WITH ROLLBACK IMMEDIATE  
GO  
ALTER DATABASE <dbname> SET MULTI_USER  
GO   
-------------------------- END OF CMDs ------------------