我目前正在开展一个项目,其中发生了一些(重大)数据损坏。具体而言,数据库在大多数表上使用GUID作为主键,但是它并没有强制执行这些表之间的数据完整性(由于啰嗦“这是从另一家公司购买并与我们的东西集成”讨论)。正在努力引入参照完整性,但必须在可能的情况下清理数据。

此数据损坏的部分原因是已将不同的实体密钥切换或插入到不正确的列中。例如,有效的“ProductId”和“ProductId”。值存在于“CustomerId”中。由于软件在错误的列中插入错误的键而导致的字段。在问题最终被捕获之前(在数据聚合工作期间),数据库中发生了数月,现在清理工作量相当大。

我想知道的是,是否有在数据库中查找GUID的方法。相反,如果我有一个我认为是某个表中的主键的GUID,那么在T-SQL中有没有办法要求匹配任何已知的uniqueidentifier键列?

我知道我拥有的GUID不是CustomerId,但它可能是来自其他表的另一个主键ID。到目前为止,团队一直在手动搜索其他表格以查找与流氓GUID的匹配,以查看他们是否可以找到“类型”。关键。他们甚至已经创建了大量的“select * from [table],其中[tableId] = @ rogueGUID"搜索已知实体表以进行匹配的语句。但是,这种方法效率不高。

我正在寻找这个脚本,不仅仅是为了这个项目,还因为我认为“这个GUID是否作为这个数据库中任何地方的主键值存在?”查询类型将是开发工具箱中的有用资产。任何帮助表示赞赏。

有帮助吗?

解决方案

有一个类似的问题被问到并回答了这里。希望这会有所帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top