SQL Server 数据库排序规则报错“由于一个或多个对象访问此列,ALTER TABLE ALTER COLUMN fid 失败”解决办法

1、问题描述

(1)业务操作时报错:

(2)调整相关表列的排序规则为Chinese_PRC_CS_AS,无法更改

消息 5074,级别 16,状态 1,第 1 行
对象'CPK_BAS_EQUIPMETKI' 依赖于 列'fid'。
消息 4922,级别 16,状态 9,第 1 行
由于一个或多个对象访问此列,ALTER TABLE ALTER COLUMN fid 失败。

2、解决步骤

(1)先删除主键

alter  TABLE [dbo].[CT_BAS_EQUIPMENT] drop   CONSTRAINT [CPK_BAS_EQUIPMETKI] ;

(2)再改排序:

alter table  [dbo].[CT_BAS_EQUIPMENT] alter column  fid varchar(44)  COLLATE Chinese_PRC_CS_AS  not null;

(3)再创建主键

(4)检查列排序是否改成功

3、注意

(1)对主键列排序调整,要在后后面加上not null,否则列会变为null;
(2)把Chinese_PRC_CI_AS改为Chinese_PRC_CS_AS获取语句:
select ' ALTER TABLE '+sys.tables.name+' ALTER COLUMN '+sys.columns.name+' ' + sys.types.name + '('+ cast(sys.columns.max_length as varchar)+')' +' COLLATE'+' Chinese_PRC_CS_AS' +';' ,sys.tables.name as tablename,sys.columns.name as 字段名, sys.types.name as 字段类型, sys.columns.max_length as 长度, sys.columns.collation_name,sys.columns.is_nullable as 是否可空 from sys.columns, sys.tables, sys.types where sys.columns.object_id = sys.tables.object_id and sys.columns.system_type_id=sys.types.system_type_id  and sys.columns.collation_name='Chinese_PRC_CI_AS'  and sys.tables.name in('表名')

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值