2

我目前正在使用 Team Foundation Server (TFS) 针对数据库对象重新设计我们部门的源代码控制策略。本质上,我们此时没有在 TFS 中存储任何内容。我发现了 SSDT,并且非常喜欢它们在 Visual Studio 中的集成,并认为这将使我们更容易过渡到 TFS。

那么,SSDT 是否有能力根据我的 SSDT 项目的增量生成脚本,而不是我们服务器中的内容?从我的研究看来,我只能生成一个完整的数据库脚本。

要求(请注意,我们的开发人员没有 ddl 访问生产环境):

  1. 我无法删除数据库以重新创建它
  2. 我不能像所有存储的过程一样删除所有对象来重新创建它们,但只有我需要的
  3. 表将需要更改而不是删除,只有更改的内容
  4. Dacpac 是不可能的
  5. 目前基于我们的环境我们最好的选择是使用脚本进行更新

我们的数据库环境目前是 SQL Server 2008 R2。我的 SSDT 版本是 2013 年 6 月发布的最新版本。

4

1 回答 1

0

是的,如果您从项目中进行发布,您将几乎满足所有这些要求,尽管 dacpacs 是作为该过程的一部分构建的。架构比较和部署前/部署后脚本存储在 dacpac 中,并且发布读取“应该”与当前数据库中的内容相对应的内容。然后它会生成一个包含所有必要更改的更改脚本,以使数据库与项目保持一致。

确保在重命名对象时使用重构/重命名 - 这将减少表删除/重新创建操作。您可能需要小心“删除不在项目中的对象”选项。如果您没有注意确保在生产服务器中创建的所有对象都在您的项目中,您可能会因为有人没有签入而意外丢弃重要的东西。

SQLPackage 命令的命令行可以生成您可以使用的更改详细信息报告和脚本。脚本需要通过 SQLCMD 或在 SQLCMD 模式下运行,但您绝对可以很容易地生成脚本。

于 2013-08-15T21:02:40.660 回答