使用发布配置文件更改已部署对

时间:2013-08-16 18:06:34

标签: sql-server-data-tools

我正在尝试根据使用的发布配置文件或sqlcmd变量找到更改数据库对象的方法。具体来说,如果我将数据库项目部署到服务器A& B;在服务器A上我想要一个版本的存储过程,在服务器B上我想要一个不同版本的存储过程。出于依赖性原因,存储过程在两个服务器上必须具有相同的名称。我知道使用后部署脚本和动态sql的方法。我正在寻找更好的选择。

1 个答案:

答案 0 :(得分:0)

我不确定这对于问题启动者是否真实,但它可能对某人有所帮助。你可以这样做:

  1. 创建变量,例如$(DeployType)并将其设置为唯一 所有出版配置中的价值

  2. 使用以下代码更改您的数据库:

  3.  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部分的union将总是为NULL,因此它不会执行它。