zoukankan      html  css  js  c++  java
  • 根据SQL Server排序规则创建顺序GUID

     public static class GuidUtil
        {
            private static readonly long EpochMilliseconds = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).Ticks / 10000L;
    
            /// <summary>
            /// Creates a sequential GUID according to SQL Server's ordering rules.
            /// </summary>
            public static Guid NewSequentialId()
            {
                // This code was not reviewed to guarantee uniqueness under most conditions, nor completely optimize for avoiding
                // page splits in SQL Server when doing inserts from multiple hosts, so do not re-use in production systems.
                var guidBytes = Guid.NewGuid().ToByteArray();
    
                // get the milliseconds since Jan 1 1970
                byte[] sequential = BitConverter.GetBytes((DateTime.Now.Ticks / 10000L) - EpochMilliseconds);
    
                // discard the 2 most significant bytes, as we only care about the milliseconds increasing, but the highest ones 
                // should be 0 for several thousand years to come (non-issue).
                if (BitConverter.IsLittleEndian)
                {
                    guidBytes[10] = sequential[5];
                    guidBytes[11] = sequential[4];
                    guidBytes[12] = sequential[3];
                    guidBytes[13] = sequential[2];
                    guidBytes[14] = sequential[1];
                    guidBytes[15] = sequential[0];
                }
                else
                {
                    Buffer.BlockCopy(sequential, 2, guidBytes, 10, 6);
                }
    
                return new Guid(guidBytes);
            }
        }
  • 相关阅读:
    mysql DCL(数据控制语句)
    sybase 脚本建表和删除表
    mysql DML(数据操纵语句)
    delphi fastmm4 调试
    delphi class of 类引用
    DELPHI SetLocaleInfo 设置本地时间
    DELPHI 去字符串中所有空格
    SUSE 11 安装MongoDB
    suse下 登录mongodb
    DELPHI 的 {$M +} 和{$M -}
  • 原文地址:https://www.cnblogs.com/mycing/p/6063775.html
Copyright © 2011-2022 走看看