【问题标题】:Renaming a column in MS SQL Server 2005在 MS SQL Server 2005 中重命名列
【发布时间】:2010-11-18 08:38:33
【问题描述】:

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

【问题讨论】:

    标签: sql sql-server ddl renaming


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-09-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-14
        • 1970-01-01
        • 2018-06-07
        相关资源
        最近更新 更多