我正试图通过使用SSDT模式比较来更新Visual Studio 2019中的SQL Server项目。我的源是一个正在运行的数据库服务器,目标是VSSQLServer项目。
当比较完成时;"更新";,我收到信息
检测到源架构漂移。按比较刷新比较
无论我刷新比较多少次,都会得到相同的结果。
我尝试了各种连接调整(只读意图、异步处理、多个活动结果集(,希望能让比较运行得更快,并在漂移发生之前更新项目,但都无济于事。我也尝试过减少比较中包含的对象类型,但未能减少到足以防止检测到漂移的程度。
我认为我面临的最大问题是;检测到模式漂移";留言,我感觉自己在黑暗中射击。我的意思是,我不知道是什么导致SSDT检测到漂移,因此我无法解决它。
我试着运行SQL事件探查器来捕捉SSDT正在做的事情,这样我就可以找到SSDT检测漂移的位置。然而,在短时间内多次运行时,我找不到任何能给出不同结果的查询。
总之,我的问题是:
- SSDT查看什么来确定数据库模式何时漂移
- 当SQL Server项目总是检测到模式漂移时,我如何更新它
我也花了几个月的时间来寻找同样错误的原因。我已经在考虑在我的笔记本电脑上闪烁Windows 10了。我不再列出死胡同了。在我最后的绝望中,我把SQL Server数据库和VS项目复制到另一台机器上,在那里,比较毫无意义。人们怀疑错误可能不在VS中,而是我的SQL服务器混淆了VS。我有一个SQL Server 2012。我发布了最新的更新(SP4(,奇迹中的奇迹、比较和同步立即开始完美工作。当然,现在每次更新之前我都会祈祷一点,这样我就不会遇到"检测到源模式漂移";消息
对于许多SSDT版本,我一直在与这个烦人的错误作斗争,但没有成功。
搜索它,你会看到多个地方声称它是固定的,这是错误的,因为现在VS 2022 SSDT正在发生这种情况。
在我的情况下,只有当与我经常使用该工具的五个数据库服务器中的一个进行比较时,才会发生这种情况。
我发现的唯一可行的解决方法是重新启动目标数据库服务器(而不仅仅是循环SQL server服务(,然后快速运行SSDT比较!
由于发生这种情况的服务器是在本地网络中的VM上运行的集成服务器,因此我可以跳过服务器,但在其他情况下,这将是一个阻碍。
IMO关于这个问题最麻烦的事情是,你甚至不能生成脚本来复制/粘贴到SSMS中,这就是我经常使用该工具的方式。
这个问题已经好几年没有得到解决了,而且非常断断续续,所以我不希望看到它真正得到解决——我希望这个解决方法对某人有帮助。