Изучите системную таблицу sys.foreign_key_columns
. Вот пример, который я использовал для этой воли, учитывая, что таблица говорит вам, какие из ее столбцов связаны с другой таблицей:
DECLARE @tableName VARCHAR(255)
SET @tableName = 'YourTableName'
SELECT OBJECT_NAME(fkc.constraint_object_id) AS 'FKName', OBJECT_NAME(fkc.[referenced_object_id]) AS 'FKTable', c2.[name] AS 'FKTableColumn', @tableName AS 'Table', c1.[name] AS 'TableColumn'
FROM sys.foreign_key_columns as fkc
JOIN sys.columns AS c1 ON c1.[object_id] = fkc.[parent_object_id] AND c1.[column_id] = fkc.[parent_column_id]
JOIN sys.columns AS c2 ON c2.[object_id] = fkc.[referenced_object_id] AND c2.[column_id] = fkc.[referenced_column_id]
WHERE fkc.[parent_object_id] = OBJECT_ID(@tableName)
ORDER BY OBJECT_NAME(fkc.constraint_object_id)
С помощью этого или какого-либо другого варианта вы можете узнать внешние ключи, отбросить их, выполнить свои действия, а затем заново создать внешние ключи.
Я должен добавить, что я знаю, что это работает на SQL2005 и SQL2008. Я действительно не знаю, будет ли это работать на SQL2000 / MSDE.