24

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

4

2 回答 2

50

您必须使用存储过程来重命名列。以下会将您的列从“oldColumnName”重命名为“newColumnName”,而不会影响任何数据。

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

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

于 2009-08-10T16:39:46.520 回答
0

我今天遇到了同样的问题,解决方案是杀死数据库上的所有进程,因为进程被锁定了事务。我执行了程序 sp_rename,但问题没有解决。所以我杀死了数据库中的进程并且proc工作。

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') 
于 2018-02-26T21:46:35.950 回答