找回密码
 注册账号

QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

初学者课程:T3自学|T6自学|U8自学软件下载课件下载工具下载资料:通资料|U8资料|NC|培训|年结积分规则 | 使用常见问题Q&A
知识库:U8 | | NC | U9 | OA | 政务U8|U9|NCC|NC65|NC65客开|NCC客开新手必读 | 任务 | 快速增金币用友QQ群[微信群]
查看: 6065|回复: 6

[已解决] 用友账套升级时报错

[复制链接]
发表于 2017-9-13 14:34:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册账号

×
本帖最后由 hugeng 于 2017-9-13 15:53 编辑

原来是用友U890,在升级到12.5时报错。

从2010年度到2017年度账套,只有其中的2013年度帐套升级失败。
提示:
  1. 数据库名: UFDATA_010_2013
  2. C:\U8SOFT\Admin\SQLFILE10000\Main\Ufdata\Structure\data_str_pf_mix_nl.sql
  3. 错误信息:
  4. -2147217900
  5. 视图或函数 'voucheritems' 不可更新,因为修改会影响多个基表。

  6. 执行如下语句时出错:

  7. /*==========处理旧绩效表名===========*/
  8. if exists(select * from hr_sys_setdict_base where ctablecode='hr_pf_pfTable')
  9. begin

  10.         ---删除查询分类        
  11.         delete from HR_BD_QueryClsAndSubClsRel where vSubClsCode in(select vSubClsCode  from hr_bd_querysubclass where vsubclscode like 'pf%')
  12.         delete from HR_BD_QueryIncludeSubCls where vSubClsCode in(select vSubClsCode  from hr_bd_querysubclass where vsubclscode like 'pf%')
  13.         delete from  HR_BD_QueryShareField where vSubClsCode in(select vSubClsCode  from hr_bd_querysubclass where vsubclscode like 'pf%')
  14.         delete from hr_bd_querysubclass where vsubclscode like 'pf%'
  15.         delete hr_bd_queryclass where vclscode like '10%' or vclscode like 'UD_10_%'        
  16.         
  17.         ---删除报表
  18.         delete  from hr_bd_rpt_file where irptcode in(select iRptCode  from hr_bd_rpt where vclscode like '10%' or vclscode like 'UD_10_%');
  19.         delete from hr_bd_rpt_cond  where irptcode in(select iRptCode  from hr_bd_rpt where vclscode like '10%' or vclscode like 'UD_10_%');
  20.         delete from hr_bd_rpt_conditem  where irptcode in(select iRptCode  from hr_bd_rpt where vclscode like '10%' or vclscode like 'UD_10_%');
  21.         delete from hr_bd_rpt_section where irptcode in(select iRptCode  from hr_bd_rpt where vclscode like '10%' or vclscode like 'UD_10_%');
  22.         delete from hr_bd_rpt_auth where irptcode in(select iRptCode  from hr_bd_rpt where vclscode like '10%' or vclscode like 'UD_10_%');
  23.         delete from  hr_bd_rpt_cond2 where irptcode in(select iRptCode  from hr_bd_rpt where vclscode like '10%' or vclscode like 'UD_10_%');
  24.         delete from hr_bd_rpt where irptcode in(select iRptCode  from hr_bd_rpt where vclscode like '10%' or vclscode like 'UD_10_%');
  25.         delete from hr_sys_function where csub_id ='pf'
  26.         delete from hr_bd_rptdetail where vclscode like '10%'
  27.         delete from hr_bd_rptdetail where vclscode like 'UD_10_%'
  28.         
  29.         ----删除单据、栏目信息
  30.         delete  from voucheritems where cardnum in(select cBusinessID  from hr_bd_vouchertype where csub_id like 'pf%')
  31.         delete from vouchers where CardNumber in(select cBusinessID  from hr_bd_vouchertype where csub_id like 'pf%')
  32.         delete from vouchertemplates where VT_CardNumber in(select cBusinessID  from hr_bd_vouchertype where csub_id like 'pf%')
  33.         delete from AA_ColumnDic where cKey in(select cBusinessID  from hr_bd_vouchertype where csub_id like 'pf%')

  34.         delete  from AA_ColumnSet where cKey in(select cBusinessID  from hr_bd_vouchertype where csub_id like 'pf%')
  35.         delete  from AA_ColumnAuthCache where cKey in(select cBusinessID  from hr_bd_vouchertype where csub_id like 'pf%')
  36.         delete from AA_ColumnDicCache_Main where cKey in(select cBusinessID  from hr_bd_vouchertype where csub_id like 'pf%')
  37.         delete from AA_ColumnDicCache_Detail where  cKey in(select cBusinessID  from hr_bd_vouchertype where csub_id like 'pf%')

  38.         delete  from hr_bd_vouchertype where csub_id like 'pf%'

  39.         delete  from hr_bd_vouchertable  where ctablecode like 'hr_pf_%'

  40.         delete from hr_bd_vouchertable  where ctablecode like 'hr_v_pf_%'

  41.         delete from  Hr_bd_VoucherItem where ctablecode like 'hr_pf_%' or  ctablecode like 'hr_v_pf_%'

  42.         ---删除数据字典        
  43.         delete hr_sys_itemdict_Base  where ctablecode like 'hr_pf_%' or ctablecode like 'hr_V_pf_%'
  44.         delete from hr_sys_setdict_base where ctablecode like 'hr_pf_%' or ctablecode like 'hr_V_pf_%'
  45.         
  46.         
  47. end



  48. 效率测试报告:开始升级UFDATA_010_2013数据库

  49. data_str_pb_wfmodel_nl.SQL,2017-09-12 21:13:03 -- 2017-09-12 21:13:17,0小时0分钟14秒。
  50. data_str_pb_mommodel_nl.SQL,2017-09-12 21:13:17 -- 2017-09-12 21:13:20,0小时0分钟3秒。
  51. data_str_pb_portalmodel_nl.SQL,2017-09-12 21:13:20 -- 2017-09-12 21:13:26,0小时0分钟6秒。
  52. data_str_pb_ufsubmodel_nl.SQL,2017-09-12 21:13:26 -- 2017-09-12 21:13:27,0小时0分钟1秒。
  53. Data_STR_PB_DR_NL.SQL,2017-09-12 21:13:27 -- 2017-09-12 21:13:27,0小时0分钟0秒。
  54. Data_STR_PB_mix_NL.SQL,2017-09-12 21:13:27 -- 2017-09-12 21:13:30,0小时0分钟3秒。
  55. Data_STR_PB_Vou_NL.SQL,2017-09-12 21:13:30 -- 2017-09-12 21:13:31,0小时0分钟1秒。
  56. data_str_pb_uap_nl.SQL,2017-09-12 21:13:31 -- 2017-09-12 21:13:31,0小时0分钟0秒。
  57. data_str_pb_as_nl.SQL,2017-09-12 21:13:31 -- 2017-09-12 21:13:43,0小时0分钟12秒。
  58. data_str_pb_start_nl.SQL,2017-09-12 21:13:43 -- 2017-09-12 21:13:43,0小时0分钟0秒。
  59. data_str_pb_dae_nl.SQL,2017-09-12 21:13:43 -- 2017-09-12 21:13:43,0小时0分钟0秒。
  60. workflow_str_pb_mix_nl.SQL,2017-09-12 21:13:43 -- 2017-09-12 21:13:44,0小时0分钟1秒。
  61. Data_STR_SR_mix_NL.SQL,2017-09-12 21:13:44 -- 2017-09-12 21:13:46,0小时0分钟2秒。
  62. data_str_rt_mix_nl.SQL,2017-09-12 21:13:46 -- 2017-09-12 21:13:46,0小时0分钟0秒。
  63. data_str_ss_mix_nl.SQL,2017-09-12 21:13:46 -- 2017-09-12 21:13:46,0小时0分钟0秒。
  64. data_str_wa_mix_nl.SQL,2017-09-12 21:13:46 -- 2017-09-12 21:13:47,0小时0分钟1秒。
  65. Data_STR_HR_TM_mix_NL.SQL,2017-09-12 21:13:47 -- 2017-09-12 21:13:51,0小时0分钟4秒。
  66. Data_STR_HR_TR_mix_NL.SQL,2017-09-12 21:13:51 -- 2017-09-12 21:13:51,0小时0分钟0秒。
  67. data_str_ht_mix_nl.SQL,2017-09-12 21:13:51 -- 2017-09-12 21:13:51,0小时0分钟0秒。
  68. data_str_pr_mix_nl.SQL,2017-09-12 21:13:51 -- 2017-09-12 21:13:51,0小时0分钟0秒。

  69.     升级起始时间:2017-09-12 21:12:58,结束时间:2017-09-12 21:13:53,0小时0分钟55秒。
