如何产生安全的网络唯一ID?(100)

  • 主题发起人 主题发起人 友美子
  • 开始时间 开始时间

友美子

Unregistered / Unconfirmed
GUEST, unregistred user!
如何产生安全的网络唯一ID?delphi7三层数据库,一台服务器,若干客户端。我知道,客户端在上传远程服务器sql2000以后,才可以产生标识ID,唯一的自增长ID,现在,我想在未上传以前,在客户端就产生唯一的不重复ID,我的办法是根据以下参数产生ID:1、电脑里面若干数据表文件的文件修改时间的和2、记录创建时的电脑时间3、防止系统时间紊乱,在用一个随机的函数取4位随机数。
 
不怕长就用GUID(好象这么叫吧),这生成的一个字符串保证全球唯一。
 
对不起,忘说了,我好多表全部设计了16位的唯一ID,改起来应该非常麻烦
 
每台客户端唯一代码+[时间]+本客户端唯一序号
 
本客户端唯一序号是什么?怎样产生?
 
哦,我大概明白了,是在sql2000的客户端管理表中自动产生的序号。客户端唯一代码--是自定义的
 
每台客户端唯一代码+[时间]+本客户端唯一序号每台客户端唯一代码:可以用操作员代码[时间]:当前时间本客户端唯一序号:客户端程序设置一个全局变量,登陆后,该变量设置为0,每产生一个全局变量前,将其加1.
 
select Newid()用GUID阿,GUID 是唯一的二进制数;世界上的任何两台计算机都不会生成重复的 GUID 值。
 
对于数据库guid作为检索键会降低效率...最好用个纯数字一般来说,如果客户端不多,使用当前系统时间(精确到毫秒)就足够了如果还怕重复,可以考虑每次连接服务器后,先由服务器分配一个唯一编号(与当前其他连接的客户端都不同就可以),然后获取服务器时间同步机器时间本机的唯一标示就由分配的编号+机器时间组成这样就不会产生重复了....
 
后退
顶部