Вы можете использовать вышеупомянутое с одной оговоркой:
IF EXISTS(
SELECT 1 FROM sys.foreign_keys
WHERE parent_object_id = OBJECT_ID(N'dbo.TableName')
AND name = 'CONSTRAINTNAME'
)
BEGIN
ALTER TABLE TableName DROP CONSTRAINT CONSTRAINTNAME
END
Необходимо использовать name = [Constraint name]
, поскольку в таблице может быть несколько внешних ключей, но при этом внешний ключ не проверяется на