【发布时间】:2011-07-18 20:04:09
【问题描述】:
我有一个表格,用于在将信息发送到另一个系统 (Dynamics CRM) 之前对其进行排队。我将信息写入该队列,然后另一个服务出现并将数据写入 CRM。
我为主键使用了一个标识值,并将此键与信息一起保存,以便在出现任何问题时跟踪它的来源。将数据拉出队列后,我删除了记录。
但是,SQL Server 似乎正在重用身份字段上的键。许多 id 只使用一次,但许多 id 使用了两次,也有不少人使用了 3 次。显然,这使得通过该 id 查找历史记录毫无用处。难道我做错了什么?我认为标识值应该是唯一的,并且表不应该重用它们。
如果有帮助,这里是列的属性。
关于主键属性的更多属性:
【问题讨论】:
-
你在使用
TRUNCATE TABLE声明吗? -
@Tocco 这是一个很好的问题,我正在使用一个名为“Scribe”的集成服务。我所做的只是选中一个复选框,上面写着“删除源行”我不确定它使用什么 T-SQL 来执行删除。如果它使用的是截断表,那会导致键被重用吗?
-
是的,
TRUNCATE TABLE重置身份列。您必须使用DELETE来防止身份值重置。 -
由乍得“
TRUNCATE TABLE语句将清除身份值...” -
@Jeff Davis,你能链接那个“抄写员”吗?
标签: sql-server sql-server-2008-r2 identity uniqueidentifier