Для этого может быть несколько причин.Прежде всего, вы присоединяетесь к types
по неправильному условию - вы должны использовать user_type_id
вместо system_type_id
с обеих сторон.Последний дает вам базовый встроенный тип, который использовался в качестве основы для определенного пользователем.Посмотрите этот запрос, например:
select * from sys.types t where t.user_type_id != t.system_type_id;
Другая возможная вещь - таблица имеет разреженный набор столбцов, но я могу ошибаться.
И, конечно, убедитесь, что вына самом деле запрашивают информацию о правильной таблице - всегда включайте квалификатор имени схемы вместе с именем объекта, например:
WHERE object_id=object_id('dbo.SOPOrders')
Невыполнение этого требования не приведет к дублированию, которое вы наблюдаете, но следите за нимсэкономит вам много времени, пытаясь выяснить причину периодических несоответствий, когда у вас будут объекты с одинаковыми именами в разных схемах.