导入Azure SQL的bacpac到本地SQL Server时遇KILL权限错误,如何解决?
问题解决:导入Azure SQL bacpac到SQL Server时KILL DATABASE CONNECTION权限错误
问题原因
Azure SQL支持数据库级的KILL DATABASE CONNECTION权限,但本地SQL Server仅提供服务器级的ALTER ANY CONNECTION权限,bacpac导出的脚本沿用了Azure SQL的权限语句,导致导入时触发兼容性错误。
解决方案1:修改bacpac包中的权限脚本
- 将bacpac文件重命名为
.zip格式,解压到本地目录 - 在解压文件中找到包含权限配置的脚本(通常为
Model.sql) - 定位到语句:
GRANT KILL DATABASE CONNECTION TO [test_db];,替换为:GRANT ALTER ANY CONNECTION TO [test_db]; - 将修改后的文件重新打包为zip格式,再改回
.bacpac后缀 - 使用SSMS「导入数据层应用」或SQLPackage.exe重新导入修改后的bacpac
解决方案2:预授权+跳过权限脚本(临时快速方案)
- 先在目标SQL Server执行授权语句:
GRANT ALTER ANY CONNECTION TO [test_db]; - 使用SQLPackage.exe导入时添加参数跳过权限检查:
SqlPackage.exe /Action:Import /SourceFile:"C:\path\to\your.bacpac" /TargetConnectionString:"Server=你的服务器名;Database=test_db;Integrated Security=True" /p:IgnorePermissions=True
内容的提问来源于stack exchange,提问作者goxarad784
相关产品推荐
相关产品推荐

