DS 7.1 Computers are not recognized by PXE when switching to an inactive device

Article:TECH202638  |  Created: 2013-02-09  |  Updated: 2013-02-15  |  Article URL http://www.symantec.com/docs/TECH202638
Article Type
Technical Solution


Issue



Sometimes, when you connect to PXE with a computer, it will be treated as "unknown" by the PXE server even though the computer is actually "known" in the console.  Upon further inspection of the SBS files, the MAC address of the system is missing. 

There are other related symptoms to this.  A reboot-to task may fail to be sent for the system for example.


Cause



There are two TCPIP tables in the database, one for IPv4 information, and one for IPv6 information.  "Inactive" devices do not get an IPv4 address and are not inventoried and thus the IPv4 table is not populated with the MAC address (or anything else) for that card.  However, the card IS recorded in the IPv6 table (not sure why/how).  Unfortunately, when we populate the SBS files, we ONLY query the IPv4 table, so any NIC in the v6 table and NOT in the v4 table is missed, and thus treated as unknown.


Solution



3 Stored Procedures needed to be modified to query both tables with a UNION to join the data from both and ensure no information was lost.  The SQL required to modify these are included here below.  Cut and paste each of them directly into SQL on the database server while attached to the CMDB database.  If you attempt to run them all at the same time it will not work.

=============== Query 1 ==================

Alter PROCEDURE spDeployment_GetClientInfo
@ResourceGuid uniqueidentifier

AS
BEGIN
SET NOCOUNT ON;

SELECT c.[Unique ID], a.[MAC Address]
FROM Inv_AeX_AC_Identification AS c INNER JOIN Inv_AeX_AC_TCPIP AS a ON a._ResourceGuid = c._ResourceGuid AND c._ResourceGuid = @ResourceGuid
union
SELECT c.[Unique ID], a.[MAC Address]
FROM Inv_AeX_AC_Identification AS c INNER JOIN Inv_AeX_AC_TCPIPv6 AS a ON a._ResourceGuid = c._ResourceGuid AND c._ResourceGuid = @ResourceGuid
where LEN([MAC Address]) <= 17
END


=============== Query 2 ==================

Alter PROCEDURE spGetPXEClientInfo
@TSResourceGuid uniqueidentifier
AS
select Inv_AeX_AC_TCPIPv6.[MAC Address] as mac, Inv_AeX_AC_Identification.[Unique ID] as uuid, Inv_AeX_AC_Identification.[Hardware Serial Number] as serial
from Inv_AeX_AC_TCPIPv6 INNER JOIN Inv_AeX_AC_Identification on Inv_AeX_AC_TCPIPv6.[_ResourceGuid] = Inv_AeX_AC_Identification.[_ResourceGuid]
where LEN([MAC Address]) <= 17
union
select Inv_AeX_AC_TCPIP.[MAC Address] as mac, Inv_AeX_AC_Identification.[Unique ID] as uuid, Inv_AeX_AC_Identification.[Hardware Serial Number] as serial
from Inv_AeX_AC_TCPIP INNER JOIN Inv_AeX_AC_Identification on Inv_AeX_AC_TCPIP.[_ResourceGuid] = Inv_AeX_AC_Identification.[_ResourceGuid]
where Inv_AeX_AC_TCPIP.[Subnet] = (select TOP 1 Subnet from Inv_AeX_AC_TCPIP where _ResourceGuid = (select _ResourceGuid from Inv_Client_Task_Servers Where ClientTaskServerGuid = @TSResourceGuid))


=============== Query 3 ==================

Alter PROCEDURE [dbo].spDeployment_GetClientInformation
@resourceGuids ntext

AS
BEGIN
SET NOCOUNT ON;

-- Populate the temporary table with the computet guids.
DECLARE @computerGuids TABLE ( [Guid] uniqueidentifier PRIMARY KEY )
INSERT INTO @computerGuids ( [Guid] )
SELECT ui FROM fnListToTableUniqueIdentifier( @resourceGuids, DEFAULT )
SELECT c.[Unique ID], a.[MAC Address]
FROM Inv_AeX_AC_Identification AS c INNER JOIN Inv_AeX_AC_TCPIP AS a ON a._ResourceGuid = c._ResourceGuid JOIN @computerGuids cg ON c._ResourceGuid = cg.[Guid]
union
SELECT c.[Unique ID], a.[MAC Address]
FROM Inv_AeX_AC_Identification AS c INNER JOIN Inv_AeX_AC_TCPIPv6 AS a ON a._ResourceGuid = c._ResourceGuid JOIN @computerGuids cg ON c._ResourceGuid = cg.[Guid]
where LEN([MAC Address]) <= 17
END
 

 




Article URL http://www.symantec.com/docs/TECH202638


Terms of use for this information are found in Legal Notices