问题标签 [schema-compare]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
224 浏览

visual-studio-2012 - Visual Studio SSDT 架构比较 - MRU 连接列表中的项目数量有限?

当使用Schema compare -> Select target -> Choose database时,最近使用的数据库连接列表似乎仅限于显示五个条目。添加“新连接”时,列表中的(显然)随机条目将替换为新条目。

是否可以更改此限制,以便我们可以在列表中包含例如 10 个数据库?

这将很有帮助,因为我们使用两个数据库项目和五个不同目标环境的解决方案,并且每次我们对数据库进行模式比较时,向上移动“环境阶梯”,一些条目被删除,迫使我们重新 -每天输入连接字符串。

0 投票
1 回答
5403 浏览

sql-server-2008 - 为什么 Visual Studio 2013 架构比较包含每个对象定义的权限声明并将它们视为与项目不同?

我最近将我的一个项目更新为 Visual Studio 2013。更新将我的 .dbproj 更改为 .sqlproj,以使其符合新的 SQL 项目格式。

转换后,我对我的 SQL 项目和我的 SQL 2008 生产数据库进行了模式比较,它现在认为实际上每个对象都是不同的。通过模式比较工具进行调查后,似乎区别在于每个对象定义还包括授予每个角色或用户对该对象的权限的声明。

因此,服务器端看起来像这样:

相同对象的客户端如下所示:

为什么是这样?当我使用 Visual Studio 2010 运行架构比较时,这并没有发生。此外,我查看了 SQL 比较工具的所有选项,但找不到一个会“忽略对象的权限声明”的选项。任何人都可以帮忙吗?

编辑

只是为了确保这是 Visual Studio 的 SQL 比较工具而不是 SQL Server 本身的问题,我在 Visual Studio 2010 中重新运行了我的暂存数据库和生产数据库之间的比较,并且对象定义不包括对象权限,就像它们一样在 Visual Studio 2013 中。

0 投票
0 回答
287 浏览

tfs - 使 TFS SchemaCompare 脚本使用预定义的 SQLCmd 变量?

我们手动运行了 3 个不同的 SchemaCompare 文件(从 TFS 的内置功能中保存)。这些保存的文件包含要比较的源数​​据库和目标数据库。一个是将我们的 DEV 环境与 TFS 进行比较,另一个是将 UAT 环境中的内容与 TFS 进行比较。

