忽略“检测到源架构漂移”错误,继续更新

2024-01-03

我在 Visual Studio 2017 中有一个 SQL 项目,我正在使用 SSDT 从 SQL 数据库更新我的项目,如下所示:

通常,我用作源的数据库正在发生变化(通常以小且不相关的方式),当发生这种情况时,我无法更新我的项目,我得到“commonly https://stackoverflow.com/questions/14774749/sql-schema-compare-will-not-update-after-clr-object-installed-source-schema-dri" "有经验的 https://social.msdn.microsoft.com/Forums/sqlserver/en-US/5c22a7b4-7a82-4717-a118-2475bc62705b/schema-compareupdate-error-target-schema-drift-detected?forum=ssdt":

检测到源架构漂移。按比较刷新。

然而,就我而言,这个错误是合法的,我只是不在乎,无论如何我想更新我的目标。有没有办法忽略此消息并让 Visual Studio 更新我的项目,而不管架构漂移如何?


尽管微软声称这个问题早在 2020 年 5 月就已在 Visual Studio 2019, 16.6 中修复 https://developercommunity.visualstudio.com/t/vs-tools-sql-schema-compare-reports-false-drift-de/840302,我今天能够在我的计算机上一致地重现该问题 - 因此,在我能够可靠地重现“检测到源架构漂移”之后,我对 Visual Studio 2019 的 SSDT 文件(是的,对于未混淆的程序集)进行了一些挖掘。按“比较”刷新。 ”消息,我相信我发现了问题:


  • 中止比较的决定是由Microsoft.Data.Tools.Schema.Utilities.Sql.SchemaCompare.SchemaCompareController::VerifyParticipantsNotDrifted()

    • The SchemaCompareController class is in this assembly:
      • Common7\IDE\Extensions\Microsoft\SQLDB\DAC\150\Microsoft.Data.Tools.Schema.Sql.dll
    • 该方法返回一个bool如果在调用该方法时认为源或目标发生“漂移”,则返回值。
  • 它通过调用来确定这一点ISchemaCompareParticipant::IsStale()在两个Source and Target对象。

    • 就我而言,我的Source was my *.sqlproj项目。所以 SSDT 认为我的项目“过时” - 但为什么呢?
  • 经过更多挖掘,我发现 SSDT 使用相同的逻辑进行比较*.sqlproj就像它一样*.dacpac files.

    • 这是有道理的:当您进行架构比较时,它实际上会构建您的*.sqlproj to a *.dacpac文件在你的MyProject\bin\Debug and MyProject\bin\Release目录。
    • And the logic for determining if a .dacpac file is "stale" is to check 2 things:
      1. If the Schema Comparison Configuration has changed
        • 在我们的例子中,它绝对没有,所以我们可以消除它。
      2. If the .dacpac file itself has an old Build Date - or if the .dacpac doesn't exist at all.
        • 这个逻辑在SchemaCompareParticipantForDacpac.BuildArtifactStale()
  • The BuildArtifactStale()方法只是抓取.dacpac's FileInfo.CreationTimeUtc, LastWriteTimeUtc, and Length属性并将其与模式比较启动时拍摄的同一文件属性的快照进行比较。

  • So 某物正在修改bin\Debug\MyProject.dacpac比较开始和执行生成脚本(或更新目标)步骤之间的文件 - 或者无法生成最新的.dacpac output.

  • 我承认我无法找出什么thing导致我的bin\Debug\MyProject.dacpac文件无法正确重建,但我确实看到了一些新的构建警告(来自静态分析)。解决这些构建警告并删除后bin\Debug\MyProject.dacpac and bin\Release\MyProject.dacpac文件,然后重新运行架构比较,架构漂移错误不再出现。

我的预感是 SSDT 的静态分析过程会干扰 dacpac 构建过程或以其他方式使构建无效,从而阻止最终的结果.dacpac文件无法生成,即使它构建得很好。

在恢复我的更改以恢复静态分析警告后,我无法重现该问题(啊!),所以我猜测这是构建过程或静态分析部分中的竞争条件。


TL;DR:

