2012-01-25 54 views
2

在负责规划和版本的范围生成数据库脚本,我想开始我的版本数据库的变化尤其是因为我对我的数据库实例开发然后移动到生产。我还没有发现任何对我如何做到这一点真正有意义的事情。我正在使用Visual Studio 2010 Pro作为我的IDE。是否有一个文件使这个过程简单并能够相对容易地检测到数据库的变化?或者我应该在工作流程中更改哪些内容以使其更容易?我已经成功地做了这样的事情在过去的SQL Server数据库版本

回答

6

的方法之一,是通过Sql Source Control。 Visual Studio不为您提供此功能。

或者,你可以使用SSMS为您生成数据库脚本,并将其保存为文件;那么你可以检查脚本。您可以选择是在一个文件中生成整个数据库脚本,还是在逐个对象的基础上进行操作。同步部分必须由您在生产中执行脚本完成。总之一个总的噩梦

Redgate还提供Sql Compare,它非常适合同步数据库。如果您或您的公司能负担得起,请查看他们的产品。

+0

哦...我喜欢那个包的外观。 –

+0

在VS2010中 - 您可以将对象从“服务器资源管理器”拖动到“项目资源管理器”以编写DB对象的脚本。 – Lucero

0

保存在SVN您的数据库脚本。这里是RefernceHow to use SVN Tortoise

OR

在VSS保存数据库的脚本。下面是引用What is VSS ? How can we use that ?

在这两种情况下,你可以跟踪这样做的,今后您可以检查这在保存版本的形式在历史的变迁。

您可以使用红门产品还

编辑

你怎么拉出来是什么发生了什么变化?

使用比较功能来检查在以前的版本中所做的更改。

如何将更改应用于实时数据库服务器?

从服务器下载最新的文件。

我希望你没有在统一脚本中使用表格的Drop语句。因为它会从表中删除所有记录。

DROP语句将发生已存储的专业,景观,功能等

请注意,您必须在生产服务器上运行完整最新的数据库脚本文件与下面提及的行动计划

1. Remove Drop Statement for Schema DDL 
2. Add Drop/Create Statements for Stored Proc/Views 
3. Include Alter statements DML of schema. 

希望这一定会帮助你。

enter image description here

+0

这并没有真正回答这个问题。我知道如何使用SVN,但我不知道如何版本化数据库。 –

+0

请再次阅读答案。提到这些产品创建了完整的数据库/数据库个人脚本的历史。需要注意的是,您需要将完整的数据库脚本保存在任一产品中,以便下次可以根据需要比较更改。我希望这能够更好地阐明:) – Pankaj

+0

我知道如何使用SVN,这两篇文章都没有提到与SQL Server集成的任何内容,并且显示了不同之处。你的解决方案是只需要一个新的脚本?你如何确定发生了什么变化?如何将更改应用于实时数据库服务器? –

1

我们使用内部我们自己的数据库解决方案,将所有正确DB版本所需的工具。虽然我意识到它可能不是一个完美的解决方案,但我邀请你看看它(它是开源的):bsn ModuleStore

版本控制方面如下:该工具可以编写SQL半自动的,它会将源代码重新格式化为统一的格式。因此,对于同一个源文件,文件始终是相同的,无论何时和由谁编写脚本;因此这与非锁定源控制系统(特别是SVN,Git或Mercurial)很好地配合使用。

重新格式化将所有语句相同的形式(如可选关键字,如ASINNEROUTER等的处理),脚本一切以“DBO”模式(即使是在一个不同),将所有标识符放入方括号([something]),大写所有保留字,缩进等。

除版本控制外,该工具的运行时部分还可以区分正在运行的DB和CREATE脚本(DB源代码)并应用自动更新所有非破坏性更改(例如更新索引,约束,视图,存储过程,触发器,自定义类型,新表等)。不得不手动对脚本进行修改(表格更改通常需要数据转换)。如果生成的DB与CREATE脚本不匹配,那么运行时将确保所有更新都在事务中执行并进行回滚,因此您可以安全地知道数据库完全位于应用程序所需的版本上,即使它已被手动篡改。

此外,多个“模块”可用于单个数据库。每个模块都作为模式存储并独立于其他模式,从而可以从一个数据库添加或删除模块,并避免为应用程序的不同部分创建多个数据库。此外,使用模式来确保没有名称冲突。

可能值得注意的是,该工具集对SMO没有依赖性,它是自治的。

相关问题