Переименование столбца в MS SQL Server 2005 - PullRequest
23 голосов
/ 10 августа 2009

Какова лучшая практика, когда речь идет о переименовании столбца таблицы с использованием SQL (вариант MS SQL Server 2005)? Это предполагает, что в столбце есть данные, которые должны быть сохранены.

Ответы [ 2 ]

49 голосов
/ 10 августа 2009

Вы должны использовать сохраненный процесс, чтобы переименовать столбец. Следующее переименует ваш столбец из 'oldColumnName' в 'newColumnName', не затрагивая никаких данных.

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

Очевидно, вам придется обновить любой код / ​​хранимые procs / SQL, который использует старое имя, вручную.

0 голосов
/ 27 февраля 2018

У меня была та же проблема сегодня, и решением было уничтожить все процессы в базе данных, потому что процессы заблокировали транзакции. Я выполнил процедуру sp_rename, но проблема не была решена. Так что я был убить процессы в базе данных, и процесс работает.

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') 
...