我们将 SQLCMD 变量用于数据库名称 { [$(DatabaseStage) }。这些 SQLCMD 变量因环境而异。目前,我们必须进入每个数据库项目的属性以更改变量以匹配我们正在比较的环境。

如果 SQLCmd 变量可以保存在实际保存的模式比较文件中,那就太好了。这是可能的还是任何解决方法?

保存的架构脚本文件

0 投票
1 回答
1603 浏览

c# - Visual Studio 架构比较问题

在 Visual Studio 中,我更改了数据库项目中的字段名称。

在我进行架构比较后,但无法识别此表中的任何更改。
在 Schema 比较的选项中,我找不到有关字段寄存器的任何设置(可能是因为我的英语很弱)。
如何使该架构比较看到字段名称的变化,就像我的情况一样?有什么建议吗?

0 投票
1 回答
125 浏览

database - 在部署后脚本中使用已删除列中的值的最佳方法是什么

我们目前在自动构建期间使用数据库项目来确保我们的测试和开发数据库与源代码同步。

在发布配置文件期间,我们注意到了一个问题,我们当前使用的工作流并未完全涵盖该问题,并且很好奇管理此问题的最佳方法。

问题:

我们对数据库模式进行了重新设计,并决定将表 ( ) 中的列 ( name)user移动到新表 ( userdetail) 中。新userdetail表需要 table 上列的现有内容,但我们也想从 table user中删除name列。确保我们的数据库项目是最新的。username

问题是,如果我们尝试userdetail在预部署中填充表,则该userdetail表不存在。我们可以在其中创建表,pre-deploy但是 db 项目在部署期间尝试再次创建它并失败。如果我们尝试在userdetail部署后填充,则该name列已被删除,我们无法使用它来填充userdetail.

目前我们有两种可能的解决方案,我可以看到。

可能的解决方案 1

name将列保留在user表中,这意味着运行的人口userdetails正常,但我们留下了需要在部署后手动删除的列,这很容易出错。

可能的解决方案 2

创建一个临时表以user在预部署期间捕获信息并将其存储以在部署后脚本期间使用。在部署后删除临时表。

选项 2 目前似乎是最好的,但以后必须以这种方式手动存储和使用数据是一件痛苦的事。有没有推荐的方法来应对这种可能性?

0 投票
2 回答
997 浏览

visual-studio-2013 - 无论如何要在 VisualStudio 架构比较中设置 SQLCMD 变量

我正在使用 vs2013 数据工具并尝试在不同环境中比较我的数据库项目和数据库。

但是我的 tsql 代码使用同义词来访问不同的数据库

我可以使用发布文件进行设置,因为我可以将每个 SQLCMD 变量设置为正确的环境设置,并且在生成脚本时插入正确的 db/server/whatever。

例如

但是,当我进行数据库比较(使用 .scmp)时,我没有设置 CMDvars 的选项,因此我无法成功与 TEST 环境进行比较,因为同义词是由指向开发环境的项目属性设置的。

无论如何要在 SCMP 文件中设置 CMDVars

0 投票
1 回答
1753 浏览

azure - 架构比较超时

在数据库项目Azure SQL 数据库之间在 Visual Studio 2013 中进行架构比较时,我不断收到以下超时错误:

错误 1 ​​尝试对 Microsoft.Data.Schema.Sql.SchemaModel.ISqlUser 类型的元素进行逆向工程时从 SQL Server 收到错误:超时已过期。在操作完成之前超时时间已过或服务器没有响应。

错误 2 ExecuteReader 需要一个打开且可用的连接。连接的当前状态为关闭。

我在 Azure 中托管的 Windows Server 2012 R2 虚拟机上执行此操作。

  • 防火墙中允许的 1433 端口
  • SQL (Azure) 数据库服务器上允许 VM 的 IP

我可以使用 Visual Studio 的 SQL Server 对象资源管理器很好地查询数据库,因此我可以确定我的连接和帐户登录。

是否有任何其他安全设置可能会给我带来这些问题?

0 投票
1 回答
694 浏览

visual-studio - SSDT 模式比较 - 忽略系统服务代理(VS 2013)

我的解决方案中有一个数据库项目,并通过 SSMS“导入数据层应用程序...”选项从 Windows azure 导入了一个数据库。使用模式比较时,比较会在删除部分显示系统“服务代理”(消息类型、队列等)。当我应用更新时,一切正常,但这些系统服务代理并没有被删除并且一次又一次地出现。

要删除的未处理项

我想不可能删除它们,但是在模式比较中是否有可能忽略它们

0 投票
1 回答
715 浏览

visual-studio-2013 - 项目和快照之间的架构比较

我使用带有 SSDT 的 Visual Studio 2013 来开发我的数据库项目。解决方案中的一些项目依赖于其他项目。我使用架构比较工具创建部署/更新脚本。我发现当前项目状态和最新项目快照之间存在差异。之后,我创建新快照。

现在我必须使用另一台计算机。当我尝试比较项目和快照时,我收到许多错误“无法解析来自名为 'SOMEPROJECT.dacpac' 的源对外部元素的引用,因为没有加载这样的源。” 我认为问题可能出在文件夹名称中 - 以前的解决方案在“d:\projects\solution name\”中,现在在“c:\solution name\”中。我无法在新计算机上使用磁盘 D:。

任何想法如何解决这一问题?

0 投票
1 回答
1670 浏览

visual-studio-2012 - SQL Server Data Tools 忽略架构比较上的重构

我遇到了与此处描述的问题看似相同的问题:SSDT Refactor Rename is ignored by the Schema Comparison script generation。本质上,SQL Server Data Tools 的重构组件不适用于架构比较/更新。例如,不是重命名表,而是删除具有旧名称的表并创建具有新名称的表。不幸的是,我没有看到该问题的公认答案。我发现了一个类似的问题,这似乎是由同一个人在 MSDN 上提出的;请参阅:架构比较脚本生成忽略重构重命名。同样,它看起来不像提出了一个可接受的答案。我真的很想弄清楚如何让这个功能发挥作用。有人有想法吗?