2011-12-29 7 views
5

Estoy tratando de modificar un campo de tabla, con algunas filas en él, desde DateTime hasta DateTime2(3).¿Por qué SQL Server me obliga a abandonar la tabla para poder modificar un campo de DateTime a DateTime2 (3)?

Pero SQL Server Management Studio se queja de que he soltado y vuelto a crear la tabla.

¿Pero por qué?

¿No es DateTime2(3) tiene más precisión que DateTime tipo? Debería estar bien, ¿no debería ser?

+1

¿Qué * sistema de base de datos * estás usando? – Lion

+4

@Lion "* Management Studio *" implica SQL Server. – Yuck

+1

Consulte esto: http://stackoverflow.com/questions/3896713/sql-server-management-studio-adding-moving-columns-require-drop-and-re-create –

Respuesta

6

Hay una configuración en SSMS que le permitirá hacer lo que quiera. Menú-Herramientas-Opciones-Diseñadores-Evite guardar los cambios que requieren volver a crear la tabla.

SSMS tiene la costumbre de recrear casi cualquier cambio que usted haga. Debería estar bien solo alterar el tipo de datos de columna con algo como esto.

alter table TableName alter column ColName datetime2(3) 
3

También puede hacerlo sin reconstruir la tabla (como Management Studio lo hace entre bastidores).

ALTER TABLE T ALTER COLUMN D DateTime2(3) [NOT NULL] 

Esto habrá menos recursos por adelantado, pero dejar la columna de "viejo" detrás de las páginas de datos por lo que tendrá un efecto en curso hasta que la reconstrucción de la tabla.

+0

no sabía eso sobre alter table alter column. No dice que está equivocado, pero ¿tiene una referencia? ¡Gracias! –

+1

@BenThul [Aquí hay una] (http://sqlblog.com/blogs/kalen_delaney/archive/2006/10/13/alter-table-will-not-reclaim-space.aspx) –

+0

cosas buenas. Aprendí algo hoy. –

Cuestiones relacionadas