我在VS2010中为SQL 2008 R2数据库服务器新设置的数据库项目一直在苦苦挣扎。我不是数据库开发人员/管理员,但由于IT常常出现在我的办公桌上。
我使用SSMS =>创建了表,视图,存储过程和函数的脚本。任务=>生成脚本功能。无论我为脚本生成选择哪个选项,我总是会遇到一些问题,即只要我使用 IF NOT EXISTS 选项,我就会收到SQL03070错误,说“这句话是在这种情况下不被承认。“。
当我将 CREATE [...] 更改为 ALTER [...] 时,我也会遇到同样的错误。在Microsoft's Connect Website上发布帖子之后,预计这将是“数据库项目不允许更改,因为它将动态确定是否需要对特定数据库目标进行ALTER或CREATE”。很好,但是当我从上下文菜单中选择执行SQL 时,如果数据库中已存在特定对象,我会收到错误 - 我希望在这种情况下动态生成ALTER语句。 / p>
不幸的是,由于数据库中有很多遗留代码/对象,我无法创建或运行完整的部署脚本,因此基本上我的想法是使用VS2010和TFS在更改时至少具有源控制的一些优点数据库中的对象。
总是遇到错误SQL03070虽然不是一个真正的选项,并且使用VS2010中的导入数据库对象和设置导入数据库也不能正常工作,因为我没有单个文件例如表定义(带键,索引等),但多个文件难以处理。
最后一个选项,将脚本的 Build Action 设置为 Not in Build 导致无法对这些文件运行代码分析,我们也希望做。
所以基本上我的问题是我们设置在VS2010中使用数据库项目/ TFS的最佳方法是什么,而不会出现SQL03070错误但启用了代码分析?如果我的问题的某些方面可能不够清楚,我会感到非常困惑和道歉,请随时询问更多细节,我会尽力回答。
提前致谢
-G。
答案 0 :(得分:1)
数据库项目背后的想法是,当您执行部署构建时,脚本会生成SQL文件(可从“构建”菜单中获取)。在此之前,您需要“定位”特定数据库。这可以通过Project属性中的Deploy Tab来完成。然后获取Target数据库的Schema,然后获取项目的模式并生成差异的脚本,以使目标数据库与项目相同。希望这是有道理的。
这是一篇很好的文章,可以更好地解释这一点。
http://blogs.msdn.com/b/gertd/archive/2009/06/05/declarative-database-development.aspx
祝你好运,
C