将 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 数据库密码。
将 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 数据库密码。