VS 2012 Data Tier App Project更新数据库最佳实践

时间:2013-03-01 23:42:18

标签: visual-studio-2012 sql-server-2012 data-tier-applications

在VS2012中,我创建了一个数据库项目,一个从我的SQL Server 2012实例创建的导入的数据层应用程序.dacpac。

我的问题是,如果我正在开发,我想要做的就是修改VS 2012中的sql表结构,比如我向表中添加一个新列,是将该更改传输到数据库以构建的唯一方法退出项目.dacpac,然后通过SQL Server Management Studio升级数据库。如果我正在开发一个开发人员数据库,非生产,我只想要一个更新脚本,我不知道如何在数据层应用程序的db项目中获得它。

我只是手动在两个地方进行更改,但最终我会被打断并忘记进行相应的更改。

你是怎么做到的?

感谢

1 个答案:

答案 0 :(得分:0)

也许我不是在这里关注你,但你是否尝试通过发布数据库项目来进行更新?如果右键单击数据库项目,则应看到“发布数据库”对话框。从那里设置Target数据库连接,然后单击Publish按钮。这应该将您的更改(在本例中为已添加的列)应用于目标数据库。

您也可以从命令行运行它。这看起来像这样

c:\MyCode\bin\Debug>"c:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin"\sqlpackage.exe /Action:Publish /Sourcefile:MyCode.dacpac /Profile:local.publish.xml

而且publish.xml文件可能看起来像这样

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <IncludeCompositeObjects>True</IncludeCompositeObjects>
    <TargetDatabaseName>TargetDatabaseName</TargetDatabaseName>
    <DeployScriptFileName>TheDeployScriptName.sql</DeployScriptFileName>
    <TargetConnectionString>Data Source=localhost\SQLEXPRESS;Integrated Security=True;Pooling=False</TargetConnectionString>
    <ProfileVersionNumber>1</ProfileVersionNumber>
  </PropertyGroup>
</Project>