2009-08-10 10 views

Respuesta

47

Tiene que usar un proceso almacenado para cambiar el nombre de una columna. Lo siguiente cambiará el nombre de su columna de 'oldColumnName' a 'newColumnName' sin afectar los datos.

EXEC sp_rename 'tableName.[oldColumnName]', 'newColumnName', 'COLUMN' 

Obviamente tendrá que actualizar cualquier código/proc almacenado/SQL que utilice el nombre anterior manualmente.

0

Tuve el mismo problema hoy, y la solución fue matar a todos los procesos en la base de datos, porque los procesos se bloquearon las transacciones. Me ejecutaron el procedimiento sp_rename, pero el problema no se resolvió. Entonces me mataron los procesos en la base de datos y el proceso 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') 
Cuestiones relacionadas