Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何设置部署选项以编写Visual Studio 2010数据库项目的增量版本脚本?_Sql Server_Database_Visual Studio_Visual Studio 2010 - Fatal编程技术网

Sql server 如何设置部署选项以编写Visual Studio 2010数据库项目的增量版本脚本?

Sql server 如何设置部署选项以编写Visual Studio 2010数据库项目的增量版本脚本?,sql-server,database,visual-studio,visual-studio-2010,Sql Server,Database,Visual Studio,Visual Studio 2010,我刚刚开始使用VS2010数据库项目来管理现有数据库更新的发布 我希望部署选项生成一个脚本,其中包含更改现有数据库的命令,而不是创建一个全新的数据库 例如,我有10个现有的表,其中一个是新版本,我创建了一些新的存储过程。我只想让部署为Drop表编写脚本并创建过程命令 我正在使用VS2010 Premium 在项目中,从初始创建到增量发布,我是否可以遵循推荐的标准方法来管理DBs 谢谢 不久前,我问了一个类似的问题,他们告诉我建议使用VSDBCMD。基本上,从数据库项目输出一个模式文件,其中包含关

我刚刚开始使用VS2010数据库项目来管理现有数据库更新的发布

我希望部署选项生成一个脚本,其中包含更改现有数据库的命令,而不是创建一个全新的数据库

例如,我有10个现有的表,其中一个是新版本,我创建了一些新的存储过程。我只想让部署为Drop表编写脚本并创建过程命令

我正在使用VS2010 Premium

在项目中,从初始创建到增量发布,我是否可以遵循推荐的标准方法来管理DBs


谢谢

不久前,我问了一个类似的问题,他们告诉我建议使用VSDBCMD。基本上,从数据库项目输出一个模式文件,其中包含关于数据库的所有信息,然后运行VSDBCMD将模式与目标数据库进行比较。这进而创建脚本,将目标数据库更新为当前模式

这种方法的基本原理是,仅仅因为您和我可能认为我们知道目标数据库的模式是什么样子,所以在让VSDBCMD运行比较之前,我们无法真正确定。谁知道呢,其他人可能在我们不知情的情况下修改了目标数据库中的模式,因此我们的更改脚本可能会由于未知原因而失败

我真的对这种方法不太满意,并最终继续使用我的“旧方法”,在必要时手工编写我的更改脚本,但我很想看看2010年是否有什么改变,使之更易于使用。我真的很想看到一个简单的API,它可以实现VSDBCMD的功能,这样我就可以组合一个GUI来简化目标(在我的例子中是客户机)数据库的更新,而无需运行升级的人必须是DBA。

在项目的.sqldeployment文件中有一个“始终重新创建数据库”。取消选中此选项将导致自动生成SQL脚本,该脚本将增量更新您的数据库,而不会首先删除它

还有一个选项“为目标数据库中但不在数据库项目中的对象生成DROP语句”。如果希望在数据库项目中删除表、存储过程等,则需要选中此选项。这将删除用户为测试、调试等自行创建的任何表等

更改.sqldeployment文件中的选项。在Visual Studio中打开该文件。或者在解决方案资源管理器中展开数据库项目,双击.sqldeployment文件(它可能位于DB项目下的Properties文件夹中)。或者打开数据库项目的属性页,然后单击“部署配置文件”旁边的“编辑…”按钮。在部署数据库时,选中或取消选中所需的选项

我使用我创建的一键式构建和部署脚本。它工作得很好。VSDBCMD使用.sqldeployment文件--默认的.sqldeployment文件在.deploymanifest文件中指定,但在执行VSDBCMD时,可以通过将其指定为参数来覆盖它。此外,我相信VisualStudio在以下情况下使用VSDBCMD
它部署了数据库项目,但我只是假设是这样,因为功能几乎完全相同。

谢谢您提供的信息。那么,您将如何在DB的整个生命周期中跟踪每个版本?例如,如果我已经发布了5个版本的DB,我如何回滚到3个版本?我是否保存了基线创建脚本,然后保存每个自动生成的增量更新脚本?我们将VS2010 DB项目中的所有SQL文件添加到版本控制中,并使用标签跟踪每个版本。要回滚到版本3,只需同步到v3标签。您确实应该使用版本来控制数据库。Jeff Atwood写了两篇关于数据库版本控制的博客文章,我建议大家阅读:您的数据库是否处于版本控制之下?zttp://www.codinghorror.com/blog/2006/12/is-your-database-under-version-control.html 将数据库置于版本控制之下