Sql 这些行ID';正在生成
我试图弄清楚主键是如何在应用程序级别生成的(ISV我没有代码库),这样我就可以在后端执行一致的插入,而不用担心dup键 按ID排序只是为了让您了解进度: 编辑 使用相应ID创建的日期 开始:Sql 这些行ID';正在生成,sql,sql-server,algorithm,encryption,Sql,Sql Server,Algorithm,Encryption,我试图弄清楚主键是如何在应用程序级别生成的(ISV我没有代码库),这样我就可以在后端执行一致的插入,而不用担心dup键 按ID排序只是为了让您了解进度: 编辑 使用相应ID创建的日期 开始: date sysid c_time 02/10/2009 A00029BC75ECF751 1835010 02/10/2009 A00059BC76712863 1835013 02/10/2009 A00069BC7BF6F327 183
date sysid c_time
02/10/2009 A00029BC75ECF751 1835010
02/10/2009 A00059BC76712863 1835013
02/10/2009 A00069BC7BF6F327 1835014
08/14/2013 A0006A235AF21680 5841653
02/10/2009 A00099BC76D57865 1835017
07/06/2009 A000A9C590BDF134 4000288
02/10/2009 A000B9BC73594306 1835019
08/19/2009 A000D9C857013579 4795995
02/10/2009 A000E9BC7222D209 1835022
04/08/2009 A000E9C0007D0727 4810168
结束
date sysid c_time
10/06/2010 AFFFA9E2205D9752 5919265
01/29/2013 AFFFCA1706413272 3420395
02/10/2009 AFFFD9BC75264250 1835005
07/13/2009 AFFFD9C60B25C732 4402146
11/09/2012 AFFFDA11FBC8C706 5908518
07/17/2009 AFFFE9C64E1EB645 540642
09/30/2010 AFFFE9E1C7021704 3264751
02/10/2009 AFFFF9BC755DE457 1835008
我想这是datetime上的某种算法,前缀是A
有人有什么想法吗
我正在试图弄清楚主键是如何生成的。。。因此,我可以在后端执行一致的插入,而不用担心dup键
没有算法或源代码是不可能的,但是时间戳似乎是合理的,因为顺序ID之间的数字差异在顶部和底部集合之间是相同数量级的
因为它们看起来像64位十六进制数,所以可以在“最高”数上加1。但是,不能保证第三方应用程序也会检查重复项-它可能会插入一个与您输入的值冲突的值
假设它们的插入是连续的(并且您的插入不需要是连续的),您可以从ffffffffffffff
开始向后工作
<> P>还有一些你需要考虑的变量是前3/4位(1010=A)标志吗?在第二位插入一个1的值会有什么害处吗?这些问题都不能通过查看生成的ID来回答
不过,您尝试的任何内容都应该通过ISV进行验证。SQL只是结构化查询语言—许多数据库系统都使用这种语言,但不是数据库产品。。。很多事情都是特定于供应商的-因此我们确实需要知道您使用的是什么数据库系统(以及哪个版本)(请相应地更新标记)…我100%肯定该ID不是在数据库级别生成的(我阅读了所有存储的过程、函数等…)。如果它确实起作用,则MS-SQL作为varchar(16)字段。您想知道生成此id的方法还是生成此类id的任何方法?您是否有(或可以获得)每个记录id的创建日期?被视为Windows刻度值(100纳秒增量),这些值(如果您屏蔽
0xA0
部分)覆盖的跨度约为59年。你知道新密钥是否总是比以前的任何密钥都大吗?我怀疑这是在生成顺序ID,然后混淆它们。就像YouTube用他们的视频ID做的一样。有几种方法可以做到这一点。Eric Lippert展示了如何使用。另一种可能性是,他们正在使用异或和移位技术。有关示例,请参见。只要您有足够的时间,任何一个都可以进行反向工程。64位十六进制数,而不是128。@DStanley不幸的是,第三方供应商对业务所占的应用程序规模毫无用处。而且该公司在该平台上的投资足够多,以至于他们不想转向定制的应用程序。但是我需要找出一些可行的方法solution@Jim-你说得对-我是在数字符,而不是字节。@bumble\u bee\u tuna在不知道应用程序的约束条件的情况下,没有任何解决方案可以保证100%可行。