目标: 我创建了一个使用数据库的Microsoft MVC 5项目。它为我生成了很多脚手架,包括用于用户身份验证的localdb(此数据库采用MDF和LDF文件的形式)。我的问题是将这个项目转移到生产服务器并将数据库移动到生产数据库的正确方法是什么?
问题:
我应该使用脚本吗?一旦我完成了所有更改,我是否应该有一个脚本将数据和代码复制到各自的服务器上?我不完全确定这样做的标准方法是什么。另外,我如何为数据库和实体创建连接字符串?
任何指针都会有所帮助。
由于
答案 0 :(得分:2)
对于初始部署,LocalDB最简单的选择是创建数据层应用程序。如果在SQL Server对象资源管理器面板中浏览到数据库(在Visual Studio,VIEW> SQL Server对象资源管理器中),则可以右键单击数据库并选择"发布数据层应用程序...& #34;或"提取数据层应用程序......"。唯一的区别是前者将直接将更改应用于目标数据库,而后者将只创建一个文件(DACPAC),然后您可以将其带入SQL Server Management Studio。在Visual Studio中,这将打包数据库的模式和数据,并允许您基本上将精确副本部署到目标SQL Server实例。 (请注意,SQL Server Management Studio也可以生成数据层应用程序文件,但不在其版本中包含数据。要在SQL Server Management Studio中获取架构和数据,至少在在2014年之前,您必须创建一个备份包(BACPAC)。)
如果您不想保留数据,或者您只是喜欢直接的SQL方法。您可以删除项目的Migrations
目录中的所有迁移并清除本地数据库(在SQL Server对象资源管理器中浏览到它并删除所有表。不要删除整个数据库;你只想清空它。)然后,你可以生成一个新的初始迁移并调用Update-Database -Script
,这将生成创建模式所需的所有SQL。然后,您可以保存此SQL文件以供稍后使用,或者只是将其复制到SQL Server Management Studio中的新查询中并运行它。
对于更新,Visual Studio中的SQL Server对象资源管理器有一个很好的功能,它允许您比较架构并比较本地数据库和远程数据库之间的数据。只需浏览该面板中的本地数据库,右键单击它,然后选择" Schema Compare"或"数据比较",取决于您需要的。向导将指导您完成选择源和目标数据库的过程。然后,它将运行其比较并向您显示需要对架构进行的更改或两个实例之间的数据差异,具体取决于您选择的选项。从这里,您可以直接将更改发布到目标服务器,也可以生成SQL脚本以应用更改。
或者,在应用程序中创建迁移时,在更新本地数据库之前,可以调用Update-Database -Script
生成SQL以首先进行更改。然后,您可以在部署更改时将此SQL应用于生产数据库,或将其移交给DBA(如果有的话),以便为您进行更改。