我正在使用 SSDT 和 MS SQL Server 2012。我需要在一个部署脚本中处理下一个案例:
--1
CREATE TABLE Table1 (Col1 INT)
--2
INSERT INTO Table1(Col1)
SELECT SomeCol FROM SomeTable
--3
ALTER TABLE dbo.SomeTable DROP COLUMN SomeCol
--4
INSERT INTO AnotherTable(AnotherCol)
VALUES(1)
我现在可以在我的部署脚本中看到什么:
--Pre-deployment part
--some insert. Will fail because it select/insert from/to not created objects
--Deployment part
CREATE TABLE Table1 (Col1 INT)
GO
ALTER TABLE dbo.SomeTable DROP COLUMN SomeCol
GO
--Post-deployment part
--some insert. Will fail because it select/insert from/to not created objects
我需要如何配置发布/预部署脚本?部署期间是否可以在 SSDT 中自动执行此操作?
感谢任何建议。
我不确定这是否在您正在使用的 SSDT/Visual Studio 版本中,但据我所知,在数据库项目类型中 - 您可以添加部署前/部署后脚本,只需添加右键单击您的项目并添加脚本 > 部署前/部署后脚本。
当您发布此脚本并生成脚本时,您将看到 SQLCMD 语法中的部署前和部署后脚本。
就自动执行而言,我认为您的要求是不可能的。就个人而言,我发现生成 DACPAC 对于部署非常有用。开发您的数据库并发布到 DACPAC,您几乎可以自动化您的部署。但是,您的具体示例需要对您的实现有一些了解,所以我想不出一种可以以编程方式知道这一点的方法。抱歉,如果我没有正确阅读您的内容。