复制代码


将判断语句中的
select * from hr_sys_setdict_base where ctablecode='hr_pf_pfTable'
单独执行,在2013年度账套中无记录。在成功升级的2012年度帐套中也无记录。


单独分析其中出错的这句sql语句
delete  from voucheritems where cardnum in(select cBusinessID  from hr_bd_vouchertype where csub_id like 'pf%')

其中,
执行select cBusinessID  from hr_bd_vouchertype where csub_id like 'pf%'  不管在2012、2013账套都无记录返回。
执行delete  from voucheritems where cardnum in(select cBusinessID  from hr_bd_vouchertype where csub_id like 'pf%')
2012年度正确执行。
2013年度报视图或函数 'voucheritems' 不可更新,因为修改会影响多个基表。

voucheritems 为视图,将2012、2013帐套中导出视图create脚本,比较后发现二者完全一致。

此视图引用了表:voucheritems_base、voucheritems_lang ,再次导出这二个表的create脚本、含索引、主外键等,比较后还是完全一致。

所以,不明白为什么
delete  from voucheritems where cardnum in(select cBusinessID  from hr_bd_vouchertype where csub_id like 'pf%')
在2012年度能正确执行,在2013年度就报错,请各位帮忙分析,谢谢。

 楼主| 发表于 2017-9-13 15:53:21 | 显示全部楼层
原因找到了,在视图voucheritems上,应该还存在3个触发器。
但是在2013年度账套中,这个视图没有触发器,其它年度均有。补上这些触发器后,脚本可以正确执行了。
回复 点赞 拍砖

使用道具 举报

发表于 2017-9-13 21:39:32 | 显示全部楼层
应该是那些出错 细节
回复 点赞 拍砖

使用道具 举报

发表于 2017-9-14 08:38:37 | 显示全部楼层
挺厉害的!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
回复 点赞 拍砖

使用道具 举报

发表于 2017-9-28 09:41:31 | 显示全部楼层
请教怎么补上触发器?像视图一样生成SQL脚本,再执行一次么?
回复 点赞 拍砖

使用道具 举报

发表于 2017-9-29 22:22:48 | 显示全部楼层
过来学习下。。。。。。。。。。。。。。。。。。。。。。加油。。。。。。。。。。。
回复 点赞 拍砖

使用道具 举报

发表于 2023-3-30 13:14:26 | 显示全部楼层
学习一下
回复 点赞 拍砖

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|站长微信|Archiver|手机版|小黑屋|用友之家 ( 蜀ICP备07505338号|51072502110008 )

GMT+8, 2024-4-26 15:45 , Processed in 0.043823 second(s), 8 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表