Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7602929
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 30, 20262026-05-30T23:32:18+00:00 2026-05-30T23:32:18+00:00

I hope someone can answer this question. How does the UuidCreateSequential method in the

  • 0

I hope someone can answer this question.

How does the UuidCreateSequential method in the rpcrt4.dll class use to seed it’s guids?

I know this much:
Microsoft changed the UuidCreate function so it no longer uses the machine’s MAC address as part of the UUID. Since CoCreateGuid calls UuidCreate to get its GUID, its output also changed. If you still like the GUIDs to be generated in sequential order (helpful for keeping a related group of GUIDs together in the system registry), you can use the UuidCreateSequential function.

The reason behind the question is. If I use this function to generate sequential GUIDs in a web cluster, how can I ensure that the GUIDs are close to a range of GUIDs without the potential of the GUID being duplicated?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-30T23:32:20+00:00Added an answer on May 30, 2026 at 11:32 pm

    The Win32 UuidCreateSequential creates a Version 1 uuid.

    Here’s some sample version 1 uuid’s created on my computer using UuidCreateSequential:

    GuidToString                            Raw bytes
    ======================================  =================================================
    {1BE8D85D-63D1-11E1-80DB-B8AC6FBE26E1}  1B E8 D8 5D 63 D1 11 E1  80 DB  B8 AC 6F BE 26 E1
    {1BE8D85E-63D1-11E1-80DB-B8AC6FBE26E1}  1B E8 D8 5E 63 D1 11 E1  80 DB  B8 AC 6F BE 26 E1
    {1BE8D85F-63D1-11E1-80DB-B8AC6FBE26E1}  1B E8 D8 5F 63 D1 11 E1  80 DB  B8 AC 6F BE 26 E1
    {1BE8D860-63D1-11E1-80DB-B8AC6FBE26E1}  1B E8 D8 60 63 D1 11 E1  80 DB  B8 AC 6F BE 26 E1
    {1BE8D861-63D1-11E1-80DB-B8AC6FBE26E1}  1B E8 D8 61 63 D1 11 E1  80 DB  B8 AC 6F BE 26 E1
    {1BE8D862-63D1-11E1-80DB-B8AC6FBE26E1}  1B E8 D8 62 63 D1 11 E1  80 DB  B8 AC 6F BE 26 E1
    {1BE8D863-63D1-11E1-80DB-B8AC6FBE26E1}  1B E8 D8 63 63 D1 11 E1  80 DB  B8 AC 6F BE 26 E1
    {1BE8D864-63D1-11E1-80DB-B8AC6FBE26E1}  1B E8 D8 64 63 D1 11 E1  80 DB  B8 AC 6F BE 26 E1
    {1BE8D865-63D1-11E1-80DB-B8AC6FBE26E1}  1B E8 D8 65 63 D1 11 E1  80 DB  B8 AC 6F BE 26 E1
    {220FB46C-63D1-11E1-80DB-B8AC6FBE26E1}  22 0F B4 6C 63 D1 11 E1  80 DB  B8 AC 6F BE 26 E1
    

    The first thing that’s important to note that these uuid contain my machine’s MAC address (B8AC6FBE26E1):

    enter image description here

                            Node
    ======================= ============
    1BE8D85D-63D1-11E1-80DB B8AC6FBE26E1
    1BE8D85E-63D1-11E1-80DB B8AC6FBE26E1
    1BE8D85F-63D1-11E1-80DB B8AC6FBE26E1
    1BE8D860-63D1-11E1-80DB B8AC6FBE26E1
    1BE8D861-63D1-11E1-80DB B8AC6FBE26E1
    1BE8D862-63D1-11E1-80DB B8AC6FBE26E1
    1BE8D863-63D1-11E1-80DB B8AC6FBE26E1
    1BE8D864-63D1-11E1-80DB B8AC6FBE26E1
    1BE8D865-63D1-11E1-80DB B8AC6FBE26E1
    220FB46C-63D1-11E1-80DB B8AC6FBE26E1
    

    So if you’re hoping for different computers to generate guid’s that are "close" to each other, you’re going to be disappointed.

    Let’s look at the rest of the values.

    Seven and a half bytes of the remaining 10 bytes are a timestamp; the number of 100ns intervals since 00:00:00 15 October 1582. Rearranging those timestamp bytes together:

    Timestamp              Node
    =============== ====== ============
    1E163D11BE8D85D 1-80DB B8AC6FBE26E1
    1E163D11BE8D85E 1-80DB B8AC6FBE26E1
    1E163D11BE8D85F 1-80DB B8AC6FBE26E1
    1E163D11BE8D860 1-80DB B8AC6FBE26E1
    1E163D11BE8D861 1-80DB B8AC6FBE26E1
    1E163D11BE8D862 1-80DB B8AC6FBE26E1
    1E163D11BE8D863 1-80DB B8AC6FBE26E1
    1E163D11BE8D864 1-80DB B8AC6FBE26E1
    1E163D11BE8D865 1-80DB B8AC6FBE26E1
    1E163D1220FB46C 1-80DB B8AC6FBE26E1
    

    You can see that guid’s created on the same machine by UuidCreateSequential will be together, as they are chronological.


    The 1 you see is the version number, in this case meaning a time based uuid. There are 5 defined versions:

    • 1: time based version (UuidCreateSequential)
    • 2: DCE Security version, with embedded POSIX UIDs
    • 3: Name-based version that uses MD5 hashing
    • 4: Randomly or pseudo-randomly generated version (UuidCreate)
    • 5: Name-based version that uses SHA-1 hashing
    • 6: The version RFC 4122 forgot (unofficial)

    Giving:

    Timestamp       Version      Node
    =============== ======= ==== ============
    1E163D11BE8D85D 1       80DB B8AC6FBE26E1
    1E163D11BE8D85E 1       80DB B8AC6FBE26E1
    1E163D11BE8D85F 1       80DB B8AC6FBE26E1
    1E163D11BE8D860 1       80DB B8AC6FBE26E1
    1E163D11BE8D861 1       80DB B8AC6FBE26E1
    1E163D11BE8D862 1       80DB B8AC6FBE26E1
    1E163D11BE8D863 1       80DB B8AC6FBE26E1
    1E163D11BE8D864 1       80DB B8AC6FBE26E1
    1E163D11BE8D865 1       80DB B8AC6FBE26E1
    1E163D1220FB46C 1       80DB B8AC6FBE26E1
    

    The last word contains two things.

    The lower 12 bits is the machine-specifc Clock Sequence number:

    Timestamp       Version   Clock Sequence   Node
    =============== ======= = ================ ============
    1E163D11BE8D85D 1       8 0DB              B8AC6FBE26E1
    1E163D11BE8D85E 1       8 0DB              B8AC6FBE26E1
    1E163D11BE8D85F 1       8 0DB              B8AC6FBE26E1
    1E163D11BE8D860 1       8 0DB              B8AC6FBE26E1
    1E163D11BE8D861 1       8 0DB              B8AC6FBE26E1
    1E163D11BE8D862 1       8 0DB              B8AC6FBE26E1
    1E163D11BE8D863 1       8 0DB              B8AC6FBE26E1
    1E163D11BE8D864 1       8 0DB              B8AC6FBE26E1
    1E163D11BE8D865 1       8 0DB              B8AC6FBE26E1
    1E163D1220FB46C 1       8 0DB              B8AC6FBE26E1
    

    This machine-wide persistent value is incremented if:

    • you switched network cards
    • you generated a UUID less than 100 ns from the last one (and the timestamp would collide)

    So, again, any guid’s created by UuidCreateSequential will (ideally) have the same Clock Sequence number, making them "near" to each other.

    The final 2 bits, is called a Variant, and is always set to binary 10:

    Timestamp       Version Variant Clock Sequence   Node
    =============== ======= ======= ================ ============
    1E163D11BE8D85D 1       8       0DB              B8AC6FBE26E1
    1E163D11BE8D85E 1       8       0DB              B8AC6FBE26E1
    1E163D11BE8D85F 1       8       0DB              B8AC6FBE26E1
    1E163D11BE8D860 1       8       0DB              B8AC6FBE26E1
    1E163D11BE8D861 1       8       0DB              B8AC6FBE26E1
    1E163D11BE8D862 1       8       0DB              B8AC6FBE26E1
    1E163D11BE8D863 1       8       0DB              B8AC6FBE26E1
    1E163D11BE8D864 1       8       0DB              B8AC6FBE26E1
    1E163D11BE8D865 1       8       0DB              B8AC6FBE26E1
    1E163D1220FB46C 1       8       0DB              B8AC6FBE26E1
    

    So there you have it. Sequential guid’s are sequential; and if you create them on the same machine they will be "near" to each other in a database.


    But you want to know what actually happens with two sequential UUID’s created on different computers.

    Using our newfound knowledge of Version 1 guids, let’s construct two guid’s for the same timestamp from different machines, e.g.:

    {1BE8D85D-63D1-11E1-80DB-B8AC6FBE26E1}
    {1BE8D85D-63D1-11E1-80DB-123456789ABC}
    

    First let’s insert a bunch of guid’s with sequential timestamps. First create a temporary table to store our guid’s in, and cluster by the guid:

    --DROP table #uuidOrderingTest
    CREATE TABLE #uuidOrderingTest
    ( 
        uuid uniqueidentifier not null
    )
    
    CREATE clustered index IX_uuidorderingTest_uuid ON #uuidOrderingTest 
    ( 
       uuid
    )
    

    Now insert the data:

    INSERT INTO #uuidOrderingTest (uuid) VALUES ('{1BE8D866-63D1-11E1-80DB-B8AC6FBE26E1}')
    INSERT INTO #uuidOrderingTest (uuid) VALUES ('{1BE8D862-63D1-11E1-80DB-B8AC6FBE26E1}')
    INSERT INTO #uuidOrderingTest (uuid) VALUES ('{1BE8D861-63D1-11E1-80DB-B8AC6FBE26E1}')
    INSERT INTO #uuidOrderingTest (uuid) VALUES ('{1BE8D85E-63D1-11E1-80DB-B8AC6FBE26E1}')
    INSERT INTO #uuidOrderingTest (uuid) VALUES ('{1BE8D864-63D1-11E1-80DB-B8AC6FBE26E1}')
    INSERT INTO #uuidOrderingTest (uuid) VALUES ('{1BE8D863-63D1-11E1-80DB-B8AC6FBE26E1}')
    INSERT INTO #uuidOrderingTest (uuid) VALUES ('{1BE8D85F-63D1-11E1-80DB-B8AC6FBE26E1}')
    INSERT INTO #uuidOrderingTest (uuid) VALUES ('{1BE8D85D-63D1-11E1-80DB-B8AC6FBE26E1}')
    INSERT INTO #uuidOrderingTest (uuid) VALUES ('{1BE8D865-63D1-11E1-80DB-B8AC6FBE26E1}')
    INSERT INTO #uuidOrderingTest (uuid) VALUES ('{1BE8D860-63D1-11E1-80DB-B8AC6FBE26E1}')
    

    Note: i insert them in random timestamp order, to illustrate that SQL Server will cluster them.

    Get the rows back and see what order they’re in sequential (timestamp) order:

    SELECT * FROM #uuidOrderingTest
    
    uuid
    ------------------------------------
    1BE8D85D-63D1-11E1-80DB-B8AC6FBE26E1
    1BE8D85E-63D1-11E1-80DB-B8AC6FBE26E1
    1BE8D85F-63D1-11E1-80DB-B8AC6FBE26E1
    1BE8D860-63D1-11E1-80DB-B8AC6FBE26E1
    1BE8D861-63D1-11E1-80DB-B8AC6FBE26E1
    1BE8D862-63D1-11E1-80DB-B8AC6FBE26E1
    1BE8D863-63D1-11E1-80DB-B8AC6FBE26E1
    1BE8D864-63D1-11E1-80DB-B8AC6FBE26E1
    1BE8D865-63D1-11E1-80DB-B8AC6FBE26E1
    1BE8D866-63D1-11E1-80DB-B8AC6FBE26E1
    

    Now lets insert guid’s with:

    • the same timestamps
    • but different node (i.e. MAC address):

    Insert the new guids from a "different" computer:

    INSERT INTO #uuidOrderingTest (uuid) VALUES ('{1BE8D866-63D1-11E1-80DB-123456789ABC}')
    INSERT INTO #uuidOrderingTest (uuid) VALUES ('{1BE8D862-63D1-11E1-80DB-123456789ABC}')
    INSERT INTO #uuidOrderingTest (uuid) VALUES ('{1BE8D861-63D1-11E1-80DB-123456789ABC}')
    INSERT INTO #uuidOrderingTest (uuid) VALUES ('{1BE8D85E-63D1-11E1-80DB-123456789ABC}')
    INSERT INTO #uuidOrderingTest (uuid) VALUES ('{1BE8D864-63D1-11E1-80DB-123456789ABC}')
    INSERT INTO #uuidOrderingTest (uuid) VALUES ('{1BE8D863-63D1-11E1-80DB-123456789ABC}')
    INSERT INTO #uuidOrderingTest (uuid) VALUES ('{1BE8D85F-63D1-11E1-80DB-123456789ABC}')
    INSERT INTO #uuidOrderingTest (uuid) VALUES ('{1BE8D85D-63D1-11E1-80DB-123456789ABC}')
    INSERT INTO #uuidOrderingTest (uuid) VALUES ('{1BE8D865-63D1-11E1-80DB-123456789ABC}')
    INSERT INTO #uuidOrderingTest (uuid) VALUES ('{1BE8D860-63D1-11E1-80DB-123456789ABC}')
    

    And get the results:

    uuid
    ------------------------------------
    1BE8D85D-63D1-11E1-80DB-123456789ABC
    1BE8D85E-63D1-11E1-80DB-123456789ABC
    1BE8D85F-63D1-11E1-80DB-123456789ABC
    1BE8D860-63D1-11E1-80DB-123456789ABC
    1BE8D861-63D1-11E1-80DB-123456789ABC
    1BE8D862-63D1-11E1-80DB-123456789ABC
    1BE8D863-63D1-11E1-80DB-123456789ABC
    1BE8D864-63D1-11E1-80DB-123456789ABC
    1BE8D865-63D1-11E1-80DB-123456789ABC
    1BE8D866-63D1-11E1-80DB-123456789ABC
    1BE8D85D-63D1-11E1-80DB-B8AC6FBE26E1
    1BE8D85E-63D1-11E1-80DB-B8AC6FBE26E1
    1BE8D85F-63D1-11E1-80DB-B8AC6FBE26E1
    1BE8D860-63D1-11E1-80DB-B8AC6FBE26E1
    1BE8D861-63D1-11E1-80DB-B8AC6FBE26E1
    1BE8D862-63D1-11E1-80DB-B8AC6FBE26E1
    1BE8D863-63D1-11E1-80DB-B8AC6FBE26E1
    1BE8D864-63D1-11E1-80DB-B8AC6FBE26E1
    1BE8D865-63D1-11E1-80DB-B8AC6FBE26E1
    1BE8D866-63D1-11E1-80DB-B8AC6FBE26E1
    

    So there you have it. SQL Server order’s Node before Timestamp. Uuid created from different machines will not be clustered together. Would have been better if it hadn’t done so, but whatcha gonna do.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I've searched far and wide and I hope someone can answer this question. I'm
I hope someone can help me with this, as I'm unable to find the
I've search for some clues on this problem without much success. Hope someone can
I'm staring blank on this error, so I hope someone here can point out
Hope someone can help with this. I've been up and down the web and
Hi guys I hope someone can help me with this I´m really stuck although
I haven't been able to find a definitive answer and I hope someone can
hope someone can help. I have two tables: Users -UserID -UserName UsersType -UserTypeID -UserID
I hope someone can guide me as I'm stuck... I need to write an
I hope someone can help here, we're having an incredibly annoying time with Visual

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.