我正在使用SQL Server 2000中的一个数据库,该数据库为每个使用它所绑定的应用程序的用户使用GUID.不知何故,两个用户最终得到了相同的GUID.我知道微软使用一种算法来生成一个随机GUID,这个GUID极有可能导致碰撞,但是碰撞仍然可能吗?
我们有一个日志表,其中有一个消息列,有时会有一个异常堆栈跟踪.我有一些标准来确定消息是否具有此功能.我们不希望向客户显示这些消息,而是发出如下消息:
内部错误发生.请与我们联系,参考代码为xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
其中xxx等是表中的guid列.我正在写这样的存储过程:
declare @exceptionCriteria nvarchar(50)
select @exceptionCriteria = '%<enter criteria etc>%'
select LogDate,
case
when Message like @exceptionCriteria
then 'Internal Error Occured. Reference Code: ' + str(RequestID)
else Message
end
from UpdateQueue
Run Code Online (Sandbox Code Playgroud)
RequestID是SQL Server中的Guid数据类型,在此处不转换为字符串.我已经看到了一些关于如何将Guid转换为字符串的代码,但它是多行的,我不认为它会在case语句中起作用.有任何想法吗?
我知道冲突的可能性很小,但是如果我生成了一批1000个GUID(例如),那么可以安全地假设它们都是唯一保存测试的吗?
奖金问题
测试GUID唯一性的最佳方法是什么?布隆过滤器可能吗?
在我们的应用程序中,我们使用具有Guid值的属性创建Xml文件.该值必须在文件升级之间保持一致.因此,即使文件中的其他内容发生更改,该属性的guid值也应保持不变.
一个显而易见的解决方案是创建一个静态字典,其中包含文件名和用于它们的Guids.然后每当我们生成文件时,我们都会在字典中查找文件名并使用相应的guid.但这不可行,因为我们可能会扩展到100个文件并且不想保留大量的guid.
所以另一种方法是根据文件的路径使Guid相同.由于我们的文件路径和应用程序目录结构是唯一的,因此Guid对于该路径应该是唯一的.因此,每次我们运行升级时,文件都会根据其路径获得相同的guid.我找到了一种很酷的方法来产生这样的' 确定性指导 '(感谢Elton Stoneman).它基本上是这样的:
private Guid GetDeterministicGuid(string input)
{
//use MD5 hash to get a 16-byte hash of the string:
MD5CryptoServiceProvider provider = new MD5CryptoServiceProvider();
byte[] inputBytes = Encoding.Default.GetBytes(input);
byte[] hashBytes = provider.ComputeHash(inputBytes);
//generate a guid from the hash:
Guid hashGuid = new Guid(hashBytes);
return hashGuid;
}
Run Code Online (Sandbox Code Playgroud)
所以给定一个字符串,Guid将始终是相同的.
有没有其他方法或建议的方法来做到这一点?该方法的优点或缺点是什么?
任何人都能告诉我是否有相当于SCOPE_IDENTITY()在SQL Server中使用GUID作为主键的时候?
我不想先创建GUID并保存为变量,因为我们使用顺序GUID作为主键.
有什么最好的方法来检索最后插入的GUID主键吗?
php会话ID有多独特?我从各种各样的事情中得到了印象,我不应该依赖两个用户永远不会得到相同的sessionid.这不是GUID吗?
本规范:
Something = new Guid()
Run Code Online (Sandbox Code Playgroud)
正在回归:
00000000-0000-0000-0000-000000000000
所有的时间,我不知道为什么?所以为什么?
默认值为int0,for string为"",而为booleanfalse.有人可以澄清一下默认值guid是多少?
我刚刚将一堆数据导入到MySQL表中,并且我有一个"GUID"列,我希望基本上用新的和唯一的随机GUID填充所有现有行.
我如何在MySQL中执行此操作?
我试过了
UPDATE db.tablename
SET columnID = UUID()
where columnID is not null
Run Code Online (Sandbox Code Playgroud)
只是让每个领域都一样
我使用Rails 3.0.20和ruby 1.8.7(2011-06-30 patchlevel 352)
请建议我生成guid的最佳插件.