12

我正在运行安装了 SSDT(SQL Server Data Tools)的 SQL Server 2012 和 VS 2010。我的开发数据库使用存储的过程、函数、CLR 对象等。它有大约 500GB 的产品数据快照。

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

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

我是否想在该 LocalDb 中创作我的所有对象,然后通过 Publish 构建并部署到我的开发数据库?我担心开发数据库中的现有表,因为如果发布过程删除并重新创建表,我将丢失我的产品数据快照。

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

4

2 回答 2

6

将源数据库(在您的情况下,您的数据库项目)视为部署后的“待定”状态。启动部署时,可执行文件 (SqlPackage.exe) 将源与目标进行比较,并生成差异/增量脚本以使目标看起来像源。这就是我们不再需要指定CREATEor的原因ALTER;工具算出来了。要回答有关持续开发的问题,您可以采用任何一种方式进行开发。您可以在项目文件中进行开发并将它们发布到通用开发数据库(例如,如果您在团队中),或者您可以使用 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

于 2014-10-06T19:52:13.873 回答
4
  1. 在 VS DB 项目中进行更改。

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

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

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

于 2012-12-18T16:20:22.127 回答