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

从Azure SQL导入bacpac到本地SQL Server遇权限错误求助

解决Bacpac导入SQL Server时的KILL DATABASE CONNECTION权限错误

问题描述

尝试通过SSMS或sqlpackage.exe导入.bacpac文件至本地SQL Server(含Express版本)时,无论手动操作还是脚本执行均触发相同错误。

执行的导入脚本:

.\SqlPackage.exe /Action:Import /SourceFile:"C:\Backup\mydb.bacpac" /TargetConnectionString:"Data Source=LAPTOP-DELL-DAVE\SQLEXPRESS;Initial Catalog=copyX; Integrated Security=true;Encrypt=False"

报错输出:

Creating deployment plan
Initializing deployment
Verifying deployment plan
Analyzing deployment plan
Importing package schema and data into database
Updating database
*** Error importing database:Could not import package.
Error SQL72014: Core Microsoft SqlClient Data Provider: Msg 4630, Level 16, State 1, Line 1 The permission 'KILL DATABASE CONNECTION' is not supported in this version of SQL Server. Alternatively, use the server level 'ALTER ANY CONNECTION' permission.
Error SQL72045: Script execution error. The executed script:
GRANT KILL DATABASE CONNECTION TO [3d72312312312wo];

已尝试启用包含数据库认证但无效果:

sp_configure 'contained database authentication', 1;  
GO  
RECONFIGURE;  
GO

该问题在SQL Server 2019(版本15)和SQL Server 2022(版本16)中均存在。

原因分析

KILL DATABASE CONNECTION是Azure SQL数据库/托管实例专属的数据库级权限,本地SQL Server全版本均不支持此权限,对应的等效服务器级权限为ALTER ANY CONNECTION。Bacpac文件中包含了针对Azure环境的权限脚本,导致导入本地SQL Server时失败。

解决方案

方案1:提前授予服务器级权限

在执行导入操作前,针对报错中提到的用户([3d72312312312wo])授予服务器级的ALTER ANY CONNECTION权限:

USE master;
GO
GRANT ALTER ANY CONNECTION TO [3d72312312312wo];
GO

完成导入后,若无需该权限可执行以下语句回收:

USE master;
GO
REVOKE ALTER ANY CONNECTION FROM [3d72312312312wo];
GO

方案2:修改Bacpac文件中的权限脚本

  1. 将.bacpac文件重命名为.zip格式并解压。
  2. 在解压后的文件中找到model.xml,用文本编辑器打开。
  3. 搜索所有GRANT KILL DATABASE CONNECTION语句,替换为GRANT ALTER ANY CONNECTION。
  4. 将修改后的文件重新打包为.zip,再改回.bacpac后缀。
  5. 使用修改后的bacpac文件执行导入操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 11:58:00