SSDT是否仅为更改的对象构建脚本?

时间:2013-08-15 16:33:05

标签: sql-server tfs sql-server-data-tools

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

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

要求(请注意,我们的开发人员没有ddl访问权限):

  1. 我无法删除数据库以重新创建它
  2. 我不能删除所有存储过程中的所有对象来重新创建它们,而只是我需要的东西
  3. 需要更改表格而不删除表格
  4. Dacpac是不可能的
  5. 我们目前基于环境的最佳选择是使用脚本进行更新
  6. 我们的数据库环境目前是SQL Server 2008 R2。我的SSDT版本是最新的2013年6月发布的。

1 个答案:

答案 0 :(得分:0)

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

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

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