2009-08-10 174 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')