Java ALTER DATABASE失败,因为Rest调用时无法在数据库上放置锁

Java ALTER DATABASE失败,因为Rest调用时无法在数据库上放置锁,java,sql-server,Java,Sql Server,您好,我有一个从.bak文件恢复数据库的程序,当没有同名数据库时,该程序可以正常工作,但当我尝试使用该程序时,当已有同名数据库时,我会出现此错误 Could not send response error 500: javax.servlet.ServletException: javax.servlet.ServletException: java.lang.RuntimeException: java.lang.IllegalStateException: org.springfra

您好,我有一个从.bak文件恢复数据库的程序,当没有同名数据库时,该程序可以正常工作,但当我尝试使用该程序时,当已有同名数据库时,我会出现此错误

    Could not send response error 500: javax.servlet.ServletException: javax.servlet.ServletException: java.lang.RuntimeException: java.lang.IllegalStateException: org.springframework.dao.TransientDataAccessResourceException: StatementCallback; SQL [IF EXISTS (SELECT name FROM sys.databases WHERE name = N'utv_johan')
BEGIN
ALTER DATABASE utv_johan SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
drop database utv_johan;
END
]; ALTER DATABASE failed because a lock could not be placed on database 'utv_johan'.
我正在做一个旧应用程序的新版本,在旧应用程序上,它与声明和所有内容都很好地配合。我对此使用相同的代码,但是使用了一个新的React GUI。有人知道这个错误是如何发生的,以及如何修复它吗?如果您需要更多信息,请随时询问!我看到这里有人在试图关闭sql server时犯了同样的错误。但是我没有对数据库做任何与旧版本相同的调用

经过更多的测试后,它似乎可以正常工作,并且不会抛出任何错误。

看起来您的会话等于或少于另一个会话,因此,您无法
回滚他们的事务。您可以显式地设置优先级,并查看是否可以解决此问题

USE [MASTER]
SET DEADLOCK_PRIORITY 10
ALTER DATABASE utv_johan SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
DROP DATABASE utv_johan;