我们使用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在更新架构脚本中包含此自定义语句?
可以“绑定到重构语句”还是长期完成(在重构语句之后的示例中)?
答案 0 :(得分:1)
您可以通过post-deployment script处理此问题。这些脚本在所有其他表/ etc之后运行。从您的项目进行更改。因此,您无法确保自定义代码在重构后立即运行,但很快就会发生。
此方法的一个警告:运行自定义代码后,您需要在下次部署之前将其从部署后脚本中删除,否则将在下次部署期间再次运行。对于您提供的更新语句,重新运行代码可能不是问题,但在其他情况下肯定会出现问题。