将SQL Server数据库从Test部署到Live

Michael Stum 25 sql-server deployment sql-server-2005 release-management

我想知道你们如何管理2个SQL Server之间的数据库部署,特别是SQL Server 2005.现在,有一个开发和一个实时的.由于这应该是构建脚本的一部分(标准的Windows批处理,即使这些脚本的当前复杂性,我可能会在以后切换到PowerShell),企业管理器/ Management Studio Express也不计算在内.

你会复制.mdf文件并附加它吗?在处理二进制数据时我总是有点小心,因为这似乎是一个兼容性问题(即使开发和实时应该始终运行相同版本的服务器).

或者 - 由于T-SQL中缺少"EXPLAIN CREATE TABLE" - 您是否可以将现有数据库导出为可在目标服务器上运行的SQL-Scripts?如果是,是否有一个工具可以自动将给定的数据库转储到SQL查询中并运行命令行?(同样,企业管理器/ Management Studio Express不计算在内).

最后 - 鉴于实时数据库已经包含数据这一事实,部署可能不涉及创建所有表,而是检查结构的差异,而是替换实时的表,这可能还需要在现有字段更改时进行数据验证/转换.

现在,我听到很多关于红门产品的好东西,但对于业余爱好项目,价格有点陡峭.

那么,您使用什么来自动将SQL Server数据库从Test部署到Live?

Karl Seguin.. 19

我已经开始手工编写我的所有DDL(创建/更改/删除)语句,将它们作为文本文件添加到我的.sln中,并使用正常的版本控制(使用subversion,但任何修订控制都应该有效).这样,我不仅可以获得版本控制的好处,而且从dev/stage更新live是代码和数据库的相同过程 - 标签,分支等工作都是一样的.

否则,如果您没有公司为您购买,我同意redgate是昂贵的.如果你能让一家公司为你买它,那真的是值得的!


Rob Allen.. 14

对于我的项目,我在来自REd Gate的SQL Compare和Microsoft的数据库发布向导之间交替,您可以在这里免费下载 .

向导不像SQL Compare或SQL Data Compare那样灵活,但它可以解决问题.一个问题是它生成的脚本可能需要一次重新排列和/或编辑才能一次性流动.

从好的方面来说,它可以移动您的架构和数据,这对于免费工具来说并不坏.


Craig.. 7

不要忘记Microsoft的问题解决方案:Visual Studio 2008数据库版.包括用于部署数据库更改的工具,在数据库之间生成架构和/或数据更改的差异,单元测试,测试数据生成.

这是相当昂贵的,但我使用试用版一段时间,并认为它很棒.它使数据库与任何其他代码一样易于使用.


Shawn.. 6

和Rob Allen一样,我使用Redgate的SQL Compare/Data Compare.我还使用Microsoft的数据库发布向导.我还有一个我在C#中编写的控制台应用程序,它使用sql脚本并在服务器上运行它.这样,您可以从命令行或批处理脚本中使用"GO"命令运行大型脚本.

我在控制台应用程序中使用Microsoft.SqlServer.BatchParser.dll和Microsoft.SqlServer.ConnectionInfo.dll库.