select
isnull(vs.name,'** Not Assigned **') as Site
,vi.Name as [Assigned Subnet]
,dc.[Device Count]
--,vsub.Subnet
--,vsub.[Subnet Mask]
,ss.[Assignment Type]
,ss.[Site Server] as [Assigned Site Server]
,ss.[OS Name]
,ss.[IP Address]
from vSite vs -- site table
join vSiteSubnetMap sm on sm._ResourceGuid = vs.Guid -- join site/subnet map table to Site table map subnet to Site
join vSubnet vsub on vsub.Guid = sm.SubnetGuid -- join subnet table to site/subnet map table
join vItem vi on vi.Guid = vsub.Guid -- join vitem table to get cidr subnet name
-- joining Site servers to the Site table via site guid
join (
-- subquery for manually assigned Site Servers
SELECT
c1.Name [Site Server]
,c1.[OS Name]
,ra1.ChildResourceGuid [SiteGuid]
,NULL [IP Address]
,'Manually Assigned' [Assignment Type]
FROM ResourceAssociation ra1
join vComputer c1 on c1.Guid = ra1.ParentResourceGuid
WHERE ra1.ResourceAssociationTypeGuid = '5E8E3C61-A80C-4b0a-A228-DBF97607CEE4' -- Manual Computer to Site Service association
union -- join both subqueries
-- subquery for Site Server/package server mapped site by subnets
SELECT
c2.Name [Site Server]
,c2.[OS Name]
,NULL [SiteGuid]
,tcpip.[Ip Address]
,'Package Server in Site Subnet' [Assignment Type]
FROM vRM_PackageService ps
JOIN ResourceAssociation ra2 ON ps.[Guid] = ra2.ParentResourceGuid
AND ra2.ResourceAssociationTypeGuid='5F00E96B-93F3-41f0-94A7-7DBBB8AEF841' -- Site Service To Computer
JOIN Inv_AeX_AC_TCPIP tcpip ON tcpip._ResourceGuid = ra2.ChildResourceGuid
JOIN vcomputer c2 on c2.guid = tcpip._ResourceGuid -- join vcomputer table to computer name on os name
WHERE tcpip.[Subnet Mask] != '255.255.255.255' AND tcpip.[IP Address] != ''
) ss on ss.SiteGuid = vs.Guid -- join via siteServer guid
OR (dbo.fnIsIPInSubnet(ss.[IP Address], vsub.Subnet, vsub.[Subnet Mask]) = 1 -- or If Package Server IP is in site's subnet then join
AND ss.[IP Address] IS NOT NULL)
-- subquery to get device count via subnet
join (
select
i.Name [Subnet], count(*) as [Device Count]
from vComputer c
join Inv_AeX_AC_TCPIP ip on ip._ResourceGuid = c.Guid and ip.[IP Address] = c.[IP Address] and ip.[MAC Address] = c.[MAC Address]
join vSubnet sub on sub.Subnet = ip.Subnet and sub.[Subnet Mask] = ip.[Subnet Mask]
join vItem i on i.Guid = sub.Guid
group by i.Name
) dc on dc.Subnet = vi.Name
order by vs.Name
|