2009-08-10 179 views

回答

47

您必须使用存储的proc来重命名列。以下内容会将您的专栏从'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')