Visual Studio 数据库项目的两种方式同义词

Posted

技术标签:

【中文标题】Visual Studio 数据库项目的两种方式同义词【英文标题】:Visual studio database project two way synonyms 【发布时间】:2014-08-22 09:34:07 【问题描述】:

我们很少有数据库一起运行,它们之间有同义词。数据库之间还有两种方式的同义词。 VS 数据库项目似乎无法处理这些。两种方式的同义词在 VS 中不起作用,我只能在 VS 中以一种方式引用另一个数据库,否则会有循环引用。我尝试在 VS 中创建数据库项目的快照,但为了能够拍摄快照,我需要构建项目,为了能够构建项目,我需要引用另一个无法编译的数据库项目,因为它没有t 识别同义词等。似乎多个数据库(同一服务器)彼此具有两种方式的同义词对于 VS 管理来说太复杂了。有没有人设法让这样的事情起作用?

【问题讨论】:

【参考方案1】:

使用 SQLPackage 命令行来创建 dacpac(它比 GUI 更宽容的跨数据库引用)。将它们添加为数据库引用。

这里有一节是关于使用 SQLPackage 从现有数据库中提取 dacpac。 http://schottsql.blogspot.com/2012/10/ssdt-importing-existing-database.html

我在这里写过关于外部参考的文章: http://schottsql.blogspot.com/2012/10/ssdt-external-database-references.html

我们有很多跨数据库依赖项,一旦我们完成了初始构建或从恢复的数据库开始,我们就不会遇到任何引用问题。

【讨论】:

谢谢。我看了一下,但两个数据库都在不断变化,如果我创建一个 dacpac,几天后它就会过时,有新的表、视图、可能是同义词等。你如何处理? 我今天早些时候看了你的博客,写得很好,但可能需要阅读所有这些。但是,是的,花了几个小时,但服务器上有大约 8 个数据库,所有数据库都相互引用,但无法构建解决方案。我考虑过您博客中的 dacpac 解决方案,但 dacpac 几天后就会过时。 您需要保持 dacpacs 同步。在构建/更改项目时,将输出 dacpac 复制到您的共享文件夹中。这并不难,我发现它并不像你想象的那么频繁,除非你不断地引用那些新的/改变的对象。即使这样,我们的几个数据库项目也有 5-6 次对 dacpac 文件的引用。 好的,谢谢彼得,我会更深入地了解您的博客。但是是的,无法创建 dacpac,因为它引用了其他无法编译的项目,为了能够编译我需要 dacpac 等。你觉得这样的努力值得吗?目前,我们仅使用数据库项目来跟踪更改,因此我们有历史记录,但我想自动化该过程,以便我可以从差异生成 .sql 以在生产数据库上运行。如果你碰巧在悉尼,欢迎你看看我们的项目,你会喜欢的:) 我觉得很值得。一组关于数据库应该是什么的“真相”,它就是这样(带有生成/审查脚本的选项)。如果使用 sqlpackage.exe 生成 dacpacs 启动,则不需要其他项目立即编译。一旦引用到位,它们应该可以轻松编译。如果您首先添加对项目的引用,那么导入它也可能会更容易一些。我知道通过循环引用对我们来说是最困难的部分。 :)

以上是关于Visual Studio 数据库项目的两种方式同义词的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 2005简体中文90天试用版变永久正式版的两种方法

Visual Studio 数据库项目约束 - 表脚本或单独的文件?

保持VISUAL STUDIO控制台驻留不闪退

Visual Studio 2008下的C++项目结构

我如何在Git中处理Visual Studio解决方案和项目文件?

Visual Studio中Debug与Release以及x86x64Any CPU的区别