当我在更新表的列名称时,遇到报错‘无法更改列 ‘name’,因为它是 ‘REPLICATED’。’


查看数据库服务器,并无相关的发布和订阅存在。在网上搜索相关错误信息,发现有网友之前同样遇到过这种报错,原因是之前进行过订阅复制,后续删除时没有删除干净,需要使用EXEC SP_REMOVEDBREPLICATION ‘发布数据库名称’来强制删除发布。
在数据库中运行上述语句后,更改仍旧报错,且报错信息还是如上,这说明这个报错复制没有关系。
后来发现原因是该表开启了CDC,无法变更,只能将CDC关闭,带变更完成后再重新打开。
我的分析思路如下:
1.在其他数据库中执行ALTER sp_rename操作,成功,说明不是实例的问题,主要操作应该定位到数据库级别。
2.在数据库中新建表后进行sp_rename操作,成功,说明不是数据库整体的问题,将问题根源定位到了表级别。
3.比较原有表与新建表的差异:1.表结构与数据不同(这个应该不是问题) 2.原有表开启了CDC,新表没有。突然想到之前为数据库开启CDC时,有遇到报错,报错原因即为该库的replicated属性为1。
由此,我猜测变更失败可能和表开启CDC有关系。
测测试库还原报错如下:

    --建表create table test (id int not null primary key,name varchar(10) null)--开启cdcEXEC sys.sp_cdc_enable_dbexec sys.sp_cdc_enable_table @source_schema='dbo',@source_name='test', @role_name=N'cdc_Admin',  @capture_instance=DEFAULT
--变更exec sp_rename 'test.name','first_name','column'

发现果然报错。
若想变更,只能暂时停止CDC.

--停止捕获
EXEC sys.sp_cdc_stop_job @job_type = 'capture'

使用上述语句停止捕获后仍旧失败,看来只能先关掉CDC在重新开启了。

    --关闭CDCEXEC sys.sp_cdc_disable_table @source_schema = 'dbo', @source_name = 'test', @capture_instance = 'all'--变更exec sp_rename 'test.name','first_name','column'--开启CDCexec sys.sp_cdc_enable_table @source_schema='dbo',  @source_name='test',  @role_name=N'cdc_Admin',  @capture_instance=DEFAULT

更改成功。

经测试后发现,开启CDC后可以添加字段,可以更改字段类型,就是无法给字段重命名。

无法更改列 'xxx',因为它是 'REPLICATED'。相关推荐

  1. 在mysql中更改数据类型_如何在MySQL中更改列的数据类型?

    如果要将某个类型的所有列更改为其他类型,可以使用如下查询生成查询: select distinct concat('alter table ', table_name, ' modify ', col ...

  2. 【转】列“xxx”不属于表 Table asp.net

    [转]列"xxx"不属于表 Table asp.net SqlConnection 不要用全局或静态或单例模式 , 否则会出现不同进程进下共用connection的情况 , 特别是 ...

  3. python更改数据框指定位置的数据_python – 移动数据框列并更改列顺序

    我有一个名为df的数据框,其中包含以下列数据标题: date A B C D E F G H I 07/03/2016 2.08 1 NaN NaN 1029 2 2.65 4861688 -0.03 ...

  4. Microsoft Excel 教程:如何在 Excel 中更改列宽或行高?

    欢迎观看 Microsoft Excel 教程,小编带大家学习 Microsoft Excel 的使用技巧,了解如何在 Excel 中更改列宽或行高. 可以手动调整列宽或行高,或者自动调整列和行的大小 ...

  5. sql 更改列数据类型_SQL查询更改列数据类型

    sql 更改列数据类型 Datatype of the column in SQL can be changed using the ALTER TABLE command. It can also ...

  6. pyspark 修改python版本_python – Pyspark从日期到字符串更改列的类型

    我有以下数据帧: corr_temp_df [('vacationdate', 'date'), ('valueE', 'string'), ('valueD', 'string'), ('value ...

  7. python改变列的数据类型_在Pandas中更改列的数据类型【方法总结】

    先看一个非常简单的例子: a = [['a', '1.2', '4.2'], ['b', '70', '0.03'], ['x', '5', '0']] df = pd.DataFrame(a) 有什 ...

  8. mysql 设置日期时间格式_MySQL:更改列类型和日期时间格式

    我的数据库当前将"日期"列设置为varchar(20),我的日期格式如下: 1/13/2015 20:00 我想在数据库上运行更新以将列类型更改为datetime并将当前日期的格式 ...

  9. python改变列的数据类型_python – Pandas:更改列的数据类型

    您可以使用 pd.to_numeric(在版本0.17中引入)将列或Series转换为数字类型.该函数还可以使用apply应用于DataFrame的多个列. 重要的是,该函数还接受一个错误关键字参数, ...

最新文章

  1. protobuf-2.6.1生成java文件
  2. [PHP] 算法-数组重复数字统计的PHP实现
  3. Nginx学习之六:Nginx配置操作导航
  4. 自动化测试的框架介绍和选择
  5. rac san+oracle_Oracle11g1+RAC+install+for+CentOS5(ASM+to+FC+SAN)_IT168文库
  6. delete hive_Hive高级调优
  7. PANIC: Could not open: AVD
  8. [C#] C#访问数据库的代码(Access版本)
  9. LCD12864图形点阵液晶显示模块中文资料介绍
  10. 那些年,我们一起追过的球队
  11. 百度贴吧五年内流失九成用户;罗永浩吐槽苹果新品:更丑更贵更胡来;进互联网大厂毕业生5年后7成人离开 | EA周报...
  12. 计算机怎么搜索程序和文件格式,PDF软件如何快速搜索与查找文件?
  13. 如何在Android上使用音乐流服务作为警报
  14. 2020最新版前端学习路线图
  15. PS4游戏将登陆PC:一曲属于主机的悲歌
  16. 新书推荐 |《机器学习即服务:将Python机器学习创意快速转变为云端Web应用程序》...
  17. 吴式太极拳老架(原乐志先生授)(2008.04.09修改)
  18. python json文件操作_JSON文件及Python对JSON文件的读写操作
  19. 3000字英文随笔(挽救下语感)
  20. mysql删除工具_有没有mysql卸载工具

热门文章

  1. Allegro转PADS格式
  2. box-shadow实现四周阴影
  3. java eden s0 s1_不是吧!做了两年java还没弄懂JVM堆?进来看看你就明白了
  4. 如何使用 JavaScript 在AnyChart中构建词树图?
  5. 大数据Spark Structured Streaming
  6. 时寒冰说:经济大棋局,我们怎么办 读书笔记
  7. bzoj4890: [Tjoi2017]城市
  8. 如何在 R 中使用 Fisher 的最小显着性差异 (LSD)
  9. 雾计算-思科白皮书 原文+翻译 | 带你全面官方解读雾计算
  10. 水库雨水情自动测报系统-设备介绍