【问题标题】:.Net Core Identity - migrate from Postgresql to SQL Server.Net Core Identity - 从 Postgresql 迁移到 SQL Server
【发布时间】:2020-02-10 08:08:11
【问题描述】:

我有一个带有 Identity 的 .NET Core 3.0 MVC 网站。该数据库是一个 Postgresql 数据库(主要是因为地理数据的性能更好)。但是由于唯一可以使用 postgresql 的人已经退出,我必须迁移到 SQL Server(由于内部政策)。

但在大网上并没有太多关于此特定迁移的信息。

我有一些想法,但由于设置测试需要相当长的时间,我想先在这里查看。

  • 是否只是在数据库之间复制所有表的问题(复制/导出数据 - 更改连接字符串 - 人们甚至不会注意到更改)?
  • 使用实体框架编写一个小脚本,使用默认密码将所有用户复制到新数据库 - 用户必须在首次登录时更改密码
  • 人们必须重新注册
  • 以上的组合

编辑:问题不在于表和数据类型,但我关心的是密码和哈希。我可以将所有值复制到 SQL 数据库,然后人们可以登录吗?

表中有一个密码哈希,我认为它可能使用其他变量(如数据库引擎)来创建哈希。

【问题讨论】:

  • 如果应用程序构建在同一个堆栈上。在您的情况下,Dot net core 可以说是 Aspnet Identity,然后可以毫无问题地迁移哈希。一切都由 dotnet 处理,并且不绑定到底层数据存储。创建模式并填充它,你会很高兴的。无需重新散列或让您的用户更改他们的密码。只需移动数据
  • @cleftheris 感谢您的回复。我要测试这个,可能下周。仍然掌握stackoverflow的窍门,但我认为我无法将您的答案标记为正确(如果结果证明它是正确的)
  • @kenhas 我将评论移至答案,因此如果一切顺利,您可以将其标记为正确。
  • 你可以在这里使用我的答案:stackoverflow.com/questions/6563846/…

标签: sql-server postgresql asp.net-core asp.net-core-identity


【解决方案1】:

如果应用程序构建在同一个堆栈上,假设在您的情况下是带有 Aspnet Identity 的 Dot net core,那么可以毫无问题地迁移哈希值。一切都由 dotnet 处理,并且不绑定到底层数据存储。

创建架构并填充它,您就可以开始了。无需重新散列或让您的用户更改密码。只需移动数据

【讨论】:

  • 从 postgresql 迁移到 ms sql 比我预期的要多一些工作,但复制了所有内容并能够使用新数据库登录。谢谢
【解决方案2】:

您需要弄清楚您在 Postgresql 中使用了哪些数据类型,以及它们在 MSSQL 上的等价物。大多数数据类型是相同/相似的,而可能有一些没有直接等效的数据类型。

有很多方法可以在数据库之间移动数据。在这种情况下,一种可能的简单方法是使用pg_dump 转储您的 postgres 数据库。这将为您提供一个带有 sql 语句的文本文件,以重新创建数据库。然后,您可以根据需要修改 sql 语句以处理您的 MSSQL 数据库。

【讨论】:

  • 通过阅读您的回答,我知道我必须改变我的问题。这实际上与数据类型和表格无关,而与密码有关。密码已保存,但也保存了哈希。我找不到这是否始终是相同的算法,或者是否取决于其他变量。
猜你喜欢
  • 2013-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-07
  • 2018-11-12
  • 1970-01-01
相关资源
最近更新 更多