Qual è la procedura migliore quando si rinomina una colonna di una tabella utilizzando SQL (variante di MS SQL Server 2005)? Ciò presuppone che nella colonna siano presenti dati che devono essere preservati.Rinominare una colonna in MS SQL Server 2005
23
A
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')