Supongamos que tengo un servidor SQL mesa de 2005, TABLEX, con 2 índices en él:
cambiar una clave principal de no agrupado a Agrupado
PK_TableX = PRIMARY KEY no agrupados en FieldA
IX_TableX_FieldB = agrupado en FieldB
Quiero cambiar el PK que se CLUSTERARÁ, y el otro índice no estará CLASIFICADO.
Tengo que asumir que la base de datos estará en uso en el momento en que intento cambiar la ronda de índices, por lo que mi principal preocupación es evitar que la restricción PK no exista en algún momento del proceso. en la mesa. Quiero estar protegido contra cualquier riesgo de que se inserten claves duplicadas.
es decir, no puedo simplemente soltar la clave principal y volver a crearla.
Este proceso debe realizarse mediante un script SQL, no a través de SSMS.
Tengo un enfoque que creo que funcionará (lo publicaré como posible respuesta), pero me gustaría abrirlo en caso de que me falta algo o hay otra/mejor manera. Además, puede resultar útil para otros en el futuro
¿Por qué desea agrupar en clúster en la clave principal? ¿Es un GUID o INT? ¿La mayoría de tus consultas incluyen hacer coincidir el PK? – awright18
@ awright18 - PK agrupado ofrece un mejor rendimiento, en realidad es una clave primaria compuesta en 2 campos int que con más frecuencia se consulta en – AdaTheDev