【发布时间】:2018-04-09 14:29:23
【问题描述】:
我在Visual Studio 2017 中有Schema Compare 的这种奇怪行为。
-
在比较 2 个数据库时,我发现两个相同的表不同,其中一个没有
PK名称。如果我使用SSMS编写表脚本,我会看到确实在其中一台服务器上的表脚本似乎没有PK名称,但如果我查询sys.indexes表,我会发现该索引具有相同的名称在两台服务器上。我找到的一个可能的解决方案是更新表,假设添加一些随机索引并删除它,所以我猜测它与 SQL Server 如何存储对象定义有关。但是很高兴知道是什么导致了这个问题以及如何以正确的方式解决它,而不是通过某种解决方法。
附言我知道
PK的名字不是“正确的”。 -
比较两个相同的
SPs时的类似情况。我尝试运行sp_refreshsqlmodule和sp_recompile但它没有帮助。更新SP会有所帮助,但这又不是很好的解决方法。
编辑 1:在第一个示例中,两个数据库上都存在同名的 PK(即使名称不符合标准)。在两个数据库上运行的以下查询返回相同的结果:
SELECT I.name
FROM sys.indexes AS I
INNER JOIN sys.objects AS O
ON O.object_id = I.object_id
INNER JOIN sys.schemas AS S
ON S.schema_id = O.schema_id
WHERE S.name = 'MySchema'
AND O.name = 'MyName'
结果:PK__TraceDat__AAAC09D801ED28A5
【问题讨论】:
标签: sql-server sql-server-data-tools database-project schema-compare