有关使用NEWID()获取API密钥的任何问题?

时间:2010-10-22 20:12:10

标签: sql-server tsql newid

我正在开发一个小块,它将使用SQL Sever的NEWID()生成API密钥。该密钥将用于访问我们的Web应用程序的某些部分,并将通过URL传递。在创建新的API使用者时(在存储过程中)生成密钥。关键是每个消费者都是独一无二的。虽然预计消费者的初始数量相对较低,但随着时间的推移,消费者的数量会增长,但频率相对较低。

一些限制因素是:

  • 必须在插入级别生成密钥
  • 每个消费者必须是唯一的
  • 表现一如既往,很重要


这种方法有任何问题 - 安全性,性能还是其他?有没有更好的方法来实现相同的结果?

2 个答案:

答案 0 :(得分:1)

这应该没有问题。 NEWID()生成的GUID保证在您的系统中是唯一的。

你不应该使用NEWSEQUENTIALID(),因为它很容易猜到,如here所述,但是在NEWID()的文档中没有给出警告,所以我认为它没有相同的问题。这意味着不应该存在安全问题。

至于性能,初始生成密钥可能需要比其他一些方法更长的时间,但保证的唯一性弥补了它。如果索引列,查找也应该很快。

答案 1 :(得分:0)

我没有遇到任何问题。 INSERT是一项相对昂贵的操作,NEWID()的开销相对较小。