Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 这些行ID';正在生成_Sql_Sql Server_Algorithm_Encryption - Fatal编程技术网

Sql 这些行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

我试图弄清楚主键是如何在应用程序级别生成的(ISV我没有代码库),这样我就可以在后端执行一致的插入,而不用担心dup键

按ID排序只是为了让您了解进度:

编辑 使用相应ID创建的日期

开始:

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%可行。