88 votos

Cambiar el tamaño de una columna en SQL Server

Estoy tratando de cambiar el tamaño de una columna en el SQL Server usando:

ALTER TABLE [dbo].[Address]
ALTER COLUMN [Addr1] [nvarchar](80) NULL

donde la longitud de Addr1 era originalmente de 40. Ha fallado, lo que ha provocado este error:

The object 'Address_e' is dependent on column 'Addr1'.
ALTER TABLE ALTER COLUMN Addr1 failed because one or more objects access 
this column.

He tratado de leerlo y parece que porque algunas vistas están haciendo referencia a esta columna y parece que el Servidor SQL está realmente tratando de eliminar la columna que provocó el error.

¿Hay alguna otra forma de cambiar el tamaño de la columna?

193voto

Syed Baqar Hassan Puntos 1015
ALTER TABLE [table_name] ALTER COLUMN [column_name] varchar(150)

43voto

Remus Rusanu Puntos 159382

Las vistas se crean probablemente usando la opción WITH SCHEMABINDING y esto significa que están explícitamente cableadas para prevenir tales cambios. Parece que el "schemabinding" funcionó y evitó que se rompieran esas vistas, un día de suerte, ¿eh? Contacta con tu administrador de la base de datos y pídele que haga el cambio, después de que afirme el impacto en la base de datos.

De MSDN :

SCHEMABINDING

Vincula la vista al esquema de la tabla o tablas subyacentes. Cuando SCHEMABINDING se especifica, la base tabla o tablas no pueden ser modificadas en una forma que afectaría la vista definición. La definición de la vista en sí misma debe ser primero modificado o eliminado a eliminar las dependencias en la mesa que debe ser modificado.

4voto

RRUZ Puntos 98685

Vea este enlace

Redimensionar o modificar una columna de la tabla de MS SQL Server con la restricción predeterminada usando los comandos T-SQL

la solución para tal problema del Servidor SQL va a ser

Dejando caer o desactivando la restricción por defecto en la columna de la mesa.

Modificar el tipo de datos de la columna de la tabla y/o el tamaño de los datos.

Recreando o habilitando la restricción por defecto de nuevo en la columna de la tabla sql.

Adiós

3voto

Devshish Puntos 1

Si alguien quiere "Aumentar el ancho de columna de la tabla replicada" en SQL Server 2008, entonces no es necesario cambiar la propiedad de " replicate_ddl=1 ". Simplemente siga los siguientes pasos

  1. Abrir SSMS
  2. Conectarse a la base de datos del editor
  3. el comando de ejecución ALTER TABLE [Table_Name] ALTER COLUMN [Column_Name] varchar(22)
  4. Aumentará el ancho de la columna de varchar(x) a varchar(22) y el mismo cambio que se puede ver en el suscriptor (la transacción se replicó). Así que no hay necesidad de reiniciar la replicación

Espero que esto ayude a todos los que lo están buscando.

1voto

esto es lo que funciona con la versión del programa que estoy usando: puede funcionar para usted también.

Sólo colocaré la instrucción y el comando que lo hace. La clase es el nombre de la mesa. La cambias en la mesa misma con este método. No sólo el retorno del proceso de búsqueda.


ver la clase de la mesa

select * from class

cambiar la longitud de las columnas FacID (vista como "faci") y classnumber (vista como "classnu") para que se ajusten a las etiquetas completas.

alter table class modify facid varchar (5);

alter table class modify classnumber varchar(11);

ver la tabla de nuevo para ver la diferencia

select * from class;

(ejecuta el comando de nuevo para ver la diferencia)


Esto cambia la tabla actual para bien, pero para mejor.

P.D. Hice estas instrucciones como una nota para los comandos. Esto no es una prueba, pero puede ayudar en una :)

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X