是否有合适的方法将SQL Server 2016分片数据库从自托管数据库迁移到Azure数据库?
我有一个SQL Server 2016分片数据库,它是我正在使用的平台(Sitecore 10)的一部分。它有一个分片地图管理器数据库和两个分片数据库。我想将数据库从自托管迁移到Azure数据库。
当数据库位于SQL Server实例中时,它有一个登录名映射到Shard Map Manger用户和两个Shard用户。一切都很好。由于Azure数据库不以相同的方式使用登录,并且数据库部分包含,因此我在Azure中的每个数据库中使用相同的名称和密码创建了单独的用户。
接下来,我使用Azure数据迁移服务迁移了模式,然后迁移了数据。Sitecore提供了一些存储过程来设置权限,我运行了这些存储过程。
最后,我更新了两个分片数据库中ShardMapManager DB的[__ShardManagement].[ShardsGlobal]
表和[__ShardManagement].[ShardsLocal]
表中的ServerName和DatabaseName字段,以匹配新的服务器和数据库名称。
当我更新应用程序以使用新数据库时,它在日志中抛出错误,最终跟踪到用户登录失败。该应用程序还有13个其他数据库也已迁移,并且工作正常,只有已分片的数据库不能在应用程序中运行。我运行了一个PowerShell脚本来测试所有数据库的连接字符串。所有连接字符串都成功。仅回退分片数据库的连接字符串可以修复错误,从而证明与分片数据库的连接才是问题所在。
我做错了什么?我应该做些什么来纠正它?
发布于 2021-10-20 07:43:29
如果需求只是将数据库从本地迁移到Azure,最好的方法是使用SQL Server Management Studio (SSMS)。
优点是,您可以在迁移时在Azure上提及新的数据库名称,因此不需要在以后进行更改。但只需确保相同名称的数据库不应已在Azure SQL Server中可用。
您可以按照my this answer中的迁移步骤操作。
此外,我的建议是通过官方文件Assessment rules for SQL Server to Azure SQL Database migration,Troubleshoot connecting to the SQL Server Database Engine。我相信你会在那里找到有用的见解,这可能有助于使迁移的数据库与应用程序正常工作。
https://stackoverflow.com/questions/69638049
复制相似问题