2012-06-14 15 views
20

En SQL Server Management Studio, al cambiar un campo existente en la vista de diseño de DECIMAL (16,14) a DECIMAL (18,14) no me permitirá guardar sin soltar toda la tabla y todo su datos.SQL Server Management Studio - cómo cambiar un tipo de campo sin dejar caer la tabla

¿Es posible cambiar un tipo de campo una vez que una base de datos se rellena con registros?

+6

¿Qué es 'big_decimal'? –

+1

¿Qué error obtienes al usar el diseñador? –

+0

@Martin Smith mal ejemplo lo siento. – Prometheus

Respuesta

52

sólo tiene que utilizar la escritura de T-SQL en lugar del diseñador visual para lograr su objetivo:

ALTER TABLE dbo.YourTableNameHere 
ALTER COLUMN YourColumnNameHere DECIMAL(18, 14) 

y que debe estar bien.

El diseñador visual toma la ruta extra cuidadosa de crear la tabla con la nueva estructura y luego copiar todos los datos; funciona, pero es tedioso. Normalmente, siempre que no trunque una columna (la haga más corta), definitivamente puede cambiar el tipo de datos de la columna "en su lugar" usando una declaración T-SQL.

También: de forma predeterminada, el diseñador de SSMS es extremadamente cuidadoso y no permitirá ningún cambio que requiera un ciclo de tabla de colocación y recreación. Puede desactivar esta carefullness extra en Tools > Options y luego en este cuadro de diálogo:

enter image description here

Si no selecciona esta opción, usted será capaz de hacer cambios "destructivos" en el diseñador visual

+0

Gracias por su respuesta. – Prometheus

+0

Supongo que es realmente 'decimal' .... –

+0

la opción de tabla de arriba ¿dejará caer esta tabla? No quiero perder ningún dato en él, simplemente cambie el tipo de campo. – Prometheus

-2

herramientas> > opciones >> Herramientas de DataBase >> tabla y diseñador de base de datos >> opciones de tabla y diagrama después de eso, haga lo mismo con la solución anterior

0

El diseñador aún soltará la tabla incluso si la opción está desmarcada en SSMS. Simplemente no te avisará la próxima vez que lo haga. Para probar, inicie el generador de perfiles SQL y modifique una columna con el diseñador de SSMS y verá un comando de colocar tabla desplegable antes de que se ejecute el comando Alter table.

Cuestiones relacionadas