name - Renombrando una columna en MS SQL Server 2005
rename sql server (2)
¿Cuál es la mejor práctica cuando se trata de cambiar el nombre de una columna de tabla utilizando SQL (variante de MS SQL Server 2005)? Esto supone que hay datos en la columna que deben conservarse.
Tienes que usar un proc almacenado para cambiar el nombre de una columna. Lo siguiente cambiará el nombre de su columna de ''oldColumnName'' a ''newColumnName'' sin afectar ningún dato.
EXEC sp_rename ''tableName.[oldColumnName]'', ''newColumnName'', ''COLUMN''
Obviamente, tendrá que actualizar cualquier código / proceso almacenado / SQL que use el nombre antiguo manualmente.
Tuve el mismo problema hoy, y la solución fue eliminar todos los procesos en la base de datos, ya que los procesos estaban bloqueados en las transacciones. Se ejecutó el procedimiento sp_rename, pero el problema no se resolvió. Así que estaba matando los procesos en la base de datos y el proc funciona.
USE MASTER
GO
--Kill all the connections opened in database.
DECLARE @dbname sysname
SET @dbname = ''database_name''
DECLARE @spid int
SELECT @spid = min(spid) from master.dbo.sysprocesses where dbid = db_id(@dbname)
WHILE @spid IS NOT NULL
BEGIN
EXECUTE (''KILL '' + @spid)
SELECT @spid = min(spid) from master.dbo.sysprocesses where dbid = db_id(@dbname) AND spid > @spid
END
SELECT request_session_id
FROM sys.dm_tran_locks
WHERE resource_database_id = DB_ID(''database_name'')