MsBuild数据库项目发布个人资料

时间:2017-06-05 22:09:36

标签: visual-studio-2015 tfs msbuild

我们正在使用TFS和msbuild使用发布配置文件部署我们的Web应用程序。这是完美的工作,但我正在尝试为我们的数据库项目做同样的事情,我只是无法得到以下错误: Error Deploy72002:无法连接到主服务器或目标服务器'xxx'。您必须在主服务器或目标服务器'xxx'中拥有具有相同密码的用户。

值xxx实际上是数据库的名称,而不是服务器的名称。我找不到输入服务器名称的地方,服务器实际上是xxx \ yyy。 有人知道如何/在哪里指定服务器名称或找出问题所在?

我正在构建项目,并使用以下msbuild参数: / t:build / t:发布/p:SqlPublishProfilePath=PublishProfiles/QA.xxx.publish.xml / p:Configuration = Output

1 个答案:

答案 0 :(得分:1)

  

有人知道如何/在何处指定服务器名称或找出问题所在?

您是否拥有Windows身份验证或SQL身份验证?

对于Windows身份验证,您必须使用对该数据库具有某些权限的帐户登录。您需要的特定权限取决于您要执行的操作。 This document描述了您可能要执行的每项操作以及执行该操作所需的特定权限。

对于SQL身份验证,您需要修改发布配置文件(.xml,TargetConnectString),例如:

MSBUILD "....\TestProject.sqlproj" /t:build "/p:Platform=AnyCPU" /t:deploy /p:TargetConnectionString="Data Source=localhost;Integrated Security=True" /p:TargetDatabase="xxx" /p:Configuration=Release /p:VisualStudioVersion=14.0

此外,您可以使用以下msbuild构建项目:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.EtchedBorder;

public class Repaint_Test
{
    public static void main(String args[]){     
        Frame frame = new Frame();      
    }
}

class Frame extends JFrame
{
    public Frame()  {   
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setSize(500,250);
        this.setLocationRelativeTo(null);
        this.setLayout(new GridLayout(1,2));        
        Panel1 p1 = new Panel1();
        Panel2 p2 = new Panel2();
        Data.panel2 = p2; // getting the reference of panel2    
        this.add(p1);
        this.add(p2);       
        this.setVisible(true);
    }
}

class Panel1 extends JPanel
{
    public Panel1(){
        this.setBorder(BorderFactory.createTitledBorder(new EtchedBorder(),"Panel1:"));
        JButton button = new JButton("Push");
        button.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){         
                Data.text = "text"; // changing commonly accessed data              
                Data.panel2.setBackground(Color.PINK); // this works
                //Data.panel2.invalidate();
                //Data.panel2.validate();
                //Data.panel2.updateUI();
                //Data.panel2.revalidate();
                Data.panel2.repaint();                // this does not work             
            }
        });
        this.add(button);       
    }   
}

class Panel2 extends JPanel
{
    public Panel2(){
        this.setBorder(BorderFactory.createTitledBorder(new EtchedBorder(),"Panel2:"));     
        add(new JLabel(Data.text));
    }   
}

class Data
{   
    public static JPanel panel2 = null; 
    public static String text = "ooooo";
}