2

希望这里的每个人都没事。

我们使用 VS 2008 作为开发工具,使用 TFS 2008 作为版本控制以及构建自动化。我们的一些开发人员使用 dbpro 进行数据库更改,一些开发人员使用 SQL Server 管理工作室。

我正在尝试为使用 C# 和 VB.Net 构建的 Web 应用程序自动构建。我们的场景是这样的,我们有一个中央数据库,我们的 Web 应用程序连接到该数据库。

每当我们为客户提供新功能或错误修复时,我们都会为他们提供增量构建。

当 SQL 脚本在我们的中央数据库服务器上进行更改并对其进行测试时,它们会被检入到每个增量构建的源代码控制中。

我想生成可以在客户端作为增量更新脚本运行的差异脚本。现在实现它是一个问题。有时我们的开发人员往往会忘记数据库更改集,并且源代码管理中的脚本缺少一个或两个 SP。

此外,有时我们需要将默认数据插入一些具有严格值而不是测试值的表中。就像包含面板提供的服务的表一样,我们在ServiceTable中添加新的服务名称、签名、凭据和服务地址等。除此之外,许多其他表可能有可能不需要的测试数据。

如果我们使用 DataCompare,它将为所需数据(对于客户端启用某些服务很重要)和我们的测试数据生成变更集,这些测试数据是我们测试功能或修复错误的结果。

目前,我在 TFS 2008 的构建定义的 TFSBuild.proj 文件中使用SQLSchemaCompareTask(来自 Visual Studio 2008 Team Database Professional Power Tools API)。

使用 SQLSchemaCompareTask,生成的脚本包含数据库名称,如 [dbo]。等等,因为脚本在 SQL Server 2000 数据库(我们的一些客户端仍然使用 SQL Server 2000)数据库作为应用程序的后端运行时失败。

此过程也无法生成默认数据。

为了克服这个问题,我必须想出一个可以比较数据库并自动生成脚本的解决方案,在发送给客户之前不必再次手动检查。

请建议生成此类 SQL 脚本的有效方法,并建议是否可以使用两个不同的数据库或其他什么?是否有任何工具包或 API 可以为 SQL Server 数据库启用构建自动化?

谢谢你们。

问候

史蒂夫

4

2 回答 2

1

与其整理许多单独的变更集脚本(因此偶尔会丢失对象),为什么不使用模式比较和数据比较来从您的数据库项目中创建一个脚本,使用与您的客户在目标上的数据库等效的数据库?这应该创建一个适合他们要求的脚本。

在数据比较中,您可以通过在下部网格中取消选中您不想推送到客户端的测试数据记录来排除它们。

于 2010-06-18T12:37:51.293 回答
1

尝试为此使用 SQL Examiner Suite: http ://www.sqlaccessories.com/SQL_Examiner_Suite/

该工具比较模式和数据并生成同步脚本(或差异脚本)。您可以使用提供的命令行工具自动创建脚本。

于 2010-06-22T19:39:38.670 回答