2009-08-10 19 views

Antwort

47

Sie müssen eine gespeicherte Prozedur verwenden, um eine Spalte umzubenennen. Im Folgenden wird Ihre Spalte von "oldColumnName" in "newColumnName" umbenannt, ohne dass Daten davon betroffen sind.

Offensichtlich müssen Sie jeden Code/gespeicherte Prozeduren/SQL aktualisieren, die den alten Namen manuell verwendet.

0

Ich hatte das gleiche Problem heute, und die Lösung war alle Prozesse auf der Datenbank zu töten, weil die Prozesse die Transaktionen gesperrt war. Ich wurde die Prozedur sp_rename ausgeführt, aber das Problem wurde nicht gelöst. Also habe ich die Prozesse in der Datenbank beendet und der Proc funktioniert.

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