我在 Azure 上运行了一个生产应用程序,其中包含 Azure SQL Server 和 SQL 数据库。在我的应用程序中,所有用户都是在数据库级别使用其密码创建的。
我需要通过导出和导入 BACPAC 文件将此数据库迁移到另一个 Azure 租户。导入后,我可以看到用户已转移,但无法通过现有密码登录。我怀疑这是由于 SID 更改导致登录名和用户不匹配。
如何确保所有用户在迁移后仍能正常使用,而无需他们重置或更改密码?
我在 Azure 上运行了一个生产应用程序,其中包含 Azure SQL Server 和 SQL 数据库。在我的应用程序中,所有用户都是在数据库级别使用其密码创建的。
我需要通过导出和导入 BACPAC 文件将此数据库迁移到另一个 Azure 租户。导入后,我可以看到用户已转移,但无法通过现有密码登录。我怀疑这是由于 SID 更改导致登录名和用户不匹配。
如何确保所有用户在迁移后仍能正常使用,而无需他们重置或更改密码?
如果我理解你的情况正确的话,我认为你的问题是孤立用户。当这种情况发生时,用户和它相关的登录名彼此断开连接,需要重新映射。你可以通过
ALTER USER
以下命令为每个孤立用户手动执行此操作:ALTER USER <user_name> WITH Login = <login_name>;
或者,您可以使用
sp_change_users_login
来告诉您哪些用户是孤立的,并使用命令修复它们Auto_Fix
。(请注意,此过程据称将在 SQL Server 的未来版本中删除,但微软在实际执行此操作方面的记录很少。)将 BACPAC 文件从 Azure SQL 数据库还原到 SQL Server 时,用户密码可能不起作用。发生这种情况的原因是,出于安全原因,在导出过程中会在后台更改密码。此行为是设计使然。要解决此问题,您可以按照以下步骤操作:
复制