O Kin mostrou como você pode redefinir o valor de IDENTITY, mas fora de um ambiente de desenvolvimento quando você está realmente removendo todos os dados, por que você precisa fazer isso?
Espero que você não pretenda manter uma sequência contígua de valores de IDENTIDADE quando estiver em produção. E espero que você não esteja realmente escrevendo seu código para codificar os valores de IDENTITY. Se esses são valores de ID significativos, você deve parar de usar a propriedade IDENTITY.
Existem algumas coisas que impedirão que isso aconteça:
- se um valor de IDENTITY for atribuído durante uma transação e a transação for revertida, o valor não será "devolvido" e o próximo valor será o que nunca será usado + 1.
- se uma linha for excluída posteriormente, a IDENTITY nunca voltará para preencher as lacunas.
- existe um erro ativo no SQL Server 2012 que
não será corrigido até que o SQL Server 2014 nunca seja corrigido (a menos que você use um sinalizador de rastreamento não documentado e muito caro) pelo qual uma reinicialização parecerá descartar até 1000 valores da sua coluna IDENTITY . O bug no Connect sugere que isso é restrito a eventos de failover envolvendo grupos de disponibilidade, mas posso garantir que o bug é muito mais amplo que isso.
Em resumo, se você se preocupa com lacunas ou deseja atribuir um significado específico a esses valores, pare de usar IDENTITY. Solte e recrie a tabela e, quando você precisar excluir os valores e preencher novamente, execute uma atualização ou insira os valores codificados dessa coluna.
Como um aparte, chave primária e identidade não são a mesma coisa. Uma coluna de identidade não é uma chave primária, a menos que você a defina explicitamente como tal, e certamente você pode ter uma chave primária que não seja uma coluna de identidade.