Hallo,
ich greife diesen alten Thread mal auf, denn genau das sollte wirklich mal angegangen werden. Das Thea kommt immer wieder bei Kunden und es sollte aus meiner technischen Sicht tatsächlich keine große technische Hürde sein. Link: https://www.docusnap.com/forum/thema/erkennung-einer-client-umbenennung-anhand-der-mac-adresse/
Aus meiner Sicht sollte (gern auch Optional als Scan-Kriterium) geprüft werden auf die eindeutigen Dinge; daraus dann das Best-match bilden während des überführens des Scans in die Datenbank. MAC-Adresse Seriennummer SID im AD/lokal
Auch bei SNMP sollte dieses berücksichtigt werden, dort anhand der MAC.
Der Weg 2 Systeme zu haben und dann zusammenzuführen ist tatsächlich oft sehr suboptimal und in großen Umgebungen einfach nicht praxisnah.
Danke an das Entwicklerteam für die Untsertützung unserer Ideen, wir alle wollen ein noch besseres Docusnap.
freilich, das kann man so machen, ich baue auch viele StoredProcedures und Trigger. Dennnoch sollte eine vom Hersteller supportete Variante der Anspuch sein ;-)
da "wir" über eine entsprechend große Umgebung verfügen, in der gerne mal z.B. Drucker unter Beibehaltung des Namens getauscht werden, ich dann aber etliche Leichen mit MAC-Adresse im Inventar habe, bin ich hier selber aktiv geworden - Anwendung auf eigenes risiko, bei mir funktioniert's aber ohne Probleme :-)
Das folgende SQL-Statement macht folgendes: Suche alle Assets mit HostTypeID=4 und MAC-Adresse im Namen Speichere die minimale und maximale HostID und den HostName (ohne MAC) in je einer Hilfstabelle JOINe die beiden Hilfstabellen kopiere die MAC-Adresse der maximalen HostID auf die minimale HostID entferne die MAC-Adresse aus dem namen der minimalen HostID lösche die maxilame HostID
Bei der ersten Anwendung sollte man prüfen ob es mehr als zwei Assets mit dem gleichen Namen gibt, dann muss man alle Assets zwischen minimaler und maximaler HostID mit gleichem Namen löschen.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- declare @Hosts_Min table(HostName nvarchar(255), HostID int) insert into @Hosts_Min select SUBSTRING(tHosts.HostName, 1, CHARINDEX(' (', tHosts.HostName)-1) as HostName, MIN(tHosts.HostID) as HostID from tHosts where tHosts.HostName=CONCAT(SUBSTRING(tHosts.HostName, 1, CHARINDEX(' (', tHosts.HostName)), '(', tHosts.MacAddress, ')') group by SUBSTRING(tHosts.HostName, 1, CHARINDEX(' (', tHosts.HostName)-1)
declare @Hosts_Max table(HostName nvarchar(255), HostID int) insert into @Hosts_Max select SUBSTRING(tHosts.HostName, 1, CHARINDEX(' (', tHosts.HostName)-1) as HostName, MAX(tHosts.HostID) as HostID from tHosts where tHosts.HostName=CONCAT(SUBSTRING(tHosts.HostName, 1, CHARINDEX(' (', tHosts.HostName)), '(', tHosts.MacAddress, ')') and tHosts.HostTypeID=4 group by SUBSTRING(tHosts.HostName, 1, CHARINDEX(' (', tHosts.HostName)-1)
declare @Hosts table(HostName nvarchar(255), HostID_Min int, HostID_Max int) insert into @Hosts select Hosts_Min.HostName, Hosts_Min.HostID, Hosts_Max.HostID from @Hosts_Min as Hosts_Min left join @Hosts_Max as Hosts_Max on Hosts_Min.HostName=Hosts_Max.HostName
update tHosts set HostName=Hosts.HostName from tHosts left join @Hosts as Hosts on tHosts.HostID=Hosts.HostID_Min where not Hosts.HostID_Min is null and Hosts.HostID_Max=Hosts.HostID_Min
update tHosts set HostName=Hosts.HostName, MacAddress=(select tHosts.MacAddress from tHosts where tHosts.HostID=Hosts.HostID_Max), MacAddressVersionX=(select tHosts.MacAddress from tHosts where tHosts.HostID=Hosts.HostID_Max) from tHosts left join @Hosts as Hosts on tHosts.HostID=Hosts.HostID_Min where not Hosts.HostID_Min is null and not Hosts.HostID_Max=Hosts.HostID_Min
delete from tHosts where tHosts.HostID in (select HostID_Max from @Hosts where not HostID_Max=HostID_Min)