2009-09-10 71 views
0

我目前正在進行發生一些(重大)數據損壞的項目。具體來說,數據庫在大多數表上使用GUID作爲主鍵,但是它並沒有強化這些表之間的數據完整性(由於冗長的「這是從另一家公司購買並與我們的東西集成在一起討論」)。目前正在努力引入參照完整性,但在可能之前必須清理數據。在數據庫中查找GUID

此數據損壞的一部分是不同的實體鍵已被切換或插入到不正確的列中。例如,由於軟件在錯誤的列中插入了錯誤的密鑰,因此「CustomerId」字段中存在有效的「ProductId」值。在問題最終被捕獲之前(在數據聚合工作期間),這在數據庫中發生了數月,現在清理工作量相當大。

我想知道的是,如果有一種在數據庫中查找GUID的方法。相反,如果我有一個GUID,我認爲它是某個表中的主鍵,那麼T-SQL中有沒有一種方法可以向任何已知的uniqueidentifier鍵列尋求匹配?

我知道GUID我不是一個CustomerId,但它可能是來自其他表的另一個主鍵ID。到目前爲止,團隊一直在手動搜索其他表以匹配流氓GUID,以查看他們是否可以找出密鑰的「類型」。他們甚至已經創建了大量的「select * from [table]」腳本,其中[tableId] = @rogueGUID「語句在搜索已知實體表中進行匹配。但是,這種方法效率不高。

我在尋找這個腳本,不僅是爲了這個項目,而且是因爲我想「這個GUID作爲這個數據庫中任何地方的主鍵值存在嗎?」查詢類型將成爲開發工具箱中的有用資產。任何幫助表示讚賞。

+0

認真,我的哀悼... – 2009-09-10 22:24:53

+0

謝謝。這將是一條漫長的道路,但是當我們走到盡頭時,對這支球隊來說是非常有益的。 – 2009-09-10 22:49:18

+0

可能重複的[SQL Server:搜索特定GUID的所有表](http://stackoverflow.com/questions/970477/sql-server-search-all-tables-for-a-particular-guid) – Aaroninus 2015-01-29 14:57:52

回答

1

對此提出了類似的問題,並回答了here。希望這會有所幫助。

+1

Pete, 謝謝。我搜索了一個類似的問題,但沒有找到它(儘管事實上你鏈接的那個似乎很容易找到)。我很欣賞快速回答。這有助於很多! – 2009-09-10 22:27:49

+0

不用客氣斯圖爾特。我很高興能夠提供幫助。 – 2009-09-11 07:27:12