1
为什么不支持删除列上的Identity属性
我读过,在SQL Server 2000之后,删除了“取消身份”身份列的功能。而且这是“通过设计”(不仅仅是缺少的功能)。 这是我在博客上找到的示例。它涉及更新系统表。(并且该功能在SQL Server 2000之后被删除。)我知道通过系统表执行此操作不是一个好主意。我只是想知道为什么没有其他功能可以做到这一点。 解决此问题将使我付出大量工作。(在无法停机的环境中将数亿行复制到新表中。) 所以我想问“为什么”。 Sql Server 2005和更高版本中发生了什么更改,这使这件事变得不好了?还是总是不好,只是没有被锁定? 将身份列再次设为普通列会违反什么“最佳实践”(或类似原则)? - 更新以回答“为什么要这样做”的请求: 这是一个非常高级的摘要:我将开始向表中添加分区。(这样我就可以存档/清除旧数据。)这很容易。但是我有时需要将记录移到另一个分区,以免被删除(当一个分区用于归档/删除时)。(我的分区列增加了2,以便始终有空间将行移动到其他分区。) 但是,如果分区列是一个标识列,那么我必须删除并重新插入该值(无法更新标识列的值)。这会导致复制问题。 所以我想使用序列而不是标识列。但是在大型数据库上,这种切换非常困难。