儘管有許多外鍵,但我們有一個傳統的SQLServer數據庫,但有很少的指定外鍵約束。有沒有辦法使用服務器日誌來識別未指定的外鍵?識別沒有約束的外鍵關係
回答
如果沒有指定外鍵約束,那麼你擁有的只是表的集合,服務器日誌不會告訴你任何東西。
您將可以從數據庫中獲得一些線索,例如外鍵可能相當明顯,即OrderDetails表上的PartID。您可能能夠檢查視圖,存儲過程和其他服務器代碼來查找JOIN,但並非所有這些都會指示FK。如果系統處於活動狀態,那麼您也可以在針對數據庫運行的查詢中使用相同的連接。
一旦你確定,你可以看到,如果所有的匹配使用全外的值加入一些像這樣的潛在FKS:
SELECT *
FROM Table_1 AS t1
LEFT OUTER JOIN Table_2 AS t2
ON t1.CandidateID = t2.CandidateID
WHERE t1.CandidateID IS NULL OR t2.t1.CandidateID IS NULL
如果表中有數據,和本不返回任何行那麼你可能有一個FK,如果它返回幾個,那麼你可能仍然有一個有幾個錯過刪除等
這基本上就是我們正在做的,分析查詢並尋找明顯的問題。我只是希望有某種工具可以自動識別它們。這當然是一個可以解決的問題,但它看起來並不像目前有一種工具可以乾淨利落。 –
你可能想看看我的http://stackoverflow.com/questions/29023514/how-can-i-get-a-list-of-all-columns-referenced-in-a-stored-procedure/30002523# 30002523並查看您是否可以在緩存的xml查詢計劃中找到連接而不是列。 –
- 1. @OneToMany關係上的外鍵約束
- 2. Rails 4關係和Postgres外鍵約束
- 3. 休眠關係外鍵約束失敗
- 4. SQL外鍵約束不允許關係
- 5. MySQL的外鍵與非識別關係
- 6. 非已識別的關係,外鍵
- 7. 參照表沒有外鍵約束
- 8. 外鍵約束
- 9. 外鍵約束
- 10. 外鍵約束
- 11. MySQL,外鍵約束沒有任何區別
- 12. 外鍵:與外鍵約束
- 13. SQLAlchemy關係沒有外鍵
- 14. 如何從名稱中識別外鍵約束?
- 15. 實體框架:0..1對多外鍵約束不被識別?
- 16. NHibernate映射和查詢表相關,但沒有外鍵約束
- 17. 識別關係的行沒有劃分
- 18. EF4外鍵與無法識別的唯一鍵的關係
- 19. CakePHP&外鍵約束
- 20. SQL約束:外鍵
- 21. MySQL外鍵約束
- 22. 與外鍵約束
- 23. 與外鍵約束
- 24. 從外鍵約束
- 25. 外鍵約束 - Pentaho
- 26. SqlAlchemy外鍵約束
- 27. mysql外鍵約束
- 28. Netezza外鍵約束
- 29. 外鍵約束5
- 30. 外鍵約束SQL
如果沒有定義約束,並假定列引用另一個表中的一列(假想的外鍵)恐怕你的運氣不好我的朋友。 –