【问题标题】:Mistake made while changing column name using sp_rename. (double colon created)使用 sp_rename 更改列名时出错。 (创建双冒号)
【发布时间】:2021-03-13 12:48:27
【问题描述】:

我在更改列名时犯了一个错误。我想更改我的 SQL 数据库 (Microsoft SQL Server) 中的列名。我成功了,但我在列名之间加了一个冒号。这就是为什么我现在不能再改名字了。使用方括号并没有解决问题。

它不是“table.column_name”而是“table.table.column_name”。

这也使我无法执行“选择”、“删除”或“更新”语句。这是因为不再找到该列,给我错误 "No item by the name of '[table.new_scheme]' could be found in the current database 'name_database'"

我做了什么:

exec sp_rename 'table.old_column', 'table.new_column'

它应该是什么:

exec sp_rename 'table.old_column', 'new_column'

我阅读并使用了这篇文章(以错误的方式:|)。 How to rename a table in SQL Server?

【问题讨论】:

  • 当您收到此消息时,您能否与我们分享您的尝试:“在当前数据库 'name_database' 中找不到名称为 '[table.new_scheme]' 的项目”?请提供代码,不仅选择更新或删除语句...谢谢!

标签: sql sql-server


【解决方案1】:

现在您必须这样做,因此您现在将“table.new_column”列放在双引号或方括号中,如下所示:

exec sp_rename 'dbo.tablename."table.new_column"', 'new_column', 'COLUMN';

exec sp_rename 'dbo.tablename.[table.new_column]', 'new_column', 'COLUMN';

【讨论】:

    【解决方案2】:

    假设你有一个简单的表:

    create table mytable (id int, test int)
    

    而且你更改了第二列的名称:

    exec sp_rename 'mytable.test', 'mytable.test2'
    

    您可以通过以下方式重命名它:

    exec sp_rename 'mytable."mytable.test2"', 'test2'
    

    这是一个演示:

    DEMO

    【讨论】:

      【解决方案3】:

      您需要在文字字符串中分隔标识列:

      CREATE TABLE dbo.YourTable (YourColumn int);
      GO
      EXEC sys.sp_rename N'dbo.YourTable.YourColumn',N'YourTable.NewColumn','COLUMN';
      GO
      SELECT *
      FROM dbo.YourTable;
      GO
      EXEC sp_rename N'dbo.YourTable.[YourTable.NewColumn]', N'NewColumn', 'COLUMN' 
      GO
      SELECT *
      FROM dbo.YourTable;
      GO
      DROP TABLE dbo.YourTable;
      

      【讨论】:

        【解决方案4】:

        您可以使用 SSMS 对象资源管理器执行此操作。截图如下:

        【讨论】:

          猜你喜欢
          • 2022-11-10
          • 1970-01-01
          • 2016-11-04
          • 2014-08-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多