如何使用SQL Server数据库项目

时间:2012-12-14 15:12:17

标签: sql-server sql-server-data-tools

我正在运行安装了SSDT(SQL Server数据工具)的SQL Server 2012和VS 2010。我的dev DB使用存储过程,函数,CLR对象等。它有一个大约500GB的prod数据的快照。

我创建了SQL Server数据库项目,然后导入了数据库。这在模式名称下创建了所有表,视图,过程和函数文件。很棒的东西 - 现在我可以像其他VS项目一样进行版本控制,创建部署等等。到目前为止,非常好。

但是,我对在SQL Server数据库项目下更改/添加procs / tables的开发过程感到困惑。看来我所做的任何更改都应用于某些LocalDb / Projects数据库,而不是我的dev数据库。

我想在LocalDb中编写所有对象,然后通过Publish构建并部署到我的dev数据库吗?我担心dev DB中的现有表,因为如果发布过程丢失并重新创建表,我将丢失我的prod数据快照。

SQL Server数据库项目中要遵循的正确开发流程是什么?

2 个答案:

答案 0 :(得分:6)

将源数据库(在您的情况下,您的数据库项目)视为部署后的“待”状态。启动部署时,可执行文件(SqlPackage.exe)会将源与目标进行比较,并生成差异/增量脚本以使目标看起来像源。这就是为什么我们不再需要指定CREATEALTER;该工具可以找到它。要回答有关正在进行的开发的问题,您可以开发任何一种方法。您可以在项目文件中开发并将它们发布到公共Dev数据库(例如,如果您在团队中),或者您可以使用SQL Server Management Studio(SSMS)等工具在数据库中进行开发并与项目文件同步使用模式比较(我使用后一种技术因为我喜欢SSMS)。

对于部署,您必须在执行部署的计算机上安装SSDT(SSDT附带SQL Server 2012及更高版本;我不了解SQL Server 2008)。您可以创建脚本以简化部署。您实际上将操作和源调用SqlPackage.exe(它位于x:\ Program Files(x86)\ Microsoft SQL Server \ nnn \ DAC \ bin)。我也使用发布配置文件来处理大多数命令属性。因此,示例部署可能如下所示:

SqlPackage.exe /Action:Publish /SourceFile:MyDatabase.dacpac /Profile:MyProfile.publish.xml

了解更多信息: SQL Server数据工具文档 http://msdn.microsoft.com/en-us/library/hh272686(v=vs.103).aspx

SqlPackage.exe文档 http://msdn.microsoft.com/en-us/library/hh550080(v=vs.103).aspx

答案 1 :(得分:4)

  1. 在VS DB项目中进行更改。

  2. 将更改部署到localDB以进行测试

  3. 将数据库发布到生产服务器。我更喜欢使用Schema Compare手动执行此操作,但您也可以通过右键单击发布项目 - >发布菜单(也将创建发布配置文件)或使用命令行参数。发布过程不会删除并创建表(除非您告诉它删除并重新创建整个数据库)。

  4. 或者,在项目设置中,您可以将连接字符串更改为指向生产服务器(如注释中所指出)。但是,我建议不要这样做,因为它会在每次运行本地构建时尝试发布到生产服务器(F5)。