DECLARE @sonumber BIGINT
SELECT @sonumber=CONVERT(BIGINT, @serverId + Substring(CONVERT(VARCHAR(4),
Datepart(yy, Getdate())), 4, 1) +
Substring(CONVERT(VARCHAR(10), Getdate(),12),3,6) + CONVERT(VARCHAR(100),
CAST( Rand()*(999999 -100000)+100000 AS DECIMAL( 38, 0))))
SELECT @sonumber AS id
可以用一个表去维护,当生成一个ID后再去这个表看看存不存在,如果意外的已经存在了,那再执行一下上面的方法,重新生成一个,估计再重复的几率已经很小很小了...