执行以下 3 件事(您不需要重新启动 Visual Studio 或重新加载 SSDT 项目)

  1. 确保您没有任何构建错误或警告,尤其是 SSDT 静态分析工具中的任何内容。
  2. 删除你的bin\Debug\YourProject.dacpac and bin\Release\YourProject.dapac files.
  3. Do a project rebuild (both Debug and Release) and check the Last-Modified timestamp on the .dacpac file is unchanged between the comparison completing and you clicking Generate Scripts or Publish.
    • 如果您确实看到上次修改时间发生变化,请查看是否可以找出导致该变化的原因,并在此 QA 中告知我们,以便我们可以向 MS 提供可靠的错误报告。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

忽略“检测到源架构漂移”错误,继续更新 的相关文章

  • VS2017 RC1 安装安装错误 - Microsoft.PortableLibrary.TargetingPack.Msi 失败 - 无 XAML

    我安装 VS2017 时出错 Package Microsoft PortableLibrary TargetingPack Msi version 15 0 26004 1 failed to install 实际的 IDE 将打开 但我
  • 在 Visual Studio 2013 中更改 TFS 源代码管理映射

    我有多个先前映射到托管 TFS 的解决方案 他们的本地映射也已定义 并且所有源代码都是本地最新的 此后我停止了 TFS 订阅并开始使用 Visualstudio com 作为我的 TFS 服务器 我进入其中一个解决方案 从解决方案中删除 v
  • 如何在SSRS VS2008中为多个数据集应用父组

    我已经与这个问题斗争了好几天 但没有成功 我需要实现一种非常棘手的报告格式 但最主要的是所有数据集都需要按 1 个父级进行分组 我将尝试解释 假设我们有数据集1 数据集2 两者都有 AccountNumber 作为公共字段 父级 我需要在报
  • 在 Xamarin 中获取 OutOfMemoryException

    java lang OutOfMemoryError 考虑增加 JavaMaximumHeapSize Java 执行时内存不足 java exe 我的 Visualstudio Xamarin 项目出现内存不足异常 请帮助我如何解决此问题
  • 如何在 Visual Studio 2010 中处理 TODO 注释?

    我希望 Visual Studio 列出开头包含 TODO 的所有行 通常在注释符号之后 注释符号可能会根据文件类型而变化 这些行可以在解决方案中的任何文本文件中找到 无论是 C VB F T SQL ASPX XAML 或只是 TXT 在
  • Visual Studio 2012 命令窗口不支持“xsd”命令吗?

    我读到可以直接在 Visual Studio 2010 中运行 xsd 命令 我的机器上有 VS 2012 当我运行时 xsd XMLFile xml I get 命令 xsd 无效 那么 VS 2012 中是否不支持 xsd 命令 还有其
  • dia2dump:CoCreateInstance 失败 - HRESULT = 80040154

    我正在尝试使用 Visual Studio 2017 及其在 Windows 7 x64 上转储 PDB 的签名dia2dump https msdn microsoft com en us library b5ke49f5 aspx 我加
  • 如何在 C# 中向类、方法、属性等添加文档工具提示?

    不确定我的说法是否正确 但我想开始向我的类 方法 属性等添加一些文档 我know这可能是非常明显的 但我从未真正学会过 我不知道从哪里开始 只是为了澄清 每当您滚动某个类 或方法 属性等 时 它都会在 Visual Studio 中显示一个
  • 在 Visual Studio 中使用代码片段

    Right now when I want to use the cw snippet Code snippet for Console WriteLn I am typing cw Tab Tab 这是正确的 最快的 方法吗 如果有某种方
  • Visual Studio 错误:(407:需要代理身份验证)

    我位于需要凭据的公司代理服务器后面 我一直在尝试连接到 TFS 服务器 在 tfspreview com 上 微软 Visual Studio 专业版 2012最后2个小时没有成功 每次尝试都会遇到此错误 当我启动集成浏览器时 它工作正常
  • C# 开发人员有什么理由应该学习 Emacs/Vim 吗?

    我在一家纯粹的 Microsoft 商店担任 C 开发人员 最近 我开始在工作之余的空闲时间使用 Gas 和 Linux 自学汇编 我喜欢摆弄 Linux 尽管我对它还很陌生 我一直听说我应该学习 VIM 或 Emacs 但事实是 我绝对不
  • Visual Studio 空引用警告 - 为什么没有错误?

    我注意到 Visual Studio 的一些特殊之处 首先 尝试在函数中的某个位置键入以下内容 C class Foo public void Bar string s int i s Length 现在 它会立即标记s in s Leng
  • SSDT SQL Server 数据库项目中用于架构比较的命令行/API?

    在 Visual Studio 2012 中 我们有Schema Compare http msdn microsoft com en us library hh272690 28v vs 103 29 aspx in SSDT http
  • Visual Studio 的 C# 智能感知是否可以提示先显示某个方法重载?

    我有两个互相重载的方法 public class Car public int GetPrice string vinNumber string make Database GetMake vinNumber expensive opera
  • 在 Visual Studio 2008 上设置预调试事件

    我想在 Visual Studio 中开始调试程序之前运行一个任务 我每次调试程序时都需要运行此任务 因此构建后事件还不够好 我查看了设置的 调试 选项卡 但没有这样的选项 有什么办法可以做到这一点吗 你唯一可以尝试的 IMO 就是尝试Co
  • Visual Studio,应用程序设置...重新排列

    愚蠢的问题 纯粹是审美 鉴于上面的图片 如何上移 下移值 例如 状态 属于 高度 宽度 顶部 左侧 窗口位置 状态 分组 这不是我后来添加东西但慢慢变得混乱的唯一项目 可以删除 重新添加 但这会变得乏味且容易出错 可以保留原样 但这只是一个
  • Visual Studio 加载符号

    我正在研究一个冷聚变 http en wikipedia org wiki ColdFusion项目已经有一段时间了 Visual Studio 至少对我来说开始表现得很奇怪 我观察到 当我开始调试时 它构建了项目 开始部署 部署完成并开始
  • Visual Studio 在构建后显示假错误

    我使用的是 Visual Studio 2017 构建后 sln在调试模式下 我收到错误 但是 当我通过双击错误列表选项卡中的错误来访问错误时 错误会从页面中消失 并且错误数量也会减少 我不太确定这种行为以及为什么会发生这种情况 有超过 2
  • 识别 Visual Studio 中的重载运算符 (c++)

    有没有办法使用 Visual Studio 快速直观地识别 C 中的重载运算符 在我看来 C 中的一大问题是不知道您正在使用的运算符是否已重载 Visual Studio 或某些第三方工具中是否有某些功能可以自动突出显示重载运算符或对重载运
  • 如何在VS2017中从.net项目引用netstandard项目?

    我有一个 netstandard2 0 项目 用于与第三方 Web 服务交互 我需要在同一解决方案中引用旧的 net 4 6 2 项目中的该项目 但是当我这样做时 我会收到一堆关于需要引用我定义的类型的错误 例如 我将调用 netstand

