¿Por qué SQL 2008 de repente quiere abandonar mis tablas cuando voy a cambiar el tipo de columna de decir int a real? Esto nunca sucedió en SQL 2005, que yo sepa. Cualquier idea sería útil, por favor.Cómo cambiar una columna sin eliminar una tabla en SQL 2008
Respuesta
En SQL Server 2008, vaya a Herramientas >> Opciones. En la pequeña ventana, haga clic en "Diseñador". Desactive la opción "Impedir guardar cambios que requieren ..."
=====
Editado el 4 de sept 2015.
He añadido esta respuesta aquí hace mucho, mucho tiempo describiendo la forma en que resolvería la situación descrita en la pregunta anterior. Desde entonces, los usuarios en los temas a continuación han expuesto varias preocupaciones sobre hacer las cosas de la manera que recomendé en ese momento. Básicamente, la solución que describí podría ser problemática en algunos escenarios. Luego sugiero que continúe leyendo para verificar los comentarios de otros usuarios y elegir la mejor solución para usted.
Ya encontré la respuesta, pero gracias por la ayuda. – Middletone
¡Pero deja caer la mesa! No es una forma funcional para tablas extragrandes –
Esta no es una respuesta a la pregunta, sino un ajuste para dejar caer silenciosamente la tabla sobre los cambios estructurales, ¡lo cual es muy malo en mi humilde opinión! – Jan
No puedo creer que la respuesta principal haya estado presente durante tanto tiempo, ¡es un consejo muy peligroso!
Hay pocas operaciones que se pueden hacer in-situ sin perder su mesa:
- expandir una columna varchar https://dba.stackexchange.com/questions/5211/changing-column-width
- Hacer un anulable columna (pero no viceversa)
- Cambiar el nombre de las columnas mediante sp_rename
Si se encuentra en una situación en la que no es posible modificar una columna sin soltar la tabla, generalmente puede usar un SELECT INTO
consulta para proyectar sus datos en una nueva tabla, luego suelte la tabla anterior (deshabilitando temporalmente las restricciones) y luego cambie el nombre de la tabla proyectada. Sin embargo, en este caso tendrá que dejar su base de datos fuera de línea para el mantenimiento.
Tengo el mismo problema. A pesar de que mi cuenta tiene derechos de seguridad si intento usar otra cuenta sa, funciona. Parece que de alguna manera mi cuenta no tiene la capacidad de alterar. sigue investigando, pero es un problema de permiso.
actualización:
No puedo expandirlo. pero esto es lo que hice. hay dos grupos de dominio a los que pertenece mi cuenta. Uno era un nuevo grupo de dominio AD y el otro era un grupo de dominios NT legay. Una vez que eliminé el grupo de dominios heredados, pude modificar la tabla con éxito. Tenga en cuenta que ambos grupos tenían "sa" privilegios.
El comportamiento era que los comandos alter daban como resultado el éxito, pero nada cambiaba en la tabla. Luego, cuando intenté manualmente cambiar los campos a través del diseñador, me quejé de que no se me permitía hacer cambios si se requería descartar y volver a crear la tabla. Encontré la configuración en las herramientas y pude apagarlo. Pero esta mesa es enorme y no es una buena idea hacer esto. Yo aconsejaría a otros en contra de eso.
por lo que fue un problema de permiso.No puedo explicar cómo, pero espero que ayude a alguien más
Aquí es lo que yo uso:
-- Add new column
ALTER TABLE MyTable
ADD Description2 VARCHAR(MAX)
GO
-- Copy data to new column (probably with modifications)
Update MyTable
SET Description2 = Description
GO
-- Drop old column
ALTER TABLE MyTable
DROP COLUMN Description
GO
-- Rename new column to the original column's name.
sp_RENAME 'MyTable.Description2' , 'Description', 'COLUMN'
GO
- copia los datos en una nueva columna.
- Suelta la columna anterior.
- Cambie el nombre de la nueva columna por el nombre de la columna anterior.
¿Cómo afecta esta estrategia al índice si la columna está indexada? – Dave
Por lo que sé, tendrá que volver a crear los índices en esa columna. La acción anterior debería eliminarlos a todos (o para reformularlos mejor: debería eliminar la columna de todos los índices asociados). – user2173353
La segunda instrucción en 'Copiar datos a columna nueva' no funcionará porque 'Descripción2' sería un objeto/columna no válida – usefulBee
Otra forma de esta sin perder totalmente la mesa es
- Tome una copia de seguridad de los valores de las columnas.
Hacer que la columna sea nula si no permite nulos. Establecer los valores de las columnas a ser nula por haciendo
update tablename set columnname = null
- eliminar la columna
- Inserte una nueva columna con el mismo nombre que la columna de borrado y el tipo que desea
- insertar los datos guardados en este columna
- 1. ¿Cómo hacer la columna "Sin duplicados" en SQL Server 2008?
- 2. Cómo agrego auto_increment a una columna en SQL Server 2008
- 3. Cambiar el nombre de la columna en SQL Server 2008
- 4. Eliminar identidad de una columna en una tabla
- 5. Cambiar una columna de datos de varchar (max) a nvarchar (max) en SQL Server 2008
- 6. Cambiar los tipos de columna en una tabla enorme
- 7. Crear una columna calculada en SQL Server 2008
- 8. SQL Server 2008 R2 Agregar columna a una ubicación específica
- 9. Cómo reemplazar una cadena en un SQL Server Tabla Columna
- 10. SQL, ¿Cómo cambiar la columna en la tabla SQL sin romper otras dependencias?
- 11. SQL actualiza una columna de otra columna en otra tabla
- 12. Cómo cambiar una columna normal a la columna "calculada"
- 13. nolock en una tabla temporal en SQL Server 2008
- 14. ¿Cómo puedo cambiar el nombre de mi columna en una tabla SQL?
- 15. Extraño comportamiento al cambiar el nombre de una columna en SQL Server 2008
- 16. Cómo insertar en una tabla con solo una columna de IDENTIDAD (SQL Express)
- 17. SQL Server 2008 - HashBytes columna
- 18. Crear una tabla temporal como una tabla actual en SQL Server 2005/2008
- 19. ¿Cómo puedo forzar que una columna sea única para una tabla completa en SQL Server 2008 R2?
- 20. ¿Cómo agregar una nueva columna de identidad a una tabla en SQL Server?
- 21. Cómo convertir una columna de una tabla en una cadena csv en SQL Server sin usar un cursor
- 22. SQL Server 2008 Búsqueda de texto completo en una tabla con una clave primaria compuesta
- 23. ¿Cómo cambio el nombre de una columna en una tabla de base de datos usando SQL?
- 24. Cómo cambiar una columna en Pandas DataFrame
- 25. ¿Desea actualizar una columna en la tabla usando SQL * Loader?
- 26. ¿Cómo incremento automáticamente una columna en mi tabla?
- 27. ¿Cómo puedo agregar una columna a una tabla existente?
- 28. ¿Cómo puedo probar si una columna existe en una tabla usando una declaración SQL?
- 29. Cómo hacer que una columna sea sensible a mayúsculas y minúsculas en sql 2005 o 2008
- 30. Eliminar duplicados de una tabla
Esta respuesta en SF responde correctamente [http://stackoverflow.com/a/11035353/1711106][1] [1]: http://stackoverflow.com/a/11035353/1711106 –