如何使用SQL Server数据库项目

use*_*169 12 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数据库项目中要遵循的正确开发过程是什么?

Cra*_*and 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
Run Code Online (Sandbox Code Playgroud)

有关详细信息: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


And*_*ear 4

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

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

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

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