Quelle est la meilleure pratique pour renommer une colonne de table à l'aide de SQL (variante MS SQL Server 2005)? Cela suppose qu'il existe des données dans la colonne qui doivent être conservées.Renommage d'une colonne dans MS SQL Server 2005
23
A
Répondre
47
Vous devez utiliser un proc stocké pour renommer une colonne. Ce qui suit va renommer votre colonne de 'oldColumnName' en 'newColumnName' sans affecter les données.
EXEC sp_rename 'tableName.[oldColumnName]', 'newColumnName', 'COLUMN'
De toute évidence, vous devrez mettre à jour tout code/process enregistré/SQL qui utilise l'ancien nom manuellement.
0
J'ai eu le même problème aujourd'hui, et la solution était de tuer tous les processus sur la base de données, car les processus étaient verrouillés les transactions. J'ai été exécuté la procédure sp_rename, mais le problème n'a pas été résolu. Donc, j'étais tuer les processus dans la base de données et le processus fonctionne.
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')