gpt4 book ai didi

sql-server - SSDT Schema Compare总是添加对象,这些对象在解决方案中为 "Build = None"

转载 作者:行者123 更新时间:2023-12-04 16:13:40 26 4
gpt4 key购买 nike

在我的Visual Studio数据库解决方案中,由于一些原因(由于Build action = None引起的构建问题,...),我必须设置一些对象OPENQUERY

不幸的是,Schema Compare不比较那些元素。每当我进行比较“源=开发数据库”和“目标=解决方案”时,它们都被标记为“新的”,而模式比较将建议给添加这些对象。

如果我添加这些对象,则更新将识别出它们已经在解决方案中,并将添加具有新名称[objectname] + _ 1和Build action = Build的元素,这当然会在下一个构建过程中引起问题。

有人知道是否有解决此问题的简便方法吗?除了使用Pre-buildPost-Build命令行外,在构建之前禁用对象并在再次构建之后启用它们。

提前致谢

最佳答案

评论中要求的最小可复制示例:

SebTHU:添加了最少的可复制示例。

创建一个新的空沙箱数据库。
在数据库中,运行以下脚本:

创建表Table1(PersonID INT非空,FullNam nvarchar(255)非空)转到创建表Table1_New(PersonID INT非空,FullName nvarchar(255)非空)转到创建 View vwOriginalView AS SELECT PersonID,FullNam from Table1 GO EXEC sp_rename' Table1','ZZZTable1','OBJECT'GO EXEC sp_rename'Table1_New','Table1','OBJECT'GO创建 View vwNewView AS SELECT PersonID,FullName FROM Table1 GO

这将在Table1上模拟有效的ALTER TABLE,但原始表将保留为已重命名的不赞成使用的对象。 vwOriginalView现在有一个无效的引用,但我们现在也想保留它;它将被重命名,但这不是演示此问题所必需的。

在VS中,创建一个新的数据库项目。
针对沙箱数据库运行架构比较。按更新将4个对象的脚本添加到项目中。保持比较窗口处于打开状态。
现在出现了构建错误(vwOriginalView具有对Fullnam列的无效引用)。要忽略此对象,请将其BuildAction设置为None。错误消失。
再次在比较窗口上按“比较”。 vwOriginalView现在在数据库中显示为"new"对象,将添加到项目中。
这就是问题。提醒您,如果项目中确实存在该对象,则将其BuildAction设置为None。但是,对于许多(20-30)这种类型的对象,SchemaCompare变得令人困惑。

我需要的是一种比较方法,可以将“BuildAction = None”对象视为项目中的现有对象-理想情况下可以作为选项进行切换,以便在需要时可以使这些对象在“比较”中清晰可见;或使已弃用的对象(特别是我选择的对象)不引起构建错误的方法-一种“BuildAction = None”的替代方法。

我已经尝试过在VS中使用SQL错误抑制,但是一方面它不起作用,另一方面,在全局范围内抑制这类错误将是一个坏主意。

关于sql-server - SSDT Schema Compare总是添加对象,这些对象在解决方案中为 "Build = None",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58179549/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com