我正在尝试找到一种方法来根据使用的发布配置文件或 sqlcmd 变量更改数据库对象。具体来说,如果我将数据库项目部署到服务器 A & B;在服务器 AI 上需要一个版本的存储过程,在服务器 BI 上需要不同版本的存储过程。出于依赖性原因,存储过程在两台服务器上必须具有相同的名称。我知道一种使用部署后脚本和动态 sql 的方法。我正在寻找更好的选择。
问问题
184 次
1 回答
0
我不确定它是否适用于问题启动器,但它可能会对某人有所帮助。您可以执行以下操作:
创建变量,例如 $(DeployType) 并将其设置为所有发布配置中的唯一值
使用以下代码更改您的数据库:
.
CREATE PROCEDURE p_test
AS
BEGIN
IF '$(DeployType)' = 'Production'
BEGIN
/*Your code for production database*/
END
IF '$(DeployType)' = 'Dev'
BEGIN
/*Your code for devdatabase*/
END
END
在那种情况下,它应该正是你想要的。使用视图/功能,您可以执行以下操作:
CREATE VIEW v_test AS
SELECT 1
FROM table
WHERE '$(DeployType)' = 'Production'
UNION ALL
SELECT 1
FROM table2
WHERE '$(DeployType)' = 'Dev'
当优化器检查 WHERE 条件并看到联合的 1 部分始终为 NULL 时,性能不应该降低,因此它不会执行它。
于 2015-03-12T13:00:12.647 回答