在Visual Studio数据库架构更新脚本

时间:2016-01-26 17:36:46

标签: sql-server visual-studio visual-studio-2013 sql-server-data-tools

我们使用Visual Studio SQL Server数据工具来处理数据库项目。

当您使用重构工具重命名任何存储过程或任何对象名称或定义时,SSDT会自动使用RefactorLog来处理此更改,这非常棒。

但是我想知道是否可以在项目中添加一些SQL语句,以便在更新数据库模式时执行一些自定义任务。例如:

  • 创建后从列插入数据。
  • 重命名后从列中更新数据
  • 从其他表格中填入一个全新的数据表。

如今,我们手动管理这些任务:每当更新数据库时,我们都必须使用自定义数据更新来修改升级脚本。一切非常手册,非常危险!

也许可以在带有SSDT或任何其他插件的Visual Studio中完成......

让我们假设 People 的表格如下:

People:
  Id
  Name     
  Gender
  ...

但是我们想要做一些事情非常容易,将性别列重命名为 Title

People:
  Id
  Name
  Title
  ...

每当更新数据库时,Visual Studio + SSDT将检查RefactorLog表以找出缺少哪些重构指令并自动执行它们重命名列,并保留数据......一切都非常好:)< / p>

但我们也希望根据新的 Title 列替换旧 Gender 列中的值:'M'/'W'和新值:'Mr '/'女士'。类似的东西:

UPDATE People
  SET Title = CASE Title WHEN 'M' THEN 'Mister' ELSE 'Miss' END

有没有办法让Visual Studio在更新架构脚本中包含此自定义语句?

可以“绑定到重构语句”还是长期完成(在重构语句之后的示例中)?

1 个答案:

答案 0 :(得分:1)

您可以通过post-deployment script处理此问题。这些脚本在所有其他表/ etc之后运行。从您的项目进行更改。因此,您无法确保自定义代码在重构后立即运行,但很快就会发生。

此方法的一个警告:运行自定义代码后,您需要在下次部署之前将其从部署后脚本中删除,否则将在下次部署期间再次运行。对于您提供的更新语句,重新运行代码可能不是问题,但在其他情况下肯定会出现问题。