列的重命名在SQL Server中不能持久。

问题描述 投票:0回答:1

我目前正在使用SQL Server,我必须重命名一个表中的每一列。

对于表中的每一列,我做了这样的事情。

DB> sp_rename 'DB.TABLE.OldName', 'NewName'

每次都能成功

除了一列,我在其中运行了这个。

DB_configdwh_dev> sp_rename 'OCIDB.RAW_KPI_FORECASTS_DAILY.DEVRAWKPIFORDAI_promoted_at', 'RAWKPIFORDAI_promoted_at'
Time: 0.510s
Caution: Changing any part of an object name could break scripts and stored procedures.

虽然看起来很有效,但旧的名字仍然在表中。

DB_configdwh_dev> describe "OCIDB"."RAW_KPI_FORECASTS_DAILY"
Time: 4.165s (4 seconds)
+-------------------------+---------+------------+-------------------------+
| Name                    | Owner   | Type       | Created_datetime        |
|-------------------------+---------+------------+-------------------------|
| RAW_KPI_FORECASTS_DAILY | dbo     | user table | 2020-05-24 23:31:58.410 |
+-------------------------+---------+------------+-------------------------+

+-----------------------------+----------+------------+----------+--------+---------+------------+----------------------+------------------------+------------------------------+
| Column_name                 | Type     | Computed   | Length   | Prec   | Scale   | Nullable   | TrimTrailingBlanks   | FixedLenNullInSource   | Collation                    |
|-----------------------------+----------+------------+----------+--------+---------+------------+----------------------+------------------------+------------------------------|
...
| RAWKPIFORDAI_predicted_at   | datetime | no         | 8        |        |         | no         | (n/a)                | (n/a)                  | NULL                         |
| DEVRAWKPIFORDAI_promoted_at | datetime | no         | 8        |        |         | yes        | (n/a)                | (n/a)                  | NULL                         |
+-----------------------------+----------+------------+----------+--------+---------+------------+----------------------+------------------------+------------------------------+

我可以确认这列没有被重命名过

DB_configdwh_dev> select top 1 rawkpifordai_promoted_at from ocidb.raw_kpi_forecasts_daily
Time: 0.356s

訊息207,第16層,狀態1,第1行 無效的列名 'rawkpifordai_promoted_at'.

DB_configdwh_dev> select top 1 devrawkpifordai_promoted_at from ocidb.raw_kpi_forecasts_daily
Time: 0.867s
+-------------------------------+
| devrawkpifordai_promoted_at   |
|-------------------------------|
| 2020-05-18 00:00:00.000       |
+-------------------------------+

由于重命名命令没有导致错误,我在这里有点迷茫。我想过把旧的列复制到另一个正确名称的列中,然后删除前者。但我相信一定有更好的处理方法。我试过断开与DB的连接,然后再做同样的处理,但没有用。

非常感谢你的建议或任何建议。

sql-server
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.