Grundsätzlich sind sie nicht möglich! sind die Chancen astronomisch gering .
Aber ... ich bin die einzige Person auf der Welt, die ich kenne und die einmal eine GUID-Kollision hatte (yep!).
Und ich bin mir sicher, dass es kein Fehler war.
Wie kam es, dass in einer kleinen Anwendung, die auf einem Pocket PC ausgeführt wurde, am Ende eines Vorgangs ein Befehl mit einer generierten GUID ausgegeben werden muss? Der Befehl wurde nach seiner Ausführung auf dem Server zusammen mit dem Ausführungsdatum in einer Befehlstabelle auf dem Server gespeichert. Eines Tages, als ich debuggte, gab ich den Modulbefehl aus (mit der neu generierten GUID) und nichts passierte. Ich habe es erneut getan (mit derselben Guid, da die Guid zu Beginn der Operation nur einmal generiert wurde) und erneut und nichts, um schließlich herauszufinden, warum der Befehl nicht ausgeführt wird, habe ich die Befehlstabelle überprüft. und die gleiche GUID wie die aktuelle wurde vor 3 Wochen eingefügt. Da ich das nicht glaubte, stellte ich eine Datenbank aus einer zweiwöchigen Sicherung wieder her, und die Anleitung war da. Überprüfte den Code, der neue Guid wurde ohne Zweifel frisch generiert.
Bearbeiten: Es gibt einige Faktoren, die die Wahrscheinlichkeit, dass dies geschieht, erheblich erhöht haben könnten. Die Anwendung wurde auf dem PocketPC-Emulator ausgeführt, und der Emulator verfügt über eine Funktion zum Speichern des Status. Dies bedeutet, dass bei jeder Wiederherstellung des Status auch die Ortszeit wiederhergestellt wird und die Guid basiert auf dem internen Timer .... auch der Guid-Generierungsalgorithmus für ein kompaktes Framework ist möglicherweise weniger vollständig als zum Beispiel der COM-Algorithmus ...