在MS SQL Server 2005中重命名列

24

当涉及到使用SQL(MS SQL Server 2005变体)重命名表列时,最佳实践是什么? 这假定列中有必须保留的数据。

2个回答

50

你必须使用存储过程来重命名列。以下代码可以将你的列从'oldColumnName'重命名为'newColumnName'而不会影响任何数据。

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

显然,你需要手动更新使用旧名称的任何代码/存储过程/SQL。


0
今天我遇到了同样的问题,解决方法是杀掉数据库上的所有进程,因为这些进程锁定了事务。我尝试执行存储过程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') 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接