5

假设您有一个数据库项目,并且您没有在Database.sqldeployment设置中选中“总是重新创建数据库”。假设您通过部署的名称部署到已具有数据库的服务器。如何防止VS2010数据库项目部署生成drop数据库?

在数据库部署的其他情况下,将生成带有“DROP DATABASE”语句的脚本?

如果您从来没有想过要通过右键单击数据库项目并选择“部署”生成的部署脚本来删除数据库,那么可以采取哪些步骤来防止这种情况发生?

+0

有没有可能发布项目和设置文件? AFAIK您提到的选项是唯一一个会导致DROP DATABASE被编写脚本的选项。 –

+0

不幸的是,不是,因为该项目属于客户。另外,我甚至不能重现这一点。该项目现在生成没有拖放的脚本。我想弄清楚什么可能导致它产生了一个以前下降的脚本。弗兰克,下面,对目标连接有一个很好的想法。即使设置了目标连接,但它可能仅在我的项目设置中设置,而不是在隔离的环境设置中设置。我也认为,可能已经定义了目标连接,但没有被VPN'd导致。 IDK的。 –

+0

啊,这是有道理的。是的,孤立的开发人员vs项目设置可能有点混乱。很高兴他们在SSDT中抛弃了这个想法。你记得是否部署交互完成,或者建立服务器为你运行吗?如果是后者,则可能会在构建日志中捕获有用的内容。 –

回答

3

除了“总是重新创建数据库”不被检查,您还应该检查数据库项目的“属性”页面上的“开发”选项卡。确保你定义了一个目标连接。如果没有定义目标数据库,那么该项目将始终以及仅部署为 - 如果目标数据库不存在。此行为是设计使然。有关更多详细信息,请参见link

我的建议是使用Windows身份验证创建连接,以便每个用户都可以访问它们应有的扩展名。

同时请注意,你将不得不为每个部署配置(例如调试,发布等)

我个人设置的部署行动只创建一个脚本,并手动运行它是在做安全的一面!

+1

谢谢弗兰克。事实证明,我确实为该项目配置定义了一个目标连接,它是一个有效的连接字符串,并且我将部署操作设置为仅生成脚本,以便我可以从SSMS手动运行。然而,脚本中仍然有Drop语句。您提出了一些很好的建议,即使在阅读完您提供的伟大链接后,仍然觉得我的部署脚本可能还有其他一些原因生成了drop database。 –

相关问题