Zasadniczo nie są one możliwe! , szanse są astronomicznie niskie .
Ale ... Jestem jedyną osobą na świecie, którą znam, która kiedyś miała kolizję GUID (tak!).
Jestem tego pewien i że to nie był błąd.
Jak to się stało, że w małej aplikacji działającej na Pocket PC pod koniec operacji należy wydać polecenie, które ma wygenerowany identyfikator GUID. Polecenie po wykonaniu na serwerze było przechowywane w tabeli poleceń na serwerze wraz z datą wykonania. Pewnego dnia, kiedy debugowałem, wydałem polecenie modułu (z dołączonym nowo wygenerowanym identyfikatorem GUID) i nic się nie stało. Zrobiłem to ponownie (z tym samym guid, bo guid był generowany tylko raz na początku operacji) i znowu i nic, w końcu próbując dowiedzieć się, dlaczego polecenie się nie wykonuje, sprawdziłem tabelę poleceń, i ten sam identyfikator GUID, co obecny, został wstawiony 3 tygodnie temu. Nie wierząc w to, przywróciłem bazę danych z kopii zapasowej z 2 tygodni, a guid tam był. Sprawdziłem kod, nowy guid został świeżo wygenerowany, nie ma co do tego wątpliwości.
Edycja: istnieje kilka czynników, które mogły znacznie zwiększyć szansę na to, aplikacja działała na emulatorze PocketPC, a emulator ma funkcję zapisywania stanu, co oznacza, że za każdym razem, gdy przywracany jest stan, przywracany jest również czas lokalny a guid jest oparty na wewnętrznym zegarze ... również algorytm generowania guidów dla kompaktowej struktury może być mniej kompletny niż na przykład COM ...