将 SQL 数据库从 2014 迁移到 2012 版本 - mvc codefirst
Posted
技术标签:
【中文标题】将 SQL 数据库从 2014 迁移到 2012 版本 - mvc codefirst【英文标题】:Migrate SQL database from 2014 to 2012 version - mvc codefirst 【发布时间】:2016-10-01 11:26:51 【问题描述】:我正在使用 ASP.net-MVC 开发一个项目,因为它是 Model first,它会自动生成数据库的 .mdf 和 .ldf 文件。并且数据库是2014版本。当我想将它上传到主机服务器上时,他们告诉我他们不支持2012的更高版本。所以我需要将我的数据库从2014迁移到2012版本。
我的数据库没有那么大。我关注这篇文章
https://www.mssqltips.com/sqlservertip/2810/how-to-migrate-a-sql-server-database-to-a-lower-version/
一步一步,但我的数据库版本没有发生差异。它仍然是Product Version:12.0.2000.8
非常感谢您的帮助。谢谢
【问题讨论】:
如果您降级数据库引擎,可能需要将开发数据库转换/重新保存为您想要运行的相应版本,以避免潜在的迁移问题。然后你可以将EF点设置为2012版本,在重新配置EF之前确保你有备份。 SSMS 是一款客户端软件,可帮助您监控 SQL Server 实例。如果您没有任何 SQL Server 实例,则需要在主机服务器上安装一个。 SSMS 2012、2014 或 2016 都与 SQL Server 2012 实例兼容。我从不将数据库从较高版本迁移到较低版本,因此无法为您提供帮助。但我确定备份不合适,因为备份文件具有.bck
扩展名,并且您拥有包含数据.mdf
和日志.ldf
的原始数据库文件。
@TetsuyaYamamoto 感谢您的帮助。你知道怎么做吗?我从未听说可以更改EFW
生成它的数据库版本。如果你知道我会很感激告诉我如何做到这一点非常感谢
@MincongHuang 感谢您的帮助。我正在考虑如何将 mdf 和 ldf 文件转换为 .bak 。所以你知道如何解决这个问题吗?不管怎样,你做了很多。谢谢你 100000..0000 次
@TetsuyaYamamoto 您的意思是在创建项目之前更改实体框架的版本?
【参考方案1】:
您基于模型优先开发数据库,因此您可以控制生成/修改数据库。
你不需要迁移数据库,但是在visual studio中你可以在sql server 2012中重新生成数据库。
要在 sql 2012 中生成数据库,请执行与在 Visual Studio 中为 sql 2014 生成数据库相同的步骤,只是为了提醒:
在 EDMX 设计界面中,右键单击 -> 从模型生成数据库 按照向导创建一个到 sql2012 的新连接。向导结束时,会在 sql server 2012 中创建一个新数据库。
Sql 脚本也是自动生成的,命名为 e.g. model.edmx.sql 包括实体和关联的所有 DDL,...
在 VS 中执行该脚本,您可以选择连接并在新的数据库服务器 2012 中执行该脚本。
对于数据,您可以使用 bcp 实用程序或 SSMS 中的导出向导。
更新:
在“模型优先”方法中,您创建的图表将自动转换为编码模型,并将模型保存在 EDMX(xml 文件)中。
如果项目中没有 EDMX,说明你没有使用 ModelFirst 方法,但你可以使用 MVC 项目的模板,在项目开始时自动生成数据库。
Model First 的好处是易于更改以及开发环境和生产环境之间的同步以应对未来的更改。
即使您创建了数据库,您也可以重新设计您的项目并添加 ModelFirst 方法。
从那里您可以在 sql server 2012 中重新创建数据库。 我描述了一步一步的教程来构建你的模式:
Building DataModel from Existing Database in EntityFramework 6 For ModelFirst Approach
【讨论】:
是的,我需要这样的东西。让我尝试 。我想我离答案很近了 对不起,我没有找到任何“EDMX”文件。我没有选择任何东西。 Visual Studio 本身创建所有 EFW 和数据库。有没有可能给我一步一步的指导。谢谢。 在模型优先的方法中,您创建一个图表,该图表将自动转换为编码模型,并将模型保存在 EDMX(xml 文件)中。如果项目中没有 EDMX,则说明您没有使用 Model First 方法,但您可以使用 MVC 项目中的模板,该模板在项目开始时自动生成数据库。 Model First 的好处是易于更改以及在开发环境和生产环境之间进行同步以应对未来的更改。 是的,我正在使用 template 。真的谢谢你,也正是我想要的,再次感谢【参考方案2】:在执行https://www.mssqltips.com/sqlservertip/2810/how-to-migrate-a-sql-server-database-to-a-lower-version/ 步骤之前,应将兼容级别设置为 SQL Server 2012(110)
要更改兼容级别,请转到数据库属性->选项->兼容级别
当您运行输出脚本时,它应该在目标服务器 (2012) 上运行。近期版本的备份无法在早期版本中恢复。
【讨论】:
非常感谢。我这样做了,但仍然没有区别,但非常感谢您的时间和帮助【参考方案3】:看看here
该设置会将您的数据库从 2014 年更改为 2012 年。
【讨论】:
非常感谢您的照顾。我遵循所有这些步骤,但没有任何反应。我在这里检查版本,每次都和以前一样。https://support.microsoft.com/en-us/kb/321185
我还要求主机服务器在所有这些更改后检查它,但仍然没有发生任何事情以上是关于将 SQL 数据库从 2014 迁移到 2012 版本 - mvc codefirst的主要内容,如果未能解决你的问题,请参考以下文章
从 SQL DMO 迁移到 SQL SMO (SQL Server 2012)
Umbraco 从 SQL Server 2012 迁移到 SQL Server 2008 R2