我正在尝试将从 Azure SQL 数据库获取的 bacpac 文件导入到 SQL Server。我尝试使用 SSMS“导入数据层应用程序”,它给了我:
更新数据库 *** 导入数据库时出错:无法导入包。错误 SQL72014:核心 Microsoft SqlClient 数据提供程序:消息 4630,级别 16,状态 1, 第 1 行 不支持“KILL DATABASE CONNECTION”权限 此版本的 SQL Server。或者,使用服务器级别“ALTER” 任何连接的许可。错误 SQL72045:脚本执行错误。 执行的脚本:GRANT KILL DATABASE CONNECTION TO [测试数据库];
我也尝试使用 Windows 中的
SQLPackage.exe
,但它在命令行中给了我完全相同的错误。我在谷歌搜索错误代码或描述时没有找到太多帮助。
我尝试按照以下过程将 azure SQL 数据库的 .bacpac 文件导入到我的本地/本地 SQL 服务器中: 右键单击数据库并选择导入数据层应用程序。
进入介绍页面,单击导入设置页面中的下一步,从本地浏览 .bacpac 文件。如果它在天蓝色存储中,我们也可以从那里浏览它。
指定数据库名称:
点击下一步将进入摘要页面:
点击下一步执行导入操作。
数据库导入成功。
就我而言,我使用的是 SSMS 最新版本,没有收到任何错误。
根据您的错误,您需要在本地 SQL Server 上启用“包含的数据库身份验证”。它始终在 Azure SQL 数据库中启用,您可以使用以下代码来启用:
sp_configure 'contained database authentication', 1;
GO
RECONFIGURE;
GO
你可以检查this
我们遇到了同样的问题,并通过以下步骤解决了此问题:
解压 bacpac 文件。
找到model.xml文件并将其复制到某个目录,例如C盘。 打开 model.xml 文件并找到内容为“Grant.KillDatabaseConnection”的 SqlPermissionStatement 元素。
重新压缩 bacpac 文件而不更改任何内容
从 XML 文件中删除与此权限关联的整个...块。
使用 sqlpackage.exe 导入操作时,请将参数 /mfp:"YourCopiedModel.xmlPath" 添加到命令中。这指示 SQL 包使用编辑后的 model.xml 文件,而不是 bacpac 中的原始文件。 按照这些步骤,您应该能够成功导入数据库,而不会遇到权限错误。