2009-08-10 13 views

risposta

47

È necessario utilizzare un processo memorizzato per rinominare una colonna. Quanto segue rinominerà la colonna da "oldColumnName" a "newColumnName" senza influire sui dati.

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

Ovviamente è necessario aggiornare qualsiasi codice/stored procs/SQL che utilizza manualmente il vecchio nome.

0

Ho avuto lo stesso problema oggi e la soluzione è stata l'eliminazione di tutti i processi sul database, poiché i processi erano bloccati nelle transazioni. Sono stato eseguito la procedura sp_rename, ma il problema non è stato risolto. Così ho ucciso i processi nel database e il processo funziona.

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') 
Problemi correlati