1
我目前正在處理一個項目,需要清除一些未使用的字段並對其數據庫中的表進行規範化,以使其看起來更好。 其中一個表的字段不是外鍵(但它應該),所以我不能使用sp_help以瞭解哪些表是相關的。如何列出引用SQL Server中另一個表的某一行的所有表?
我現在的任務是刪除行IdTipoEspecialidad = 3僅如果沒有使用該行(因爲我需要同時刪除)任何表。
是否有一些捷徑或查詢使得此任務更容易?
我目前正在處理一個項目,需要清除一些未使用的字段並對其數據庫中的表進行規範化,以使其看起來更好。 其中一個表的字段不是外鍵(但它應該),所以我不能使用sp_help以瞭解哪些表是相關的。如何列出引用SQL Server中另一個表的某一行的所有表?
我現在的任務是刪除行IdTipoEspecialidad = 3僅如果沒有使用該行(因爲我需要同時刪除)任何表。
是否有一些捷徑或查詢使得此任務更容易?
假設至少遵循一定的命名慣例的所有這些非外商鍵列,可以執行以下查詢:
SELECT
'SELECT * FROM [' + schemas.name + '].[' + tables.name + ']'
+ ' WHERE [' + columns.name + '] = 3'
FROM
sys.schemas
INNER JOIN sys.tables
ON schemas.schema_id = tables.schema_id
INNER JOIN sys.columns
ON tables.object_id = columns.object_id
WHERE
columns.name LIKE '%IdTipoEspecialidad%'
該查詢的輸出會給你一堆其他查詢,您可以運行以查看是否有任何列引用該特定行。
優秀的答案!謝謝,它會幫助我很多。在前兩個查詢中,我找到了使用此特定ID的所有表。 – 2014-09-01 15:04:52