Да, у вас может быть несколько корней.
Нет ограничений на ядро базы данных для нескольких корней. Но, конечно, вам нужен дискриминатор при выборе. Рассмотрим следующее, которое использует «Деление» в качестве дискриминатора:
CREATE TABLE [EmployeeOrg](
[OrgNode] [hierarchyid] NOT NULL,
[OrgLevel] AS ([OrgNode].[GetLevel]()),
[EmployeeID] [int] NOT NULL,
[Title] [varchar](20) NULL,
[Division] [int] not null
) ON [PRIMARY]
GO
Insert into EmployeeOrg (OrgNode, EmployeeID, Title, Division) values ('/', 1, 'Partner A', 1 );
Insert into EmployeeOrg (OrgNode, EmployeeID, Title, Division) values ('/1/', 2, 'Part A Legal', 1 );
Insert into EmployeeOrg (OrgNode, EmployeeID, Title, Division) values ('/1/1/', 3, 'Part A Legal Asst', 1 );
Insert into EmployeeOrg (OrgNode, EmployeeID, Title, Division) values ('/', 4, 'Partner B', 2 );
Insert into EmployeeOrg (OrgNode, EmployeeID, Title, Division) values ('/1/', 5, 'Partner B Legal', 2 );
Insert into EmployeeOrg (OrgNode, EmployeeID, Title, Division) values ('/1/1/', 6, 'Partner B Legal Asst', 2 );
SELECT *
FROM EmployeeOrg
WHERE OrgNode.IsDescendantOf('/') = 1 and Division = 1
SELECT *
FROM EmployeeOrg
WHERE OrgNode.IsDescendantOf('/') = 1 and Division = 2
Возвращает две разные иерархии, как и ожидалось.