随机推荐

  • 如何从rails控制台获取详细的错误消息?

    假设我希望从控制台创建一个用户 其中包含电子邮件already存在 如果我做User create 由于模型验证 在这种情况下的独特性 create失败 rails 控制台中的输出将显示 rollback transaction 用户未保存
  • :has 与 :matches - 选择器级别 4

    只是想知道CSS 选择器4 伪选择器之间有什么区别 has and matches 规格http dev w3 org csswg selectors 4 overview http dev w3 org csswg selectors 4
  • 如何从 Jenkins 将节点应用程序部署到远程主机?

    这是节点应用程序目录根目录中的 Jenkins 文件 pipeline agent any triggers pollSCM stages stage deploy steps sh scp 我将 Jenkins 配置为连接到远程 gitl
  • 显示图像时出现奇怪的 matplotlib 行为

    当范围 0 255 内的常规 RGB 图像转换为 float 然后由 matplotlib 显示时 图像将显示为负数 如果它被转换为 uint8 它会正确显示 当然 这给我弄清楚发生了什么造成了一些麻烦 因为我不小心将其中一张图像投射为浮动
  • gpiod - 在设备树中使用标签

    我想用libgpiod通过自定义板上的用户空间控制一些 GPIO 我有一个 i MX6UL 处理器 它有数百个引脚 我将只使用其中 8 个 作为 GPIO 我读到了关于libgpiod因为它正在取代旧的 sysfs API 我很高兴您可以为
  • Summernote createRange 与 HTML

    我的 Summernote 编辑器中的某些文本包含 HTML 我想要让用户选择的文本与编辑器中的文本完全相同 到目前为止我看到的所有答案都告诉我使用这个 summernote summernote createRange toString
  • .NET MVC 4 WebAPI POST 不起作用

    核心问题 GET 有效 POST 无效 我是 WebAPI 的新手 所以我可能做了一些愚蠢的事情 但我在网上查了很多资料 试图找出为什么这不起作用 相当简单的 WebAPI C 应用程序 我试图将其简化为非常简单的路线 config Rou
  • X11 窗口调整大小时卡顿

    我正在 X11 中创建一个 openGL 窗口并使用glxswapbuffers用于双缓冲 问题是 渲染看起来不错 但在调整大小时 openGL 内容会跳来跳去 窗口边框会出现卡顿现象 我尝试过滤ConfigureNotify事件 延迟它们
  • Pandas `isin` 函数的更快替代方案

    我有一个非常大的数据框df看起来像 ID Value1 Value2 1345 3 2 332 1355 2 2 32 2346 1 0 11 3456 8 9 322 我有一个包含 ID 子集的列表ID list 我需要有一个子集df为了
  • ViewData 是 ASP.Net 5(核心)中 ViewBag 的新标准吗?

    我注意到 在我从 Microsoft 看到的 ASP Net 5 核心 的所有示例和教程中 VS 2015 中的默认 Web 应用程序模板使用 ViewData XXX 代替 ViewBag XXX 这是现在推荐的从控制器传递数据的方法吗
  • 角度附加组件到各个选项卡

    我正在尝试使用角度材料将组件 动态创建 附加到相应的选项卡 viewChild但只有当我单击第二个选项卡中的按钮时 它才会转到第一个选项卡 Here is Stackblitz 角度附加组件到各自的选项卡 https stackblitz
  • 在 Objective-C 中,如何从类别访问私有属性

    我想从类的类别中访问该类的私有属性 但要访问私有财产 我必须在类别中重新声明相同的私有财产 如果我不重新声明 我会收到编译错误 Property
  • 使用 Commons Multiparthttpservlet 解析器上传文件

    我在 Spring Boot 中做了一个服务 在 Reactjs 中做了前端 但我的服务没有提供任何东西 没有结果 我正在上传带有文件图像或音频的表单数据 但我的休息服务没有收到任何文件 我的服务等级 CrossOrigin Request
  • C#:传递通用对象

    我想要一个通用的打印功能 PrintGeneric T 在以下情况下 我缺少什么 一如既往 感谢您的帮助 见解 public interface ITest public class MyClass1 ITest public string
  • Visual Studio - 从元数据查看类型

    我记得在以前安装的 Visual Studio 中 当我对当前解决方案中不存在的类型使用 转到定义 选项时 它会显示一个选项卡 显示从元数据反映的类型 我当前的安装直接进入对象浏览器 我更喜欢看到元数据版本 有没有什么方法可以选择默认行为
  • 将 Swift 字典转换为 NSDictionary

    我创建了一个 Swift Dictionary 对象 var params first name firstNameTextField text last name lastNameTextField text company compan
  • 如何替换回车符

    我有一个变量 myClass 0 gt comment 其中有回车符 我想将该变量中的所有回车替换为 n 我怎样才能做到这一点 下面可能会有所帮助 myClass 0 gt comment 这是一些输出 输出 array 0 gt stri
  • 使用 React Router 在页面的某个部分内导航

    我的导航栏包含以下内容 Home About Login Home is 具有多个部分的垂直滚动页面 e g About和其他部分 虽然登录是单独的反应组件 它被渲染在 login route 这是我的route js file
  • 如何强制 SDL_Init() 失败?

    有没有可靠的方法SDL Init 在测试用例中使用失败 我认为您可以通过不包含 SDL 动态链接库 SDL dll 来强制它失败
  • 忽略“检测到源架构漂移”错误,继续更新

    我在 Visual Studio 2017 中有一个 SQL 项目 我正在使用 SSDT 从 SQL 数据库更新我的项目 如下所示 通常 我用作源的数据库正在发生变化 通常以小且不相关的方式 当发生这种情况时 我无法更新我的项目 我得到 c