代码之家  ›  专栏  ›  技术社区  ›  Thomas Bratt

在MS SQL Server 2005中重命名列

  •  23
  • Thomas Bratt  · 技术社区  · 17 年前

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

    2 回复  |  直到 9 年前
        1
  •  49
  •   mlissner    13 年前

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

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

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

        2
  •  0
  •   Marcelo Dev    8 年前

    今天我遇到了同样的问题,解决方案是杀死数据库中的所有进程,因为这些进程被事务锁定。我执行了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')