根据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);
        }
    }
时间: 2024-10-09 16:08:32

根据SQL Server排序规则创建顺序GUID的相关文章

SQL Server 排序规则的影响

目录 SQL Server 排序规则 影响 效果演示 更改数据库排序规则 服务器级排序规则 数据库级排序规则 列级排序规则 查询时指定规则 建议 使用 Unicode 数据类型 使用二进制排序规则 [========] SQL Server 排序规则 影响 排序规则会作用到 order.where.group 语句中. 默认中文 Windows 系统中安装的数据库使用的排序规则为:Chinese_PRC_CI_AS 选项 描述 区分大小写 (_CS) 区分大写字母和小写字母. 如果选择此项,排序

SQL Server排序规则

在使用数据库的过程中,总会碰到一些特别的需求.有时候需要储存中文字符,区分大小写或者按照中文的比划顺序排序.这就涉及到了对数据库排列规则的选择. 我们一般可以选择数据库名称-->右键属性(Properties)-->功能(optiotion)-->排序方式(Collation)选择. * 由于没有中文版的数据库,中文翻译可能有误.   那这些不同的排序方式究竟有什么区别呢? 排序规则名称由两部份构成,前半部份是指本排序规则所支持的字符集. 如: Chinese_PRC_CI_AS 前半部

sql server排序规则冲突

问题1: 解决: 数据库的排序规则不同,a表为临时表,用的是tempdb的排序规则,tempdb一般用的实例默认的排序规则. 而 b表用的是db_tank的排序规则,所以在两个表做字段匹配.计算等操作时会报错排序规则冲突. set @mdf=(SELECT dsize/1024 FROM #tf_driver a,db_tank..sysfiles b WHERE b.name='Db_Tank_Data' and a.driver COLLATE chinese_prc_ci_as =LEFT

SQL Server 排序规则

1. 查看排序规则 select serverproperty('collation'); 2. 指定列的排序规则 alter table T2 add Y nvarchar(32) collate Chinese_PRC_CI_AS; go --------------------------------------------------- Chinese  --- “体字”    “中文”     的意思.  Chinese ”汉字 prc 指 People’s republic of C

修改SQL Server 排序规则 (未能排它地锁定数据库以执行该操作)

方法一: 重启一下mssqlserver的服务再做. 方法二: use mastergoalter database DBName set single_usergoalter database DBName COLLATE Chinese_PRC_CI_AS goalter database DBName set multi_usergo 原文地址:https://www.cnblogs.com/net5x/p/12430801.html

使用SQL Server Management Studio 创建数据库备份作业

SQL Server 作业无非就是按照规定的时间执行指定的脚本,这里介绍如何用SSMS(SQL Sever 2008)创建作业备份数据库. (0)假设在创建作业之前你所要备份的数据库已经存在:其次,你已经会启动SQL Sever 代理(一般是关闭的) (1)创建SQL Server代理作业 (1.1)新建作业,输出常规信息 如上图:输入作业名称(如:BackupJobTest),这里所有者和类别都是默认的,输入说明(就跟写代码要写注释一样,利人利己) (1.2)设置作业执行步骤 点击左边“选择页

SQL Server 2008如何创建定期自动备份任务(二)_异地备份

准备: 局域网内的两台电脑.主电脑,备份电脑. 原理:通过数据库维护计划实现. 操作步骤: 一.在备份电脑和主电脑上中创建一个账户liuxh和密码123(自定义) 二.在备份电脑中创建备份用的文件夹backfile并将其共享给指定用户soft1_developer6. 如图: 1.选择用户 2.分配权限 以上上步骤是把文件夹开启共享.       其余步骤同SQL Server 2008如何创建定期自动备份任务,保存路径改成共享目录的文件夹目录.

SQL Server 排序的时候使 null 值排在最后

最近遇到一个 SQL Server 排序的问题,以前也没了解过,然后这次碰到了. 才发现 SQL Server 排序的问题,在指定的排序列中 null 值会默认排在最前面,因为在 SQL Server 中 null 值默认为最小值. 后来问了一下万能的百度,找到了下面一种比较简单的处理方法. 首先建了一个表插入了一些测试数据. create table UserInfo ( UserInfoID int not null identity(1,1) primary key, User_No in

windows + SQL Server环境,创建ArcSDE服务

ArcGIS for Server启用FeatureService需要ArcSDE和Geodatabase. 使用ArcSDE需要创建windows服务,ArcSDE只有命令行,所以只好阅读文档,找合适的命令行. 本机环境:Windows7 64bit,SQL Server 2008 R2(非Express),ArcGIS for Server 10.2,ArcSDE 10.2,ArcGIS for Desktop 10.2,已经通过ArcToolbox在SQL Server中创建了Geodat