我正在尝试删除 azure 门户中的数据酶。从 SQL 池中删除后,我收到以下错误:
消息 37106,级别 16,状态 1,第 7 行 服务器 {'servername}' 上的数据库 '{databasename}' 正在由作业帐户 'jobagent' 使用。与作业帐户关联时,无法删除或重命名数据库。
我应该如何解决这个问题?
我正在尝试删除 azure 门户中的数据酶。从 SQL 池中删除后,我收到以下错误:
消息 37106,级别 16,状态 1,第 7 行 服务器 {'servername}' 上的数据库 '{databasename}' 正在由作业帐户 'jobagent' 使用。与作业帐户关联时,无法删除或重命名数据库。
我应该如何解决这个问题?
如果您没有其他数据库,您可以简单地删除服务器并重新创建它。这会让你绕过这个问题。
否则按照以下步骤删除数据库
您可以通过右键单击网格中的进程并选择 Kill Process 菜单项来终止进程。您将被要求确认终止相关进程,然后将通过此进程终止与数据库的打开连接。这个动作就像为单个进程运行杀死 sql 进程的 t-sql 命令。
可以通过生成运行命令列表的动态 sql 命令来实现删除数据库的所有活动连接的方法"Kill @spId"
。
DECLARE @DatabaseName nvarchar(50)
SET @DatabaseName = N'Works'
--SET @DatabaseName = DB_NAME()
DECLARE @SQL varchar(max)
SET @SQL = ''
SELECT @SQL = @SQL + 'Kill ' + Convert(varchar, SPId) + ';'
FROM MASTER..SysProcesses
WHERE DBId = DB_ID(@DatabaseName) AND SPId <> @@SPId
-- SELECT @SQL
EXEC(@SQL)
与上面的 sql 代码非常相似,使用 COALESCE 可以使用其他代码块,如下所示
DECLARE @DatabaseName nvarchar(50)
SET @DatabaseName = N'Works'
DECLARE @SQL varchar(max)
SELECT @SQL = COALESCE(@SQL,'') + 'Kill ' + Convert(varchar, SPId) + ';'
FROM MASTER..SysProcesses
WHERE DBId = DB_ID(@DatabaseName) AND SPId <> @@SPId
--SELECT @SQL
EXEC(@SQL)
你也可以参考这篇文章