SQL Server 正在生成GUID

vnzz0bqm  于 2022-11-28  发布在  其他
关注(0)|答案(4)|浏览(128)

我正在考虑在使用SQL Server的.net应用程序中使用GUID。我应该编写一个存储过程,在输入的每个记录上生成GUID,还是应该直接从应用程序生成GUID。
问这个问题的原因(如果我错了,请纠正我):
我(认为/假定):
当从数据库生成GUID时,您可以假设DB会记住以前生成的GUID,而应用程序很难记住它。

sf6xfgos

sf6xfgos1#

SQL Server内置了创建GUID的功能。无需为此编写单独的存储过程。
您可以使用

这两个过程之间的主要区别在于,如果顺序GUID用于主聚集键,则应使用顺序GUID。
我不确定 * 为什么 * 您希望数据库引擎记住以前生成的GUID。

2jcobegt

2jcobegt2#

不,你的假设是错误的:数据库将不会记住任何内容-所以从这个Angular 看没有任何好处。
如果在SQL Server中使用GUID作为主键/群集键,这是一个糟糕的开始(请参阅hereherehere,了解为什么会出现这种情况),您应该至少使用newsequentialid()函数作为该列的默认约束。

CREATE TABLE YourTable(ColumnA uniqueidentifier DEFAULT NEWSEQUENTIALID())

这样的话,数据库会为你的PK生成伪序列的GUID,从而使使用GUID作为PK/CK的负面影响至少可以忍受......
如果不使用GUID作为主键,那么我看不出在服务器上创建GUID有什么好处。

jmo0nnb3

jmo0nnb33#

我的首选是在应用程序中创建GUID,而不是在数据库中。

  • 简化插入后对行的检索。
  • 更简单的域/业务层单元测试。
  • 更快。至少对于实体框架。Link
vaqhlq81

vaqhlq814#

RFC4122:不要假设UUID很难猜;例如,它们不应该被用作安全功能(仅仅拥有赠款访问的标识符)。
在简单任务中增量uint 64更好。
不使用GUID!如果需要安全性。
http://social.msdn.microsoft.com/Forums/en/netfxbcl/thread/b37b3438-90f4-41fb-adb9-3ddba16fe07c

相关问题