将 SQL 服务器管理的数据库从 Azure 导出到本地计算机后,现有密码不起作用

The existing passwords are not working after exporting SQL Server managed database from azure to local machine

将 Azure 数据库导出到存储 - 确定。 <db-name>-<date-time>.bacpac创建成功。

.bacpac 到本地 SQL 服务器的导入 - 确定; sa 用户可以登录并使用数据库。

本地服务器已配置

sp_configure 'contained database authentication', 1;  

我可以创建新用户

create user [test_new] 
    with password = 'some&very=secret-password!'

并且这个新用户可以成功登录。

但是导出前数据库中包含的用户无法使用密码登录。

我可以更改并为他们设置新密码,这很有效。

alter user [existed_user] 
    with password = 'some new or even the same pwd'

我的理解是包含专门设计用于携带身份验证信息的数据库。但由于某些原因,它不起作用。

服务器响应错误18456,状态65(即用户存在但密码不匹配)。

有没有我错过的具体操作?

我也用同样的结果对用户进行了脚本测试。

密码未以纯文本形式存储在 SQL 服务器中;他们被散列。并且哈希算法没有记录,并且可能因版本而异。但是 SQL 服务器的散列​​详细信息并不是真正的秘密,因为您可以附加调试器或 运行 PWDCOMPARE 离线。

所以看起来 Azure SQL 数据库中的密码散列与“常规”SQL 服务器不同,这是有道理的,因为它使执行离线攻击变得更加困难针对 Azure SQL 数据库密码。