You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Synapse Studio无法删除Serverless内置SQL池中自建数据库问题求助

解决Azure Synapse Serverless内置SQL池无法删除数据库的方案

核心问题说明

Synapse Serverless SQL池本身不支持ALTER DATABASE的SINGLE_USER参数,所以你执行的切单用户操作会直接报错。你遇到的"数据库正在使用"报错,多是后台存在未释放的残留会话、开放的查询标签页上下文指向目标库,或是数据库关联的外部对象存在未释放的元数据锁导致。

操作步骤

  • 第一步:清理残留会话上下文
    关闭所有Synapse Studio中曾经连接过[tbfb_Test_ExtermalTables]的查询标签页,避免残留连接上下文。新开一个查询标签页,执行以下语句确保当前会话切换到master库:
    USE master;
    GO
    
  • 第二步:查询并杀掉所有指向目标库的活跃会话
    执行以下语句查询所有绑定目标库的会话:
    SELECT session_id FROM sys.dm_exec_sessions 
    WHERE database_id = DB_ID('tbfb_Test_ExtermalTables')
    
    对查询返回的所有session_id,逐个执行kill操作(替换下方的[session_id]为实际查询到的ID):
    KILL [session_id];
    GO
    
  • 第三步:执行删库操作
    注意数据库名的拼写、大小写要和创建时完全匹配,避免因排序规则大小写敏感导致操作失败:
    DROP DATABASE [tbfb_Test_ExtermalTables];
    GO
    

异常重试方案

如果执行以上步骤后仍然报错,按以下顺序排查:

  1. 暂停所有关联该数据库的Synapse管道、触发器作业,避免调度作业自动创建连接访问目标库
  2. 先清理目标库下的所有外部对象后再删库,操作语句如下:
-- 切换到目标库
USE [tbfb_Test_ExtermalTables];
GO

-- 批量删除所有外部表
DECLARE @sql NVARCHAR(MAX) = N'';
SELECT @sql += N'DROP EXTERNAL TABLE ' + QUOTENAME(SCHEMA_NAME(schema_id)) + N'.' + QUOTENAME(name) + N';' + CHAR(13)
FROM sys.external_tables;
EXEC sp_executesql @sql;
GO

-- 批量删除所有外部数据源
DECLARE @sql NVARCHAR(MAX) = N'';
SELECT @sql += N'DROP EXTERNAL DATA SOURCE ' + QUOTENAME(name) + N';' + CHAR(13)
FROM sys.external_data_sources;
EXEC sp_executesql @sql;
GO

-- 批量删除所有外部文件格式
DECLARE @sql NVARCHAR(MAX) = N'';
SELECT @sql += N'DROP EXTERNAL FILE FORMAT ' + QUOTENAME(name) + N';' + CHAR(13)
FROM sys.external_file_formats;
EXEC sp_executesql @sql;
GO

-- 切回master库删库
USE master;
GO
DROP DATABASE [tbfb_Test_ExtermalTables];
GO
  1. 等待5-10分钟后再尝试删库,部分后台元数据锁会自动超时释放。

内容的提问来源于stack exchange,提问作者user13175610

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 11:54:06