大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
一种方式就是huyahuya09说的直接从表里按序取可用的,但是如果这么做当数据量大时可能效率会比较低,建议增加一个废号表,废号表可以同时存储名称和序号,新增数据时首先检查废号表是否有记录,有则使用,否则取原表序号最大号+1;这样应该同时也能解决问题补充的要求了
成都创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站设计制作、成都网站设计、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的朝天网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
一、序列号保存在哪
不要被ProductCode迷惑,就算只安装了SQL Server客户端,注册表里也会有这个键值,并不是序列号,DigitalProductID才是,但经过了Base24编码,需要解码才行。
可以看到,对于不同版本,注册表的路径不一样,但是键是一致的。
Express版是免费的,没有序列号,从而注册表也没DigitalProductID这个键。
二、如何解码序列号
利用Powershell 解码
以下powershell函数用于解码/找回SQL Server序列号,在SQL Server 2008, 2008 R2实例上测试通过:
SQL Server 2012序列号里字符的格式发生了变化, data.uValue)[0..16] 不同于SQL Server 2008的 data.uValue)[52..66],同时别忘了改下注册表路径$regPath = "SOFTWARE\Microsoft\Microsoft SQL Server\110\Tools\Setup",修改后如下,在SQL Server 2012实例上测试通过:
调用powershell函数并输出序列号
打开powershell,把上面的函数贴进去,回车,输入Get-SQLServerKey 并回车;
或者把上面的函数存为.ps1文件直接引用:
输出结果如下:
根据powershell 脚本翻译成的Python base24 解码函数:
sql2005及以上版本可用
CREATE TABLE test([year] VARCHAR(4),[month] VARCHAR(10))
INSERT INTO dbo.test
( year, month )
SELECT 2014,'jh10-qh'
UNION ALL
SELECT 2014,'jh10-qh1'
UNION ALL
SELECT 2014,'jh74-qh'
UNION ALL
SELECT 2013,'jh74-qh1'
UNION ALL
SELECT 2013,'jh72-qh3'
SELECT *,dense_rank() OVER(ORDER BY year DESC) id,ROW_NUMBER() OVER(PARTITION BY year ORDER BY year) id1
FROM dbo.test
ORDER BY year desc
结果:
2014 jh10-qh 1 1
2014 jh10-qh1 1 2
2014 jh74-qh 1 3
2013 jh72-qh3 2 1
2013 jh74-qh1 2 2