|
在SQL数据库中怎样快速删除用友U8账套
在SQL数据库中怎样快速删除U8账套
用SQL快速删除U8账套
一、问题提出
通过“系统管理”来删除999账套,首先要求你备份然后才能删除。头痛的是:
1)备份需要发费很长的时间,特别是账套数据文件比较大时。
2)备份时,你的本本基本处于死机状态。
3)还要求,你宝贵的硬盘至少要有双倍空间(如:在E盘存放8G的999账套数据目录文件,此时你要有16G空间)
4)再要求,存放999数据文件的硬盘至少要有一倍空间(如:也就是在E盘至少要有8G空间。)
二、解决方法
通过跟踪总结出,可用SQL快速删除账套。
只需1分钟,也无需硬盘空间。
如下步骤(只适用内部人员的本本上使用):
1、SQL分离UFDADA_999_2007、UFMeta_999_2007数据库
2、分离后删除UFDADA、UFMeta目录文件
3、用SQL清除999账套在UFSystem里的信息
1)消除999账套日志:
DELETE
FROMUA_LOG
whereCACC_ID='999'
2)消除999账套年度会计期:
DELETE
FROMUA_Period
WHERE(cAcc_Id='999')
3)消除999账套启用模块:
DELETE
FROMUA_Account_sub
WHERE(cAcc_Id='999')
4)消除999账套:
DELETE
FROMUA_Account
WHERE(cAcc_Id='999')
补充::::::
账套号001,年度2007
IFEXISTS(SELECTnameFROMmaster.dbo.sysdatabasesWHEREname=
N'UFDATA_001_2007')
DROPDATABASE[UFDATA_001_2007]
GO
DELETEFROM[UFSystem]..[UA_Account_sub]WherecAcc_Id='001'
DELETEFROM[UFSystem]..[UA_Period]WherecAcc_Id='001'
DELETEFROM[UFSystem]..[UA_Log]WherecAcc_Id='001'
DELETEFROM[UFSystem]..[UA_Account]WherecAcc_Id='001'
DELETEFROM[UFSystem]..[UA_HoldAuth]WherecAcc_Id='001'
DELETEFROM[UFSystem]..[UA_Identity]WherecAcc_Id='001'
上面这个脚本只能适用于U86X,U87X不知道相关数据表是否还有.
-------------------
在年结09年帐套时,上面的技术对我帮助很大。情况是这样的
问题:公司有二个帐套,帐套号分别是002和004。做完年结后,财务发现002帐套里汇兑损益的凭证做错了,也就是说需要重新年结002帐套,而004帐套则不需再年结。
解决思路:只要把002帐套的2010年度帐删除应该可以解决问题。于是
1、通过系统管理的帐套引出,但是这个引出功能要把002所有的年度帐都删除。此路不通
2、利用帐套和年度帐删除工具,但这个工具也和引出一样,要将002所有年度帐删除。也不行
3、于是在网上搜到这篇文章,利用下面的命令将002的2010年的信息删掉,然后在数据库中把2010年的数据库分离,再在系统管理里进行结转上年数据操作,顺利年结。
useufsystem
select*fromua_periodwherecacc_id='002'andiyear='2010'
DELETE
FROMUA_Period
WHERE(cAcc_Id='002'andiyear=2010)
每套账所对应的数据库名字
原因分析:若是商贸通标准版本,可以根据维护中心--查询执行器去看每个帐套的数据库的问题解答:由于用户用的是商贸通普及版本,可以在查询执行器中找到master数据库,在sub_list这张表中有dbname字段对应的就是数据库的名字
数据库文件所在的路径:查询Master数据库中的sysdatabases 这个表。
UFSystem数据库中的UA_Account表中存储着帐套号和帐套名称
更改U8备份缓存盘的路径:
重设备份计划,更改备份路径。无法打开份设备,那你打开查询分析器,在ufsystem数据库中找到用户表ua_account打开,把cacc_path字段的值修改正确。其值为账套的日期。
|
|
|
|
|
|
|