首页 > 解决方案 > 错误 SQL72016:无法打开登录请求的数据库 XXX。登录失败

问题描述

我们面临与从本地 SQL 实例到 Azure SQL 的 bacpac 导入相关的问题。

我们在本地 SQL (DAC\140..\sqlpackage) 中生成一个 bacpac,然后将此 bacpac 导入 Azure。我们正面临这个问题:

错误 SQL72016:无法打开登录请求的数据库 XXX。登录失败

这个问题并不总是发生,我们也有这个警告:

警告 SQL0:将 SQL Server vNext CTP 指定为目标平台的项目可能会遇到与 Microsoft Azure SQL 数据库 v12 的兼容性问题。

我们如何解决这个问题?

谢谢

标签: sqlazure-sql-databasesqlpackagedata-tier-applications

解决方案


根据警告消息,您存在与 Microsoft Azure SQL 数据库 v12 的兼容性问题。这可能是导致导入错误的原因。 在此处输入图像描述

摘要

自 2018 年 1 月起,在 Azure SQL 数据库中,新创建的数据库的默认兼容性级别为 140。我们不会更新现有数据库的数据库兼容性级别。这由客户自行决定。话虽如此,我们强烈建议客户计划迁移到最新的兼容性级别,以利用最新的改进。

数据库兼容性级别是帮助数据库现代化的重要工具,它允许升级 SQL Server 数据库引擎,同时通过保持相同的升级前数据库兼容性级别来保持连接应用程序的功能状态。只要应用程序不需要利用仅在更高数据库兼容级别中可用的增强功能,它就是升级 SQL Server 数据库引擎并保持以前的数据库兼容级别的有效方法。

执行以下查询以确定您连接到的数据库引擎的版本:

SELECT SERVERPROPERTY('ProductVersion');

要确定当前的兼容级别,请查询 sys.databases 的 compatibility_level 列。

SELECT name, compatibility_level FROM sys.databases;

将某些数据库行为设置为与指定版本的 SQL Server 兼容。

ALTER DATABASE database_name
SET COMPATIBILITY_LEVEL = { 150 | 140 | 130 | 120 | 110 | 100 | 90 } 

有关详细信息,请参阅:ALTER DATABASE (Transact-SQL) 兼容级别

我认为你的 Azure SQL 数据库兼容性是 140,但你的 SQL Server 数据库引擎兼容性是 130。那就是兼容性问题。请更新到最新版本并再次测试。

希望这可以帮助。


推荐阅读