问题标签 [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.
sql-server - VS2013 数据库项目 - 忽略模式/表匹配过滤器?
我有一个包含许多缓存/生成表的数据库。当我进行模式比较时,我想(永久)排除这些。有什么方法可以配置架构比较忽略特定架构,或者更好的是,忽略特定对象名称?例如,我想忽略“缓存”模式中名称以“XYZ”开头的所有表。
我意识到,如果我忽略一个对象一次,它的“忽略状态”就会持续存在。但是,我仍然会在比较结果中看到它(例如,图 1,000 个被忽略的表)。我正在寻找一种永久隐藏或根本不显示被忽略对象的方法。
另一个例子是,如果我想将一个大型数据库拆分为多个可重用的项目。在运行模式比较时,我可能想从每个项目中排除某些模式。
sql-server - 在更改数据库表列时,如何让 Visual Studio 进行简单的更改而不是删除/添加?
简单的说:
- 我正在尝试使用 Visual Studio 数据库项目来更新我的 sql server 数据库
- 我使用重构工具更改了表列的名称
- 更改列名后,我会在对数据库进行任何最终更改之前进行架构比较
- 但是,我注意到它会删除名称已更改的列,然后立即重新添加它(这显然会导致我不想要的数据丢失)
- 那么如何以某种方式更改设置以使其在更改列名称时进行简单更改而不是删除/添加
schema - 我可以从 SSDT 中的模式比较中排除自定义模式吗?
我们有一个非常动态的 SQL 服务器数据库,它总是从一个名为“temp”的自定义模式中创建新表并删除现有表(我们有一个 dbo 模式和一个临时模式)。我们还使用 SSDT 来维护和监控架构中的更改,但我们无法在架构比较中使用更新功能,因为如果在进行架构比较之后和尝试更新之前创建了一个新表(比如 temp.MyTable) , SSDT 使模式比较无效,因为某些内容发生了变化。目前,我们唯一的解决方案是在午夜左右运行模式比较,此时系统活动实际上不存在,但对于必须进行模式比较的人来说并不理想。
我的问题是,有没有一种方法可以从模式比较中排除“临时”之外的表。架构?
visual-studio - Visual Studio 2013 中的 ssdt 项目 - 为非空表部署替代脚本
我箍你可以帮助我。我在 Visual Studio 2013 SDDT 项目的 Schemacomparetool 中使用 Skriptgeneration。我的问题是我需要更新一个不为空的表。
Schemacompartool 做到了这一点:
我还需要像 Managment Studio Designer 更改这样的更改脚本:
我需要一个选项来在 ShemaCompartool 中设置它。
我希望你能理解我的问题。
谢谢史蒂芬
sql - 如何使数据库-> SQL 项目的“架构比较”尊重 SQL-CMD 变量
我有一个带有 2 个 SQL 项目 DB1、DB2 的 Visual Studio 2013 解决方案。
DB1 有一个引用 DB2 的存储过程。
如果我在程序中使用 .dacpac 和同义词
然后将数据库中的模式比较到 SQL 项目错误地将上述内容检测为更改,因为它不处理变量/同义词。
如果相反我使用
并将存储过程构建类型更改为无(以便项目构建)然后架构比较从数据库到 Proejct** 将“看不到”我的项目中的存储过程,并在每个 SQL 数据库项目中添加一个新的过程比较
经过架构比较后,我现在将看到
- DB1
- 德博
- 存储过程
- sp_myStoredProcedure.sql
- sp_myStoredProcedure1.sql
- sp_myStoredProcedure n .sql
- 存储过程
- 德博
其中 n = # of schema 比较!
如果有办法忽略构建错误 SQL7501,那么它应该使用第二个选项工作,但它似乎不能被忽略。
另一个解决方案是保存模式比较并在所有引用 DB2 的过程上手动选择跳过,但是我想检测这些过程中的更改。
这似乎是一个简单而常见的用例。有人想出解决这个设计缺陷的方法吗?
更新
在测试了凯文的回答后,我已经确定了为什么我的一些观点没有被 SC 正确处理。然而,他的回答在技术上是正确的:
如果您在 DB1 中有视图:
在您的 DB1 SQL 项目中是原始的(没有自引用 DB1)
模式比较将无法正确替换变量并识别更改:[$(DB2)] -> $(DB2)
问题是自引用 DB1.dbo.Table 在我的例子中,它被插入到大量连接的中途,其中许多连接是 DB2 引用。
这会导致 SC 错误地将所有 [$(DB2)] 标记为更改。可能是因为数据库 sql 没有在 VS 中“构建”并恢复为文本比较。
所以这并不是一个真正的错误,但对于不手动比较 SQL 的每一行的开发人员来说,这是一个令人困惑的结果。
我认为这个问题可以扩展到以下内容:
任何时候数据库 SQL 不构建 SQL CMD 变量都不会被解析,并且会导致可能掩盖原始构建失败的错误。
我还必须补充一点,在我的例子中,DB2 也引用了 DB1!
这可能是未能正确报告错误的部分原因。
最后,为了避免循环依赖(项目不能相互引用),我使用项目引用构建了引用 DB2 的 DB1,但检查了“抑制引用项目中的构建错误”。DB2 没有构建,因为它引用了 DB1。
然后,一旦 DB1 构建完成,我就使用 bin 文件夹中的输出 DACPAC,将其复制到另一个位置,并在 DB2 中引用该 DB1 DACPAC。现在任何时候 DB1 更改我都必须重建 DACPAC 复制到此文件夹。幸运的是,这不会改变太多。
整个过程非常复杂,SQL 项目应该允许相互引用(使用远程错误抑制),但无论如何我最终设法获得了 2 个相互引用的数据库,并且所有同义词和模式比较兼容!
而且只用了2天的时间奋斗!
https://connect.microsoft.com/VisualStudio/feedback/details/1291555
sql-server - 为什么我的 SQL Server 架构比较变得很慢?
我们有一个 MS sqlproject,其中一个数据库项目引用了多个供应商数据库。在其他项目中,模式比较非常快,但在这个项目中,模式比较慢到了 20 分钟。那是不能用的。
这可能是什么原因造成的?我该如何诊断?
sql-server - VS 2013 T-SQL 项目中的奇怪行为
尝试从 db 解决方案构建项目时遇到奇怪的错误。
例如。我有一张桌子
这就是我得到的:
SQL71508:模型已经有一个同名的元素 dbo.partner2_log_status。
SQL71501:默认约束:[dbo].[DF_partner2_log_status_log_count] 对列 [dbo].[partner2_log_status].[log_count] 的引用未解析。
但是项目中只有一个同名的表。
等等等等...
10 个项目中出现约 1,7k 错误。
当我在 Visual Studio 中查看/构建时,整个解决方案都会发生这种情况。SSMS 接受代码,并成功执行,所以这似乎是 VS 独有的问题。
发生了什么,我该如何解决?
sql-server - 模式比较检测相同存储过程的差异
我正在使用 Visual Studio 2012 架构比较工具来比较一个带有 Microsoft SQL Server DAC 包文件 ( dacpac
) 的实际数据库。期望是数据库和文件是“相等的”。但是,模式比较报告了BodyScript
三个存储过程的属性,它们都包含大量动态SQL。然而,令人沮丧的是,在对象定义的实际差异中,存储过程的定义之间没有明显的差异。此外,我们已经将脚本复制到许多不同的差异工具中以查找空格类型的差异,但看起来这两个脚本是二进制相同的。我们尝试了许多模式比较选项(忽略空格、忽略关键字大小写等),但似乎没有任何方法可以解决这个问题。
在研究这个问题时,我在Microsoft Connect和StackOverflow上都遇到过类似的问题,但这些问题似乎还没有得到解决。有人对解决此问题的其他方法有任何建议吗?
visual-studio - Visual Studio 2013 中的数据库架构比较选项 - 中止更新目标
所以我在 Visual Studio 模式比较上比较数据库。然后我按下了更新目标按钮,它继续更新架构。现在我实际上得到了一个
'逆向工程操作无法继续,因为您没有查看定义权限'。
我知道这个错误以及它发生的原因。但是我的问题是如何中止此操作?我相信没有更改,因为默认选项设置为
'在可能的数据丢失的情况下阻止'
那么如何中止这个操作呢?
visual-studio-2013 - msbuild 架构比较 - 空目标
我正在考虑从命令行使用 MSBUILD 来运行模式比较 (*.scmp)
在解决方案中,我们有多个数据库,并且团队并不总是那么善于记住将更改(存储过程、表等)检查到解决方案中。虽然 Visual Studio 可以显示比较,但我找不到导出错误列表的方法,以便我追逐团队。屏幕截图似乎是唯一的方法。
我想我会看看是否有任何工具来生成差异列表。我遇到了以下示例:
http://blogs.msdn.com/b/ssdt/archive/2014/07/15/msbuild-support-for-schema-compare-is-available.aspx
我看到了这个例子:
但是我无法让它工作。当我针对我的特定设置运行等效项时,我得到:
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets(843,5): SchemaCompare 错误:目标参与者无效或为空。在 Microsoft.Data.Tools.Schema.Tasks.Sql.SqlSchemaCompareTask.Execute() [C:\TFS\Argon_Main Solution_Latest R elease\Source\Blah\SomeData.DataDatabase.sqlproj]
有没有人有任何想法?
干杯