2009-06-23 19 views
5

Mi base de datos tiene una tabla con miles de registros. La clave principal es un número entero. Hay muchas restricciones de clave externa asociadas con esta columna.SQLSERVER: ¿Cómo modificar una tabla existente int clave primaria para convertirse en una columna de identidad?

Quiero cambiar esta columna para convertirme en una clave de identidad. ¿Cuál es la mejor manera de hacerlo? También necesito enviar esta actualización a las instalaciones de nuestros clientes.

puntos de bonificación para una respuesta que funciona en SQL Server 2000.

Respuesta

11

Hay una gran característica en SQL Server Management Studio que salvó mi día.

En SSMS, vaya a Opciones -> Diseñadores -> Tableros y diseñadores de bases de datos, marque "Auto generar scripts de cambio" y desmarque "Impedir guardar cambios que requieran recreación de tabla".

En el explorador de objetos, vaya a su tabla y seleccione la columna que obtendrá la especificación de Identidad. Haga clic derecho y seleccione modificar. En el panel Propiedades de columna, expanda el árbol "Especificación de identidad" y cambie "(Es identidad)" a sí. Ahora en el tamaño superior izquierdo, selecciona el ícono "Generar script". Presta atención a los mensajes de advertencia.

Ahora tendrá un script generado que eliminará todas sus restricciones, recreará la tabla con identidad y recreará las restricciones. ¡GUAUU!

Lo probaré y publicaré aquí mis resultados.

Actualización: Todo funcionó bien. Olvidé decir en la pregunta que necesito el script para reproducir la modificación en las instalaciones de nuestros clientes.

Este sitio es realmente fantástico. El tiempo que gasté para escribir mi propia respuesta ¡conseguí 3 otros!

+0

¿No crees que mi sugerencia fue más simple? :) – Stuart

+0

@STuart: Es la misma solución pero neves guarda primero su script. – gbn

+0

@Neves: Enterprise Manager tiene el mismo concepto de "cambiar y guardar" – gbn

1

En Enterprise Manager, haga clic derecho en la tabla de la vista de tabla, seleccione el diseño.

haga clic en el lado izquierdo de la columna (a continuación, haga doble clic identidad, en las columnas debajo, en las propiedades de columna, lo enciende, por defecto incremento automático 1

0

Si la columna es un entero como parte de las relaciones existentes entonces ya es único. Por lo tanto, no tiene que preocuparse por los duplicados. Eso es una gran molestia ya evitada.

Puede emitir un comando ALTER TABLE para cambiar la columna o puede hacerlo con Enterprise Manager.

1

No hay una sola DDL "ALTER TABLE" para cambiar una c existente olumn a una columna de identidad. Solo puede agregar una nueva columna de identidad a una tabla existente.

Esto se puede hacer en el Administrador corporativo, pero debe tener en cuenta que el servidor Sql está creando una nueva tabla y copiando los datos en segundo plano. Puede tener algunos problemas con esto. Aquí hay un artículo que explica esto un poco más http://www.mssqltips.com/tip.asp?tip=1397

En su escenario, creo que necesitará una combinación de este script y algo para deshabilitar y volver a activar su fk.

Cuestiones relacionadas