0

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

我的问题是,如果我正在开发,并且我想要做的就是修改VS 2012中的sql表结构,比方说向表中添加一个新列,是将该更改传输到数据库的唯一方法构建项目.dacpac,然后升级数据库,在我的情况下通过SQL Server Management Studio。如果我正在开发人员数据库上工作,但没有生产,我只想要一个更新脚本,我不明白如何在数据层应用程序的数据库项目中获取该脚本。

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

你怎么做到的?

感谢

+0

注:VS2012是不是抓住我的变化。打开一个数据库查看查询并单击“更新”数据库,它不会将VS2012中的表格编辑添加到脚本中。如果你在这里观看视频[link](http://www.bing.com/videos/watch/video/gert-drapers-demonstrates-sql-server-data-tools/1r7u8u0qb)并跳到11分钟请参阅Gert获取所有编辑的更新脚本,但我的不是,为什么? – JAMES 2013-03-04 22:50:29

回答

0

也许我不是在这里跟着你,但你有没有试图通过发布数据库项目进行更新?如果右键单击数据库项目,您应该看到“发布数据库”对话框。从那里您设置您的目标数据库连接,然后单击发布按钮。这应该将您的更改应用于您的目标数据库,在这种情况下,您将添加的列应用于此。

您也可以从命令行运行它。这将是这个样子

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>