如何更新正在使用的数据库?

时间:2016-10-30 05:06:14

标签: sql asp.net sql-server tsql

我使用带有SQL Server的ASP.NET MVC构建Web应用程序,我的开发过程就像

  • 在本地SQL Server中进行更改
  • 根据需要创建LINQ-to-SQL类
  • 在提交具有数据库的任何更改集之前,请编写数据库脚本,以便在需要时可以重新生成

我感到困惑的是我将如何更新生产数据库,该数据库将包含实时数据。

例如,假设我有一张像

这样的表格
             People 
========================================
Id | FirstName | LastName    | FatherId
----------------------------------------
 1 | 'Anakin'  | 'Skywalker' | NULL
 2 | 'Luke'    | 'Skywalker' | 1
 3 | 'Leah'    | 'Skywalker' | 1

在制作和本地,我们说我在本地添加了一个额外的列

ALTER TABLE People ADD COLUMN LightsaberColor VARCHAR(16)

并更新我的LINQ to SQL,编写脚本,使用示例数据对其进行测试,并确定我要将该列添加到生产中。

作为部署过程的一部分,我该怎么做?是否存在可以读取我的数据库生成文件(称为GenerateDb.sql)并确定它需要更新生产People表以将默认值放入新列的工具,如

                      People 
 ==========================================================
 Id | FirstName | LastName    | FatherId | LightsaberColor
 ----------------------------------------------------------
  1 | 'Anakin'  | 'Skywalker' | NULL     | NULL
  2 | 'Luke'    | 'Skywalker' | 1        | NULL
  3 | 'Leah'    | 'Skywalker' | 1        | NULL

???

2 个答案:

答案 0 :(得分:1)

您应该有一个与生产数据库相同的暂存数据库。 当您向数据库添加任何更改时,您应该首先对暂存数据库执行这些更改,然后您当然可以比较dev和staging DB以生成具有差异的脚本。

Visual Studio有一个Schema Compare,可以生成一个脚本,其中包含两个数据库之间的差异。 还有一些其他工具可以做同样的事情。

因此,您可以生成脚本,将其应用于登台Db,如果一切正常,您可以在生产数据库上应用脚本

答案 1 :(得分:0)

实际上这是正确的,每当我们提交功能时你都必须有一个暂存过程我们使用从开发到生产的TFS,称为暂存,您可以查找TFS的历史记录,无论是数据库还是解决方案。如果你没有在Visual Studio和MSSQL Server中使用TFS。

我想你的功能是直接将你的功能提交给你的生产测试服务器。或者您可以先在测试服务器中对其进行测试,以查看更改。

另一件事是我想如果你使用存储过程,你可以使用临时表,如果你问的是脚本。

我想这是你第一次在实时服务器上提交..