Sql server SQL Server如何在内部重命名表?

Sql server SQL Server如何在内部重命名表?,sql-server,sql-server-2014,Sql Server,Sql Server 2014,使用Microsoft SQL Server 2014,我们正在执行一些需要重新构建表结构的操作。我们已将方法缩小为两种方法: 创建新的“临时”表(不是#tentable类),将数据转储到临时表中,删除原始数据,然后将数据转储回临时表 重命名现有表,创建新表,然后将数据从temp转储到new 我的同事坚持认为1是理想的选择。然而,我确信#1需要的时间是#2的两倍(因为我们有消耗大量存储的BLOB数据)。同事声称,当您在内部重命名一个表时,SQL Server会创建一个新表,并无论如何转储数据。我

使用Microsoft SQL Server 2014,我们正在执行一些需要重新构建表结构的操作。我们已将方法缩小为两种方法:

  • 创建新的“临时”表(不是
    #tentable
    类),将数据转储到临时表中,删除原始数据,然后将数据转储回临时表
  • 重命名现有表,创建新表,然后将数据从temp转储到new
  • 我的同事坚持认为1是理想的选择。然而,我确信#1需要的时间是#2的两倍(因为我们有消耗大量存储的BLOB数据)。同事声称,当您在内部重命名一个表时,SQL Server会创建一个新表,并无论如何转储数据。我非常不同意。我确信SQL Server只是简单地修改了现有表的名称。在搜索这是如何工作的时候,我找不到任何信息

    那么SQLServer如何在内部重命名表呢?它是否创建一个新表,转储数据,然后删除旧表?还是只是修改了名称?

    有意义吗

    sp_helptext 'sp_rename'
    
    这有意义吗

    sp_helptext 'sp_rename'
    

    如果您所说的临时表是指仅对连接和作用域有利的“可诱惑”,则我不会走这条路,因为您可能会丢失所有数据。@不,不是SQL Server对“临时表”的定义。然后选项2仍然有效。我找不到文档,但我从未听说过任何接近第一个逻辑的东西,也无法想象SQL Server为什么会这样做。@scsimon我就是这么想的。这是一个非常愚蠢的说法。但他年纪较大,是首席开发人员,因此很难与他争论:-)如果临时表的意思是“可诱惑的”,这只对连接和范围有好处,我不会走这条路,因为你可能会丢失所有数据。@scsimon不,不是SQL Server对“临时表”的定义。那么选项2仍然有效。我找不到文档,但我从未听说过任何接近第一个逻辑的东西,也无法想象SQL Server为什么会这样做。@scsimon我就是这么想的。这是一个非常愚蠢的说法。但他年纪较大,是首席开发人员,因此很难与他争论:-)或者更具体地说,在该SP中,行
    EXEC%%Object(ID=@objid).SetName(Name=@newname)
    @jerrydoge老实说,我第一次回顾了SP_rename存储过程。正如您所说,它似乎只更新sysobjects表中的表名。好主意:)或者更具体地说,在该SP中,行
    EXEC%%Object(ID=@objid).SetName(Name=@newname)
    @jerrydoge老实说,我第一次查看了SP_rename存储过程。正如您所说,它似乎只更新sysobjects表中的表名。好主意:)