2008-09-04 32 views
8

¿Alguien sabe de una manera de alterar una columna calculada sin soltar la columna en SQL Server. Quiero dejar de usar la columna como una columna calculada y comenzar a almacenar datos directamente en la columna, pero me gustaría conservar los valores actuales.Servidor SQL Modificar la columna calculada

¿Esto es posible?

Respuesta

9

No, que yo sepa, pero aquí es algo que puede hacer

agregar otra columna a la tabla actualización que la columna con los valores de la columna calculada a continuación, colocar la columna calculada

1

Ok, déjame ver si entendí bien. Desea tomar una columna que está actualmente calculada y convertirla en una columna de datos de plain-jane. Normalmente esto dejaría caer la columna pero desea mantener los datos en la columna.

  1. Crea una nueva tabla con las columnas de clave principal de la tabla fuente y la columna generada.
  2. Copie los datos de su tabla fuente en la nueva tabla.
  3. Cambie la columna en su tabla fuente.
  4. Copie los datos nuevamente.

No importa lo que hagas, estoy bastante seguro de que al cambiar la columna, se caerá. De esta manera es un poco más complejo pero no tan malo y guarda tus datos.

[Editar: @ SqlMenace la respuesta es mucho más fácil. :) Te maldigo Menace !! :)]

1

Si necesita mantener el nombre de la columna (para no romper el código del cliente), deberá soltar la columna y volver a agregar una columna almacenada con el mismo nombre. Puede hacerlo sin tiempo de inactividad haciendo los cambios (a lo largo de las líneas de la solución de SQLMenace) en una sola transacción. Aquí hay un pseudo-código:

 
begin transaction 
    drop computed colum X 
    add stored column X 
    populate column using the old formula 
commit transaction 
Cuestiones relacionadas