T+维护方法论之维护篇讲师:刘小艳2018年8月【送课程到一线】目录产品运维思路01维护基础知识02checkbug工具03跟踪分析法04软件服宝24h在线随问随答极速响应产品运维思路你会如何排查?产品运维思路•分析过程:•1、首先登录的是否是服务器本机。•2、确认服务器是否正常登录;•3、这里先假设一下,服务器正常,只有某台客户端有问题。按照这样的思路,我们继续进行排除;•4、确认是内网客户端还是外网客户端;•5、假设是外网客户端时,确认是否做了端口映射;•6、假设做了端口映射,确认登录的地址是否正确,IP和端口是否和服务器一致;•7、假设登录地址没有问题,端口也没有问题的情况下,检查杀毒软件和防火墙,看是不是端口被阻止了,可以将杀毒软件和防火墙关闭试试;•8、如果防火墙已经关闭,可以在客户端上ping服务器地址和检测端口是否通,验证网络和端口是否被屏蔽;•9、假设端口不通,修改端口后重新映射再登录;•10、清除一下IE的缓存看是否可以解决问题;•11、如果以上方法都无法解决客户端无法登陆的问题,需要根据实际情况进一步进行具体、深入的分析。咨询服宝,借鉴思路维护基础知识财税新政活学活用结合软件不再迷茫T+数据库版本1常见数据库操作2T+账套库和系统库3T+常用数据库语句4T+数据库恢复账套5T+数据库版本12.0及以下12.1及以上SQL2016SQL2014SQL2012SQL2008R2SQL2005+SP2简版数据库可用但不建议用常见数据库操作-实例名数据库实例名是用于和操作系统进行联系的标识实例名-安装&卸载如何卸载实例名?账套库和系统库账套库和系统库系统库eap_account表中记录账套的基本信息。例如:账套名称、账套编号、账套路径、账套版本、建账日期等等。正常情况系统库eap_account和账套库的信息是一对一的。一个账套有一个账套库,系统库eap_account表中也有一条对应记录。如果系统库和账套库里的信息不一致会导致:1、一个账套只有账套库没有系统库信息—登录界面选不到账套2、一个账套只有系统库信息没有账套库信息—能选到账套但是登录不了3、账套库和系统库的数量不一致—老版本可能会影响账套登录,新版本手机端登录可能会提示4060数据库错误查删改增打开企业管理器新建查询窗口,执行前注意选好数据库数据备份-备份物理文件需要关闭数据库服务才能备份。数据备份-手工备份适用于:软件已经卸载、账套无法正常登陆。如果备份的时候,指定了多个路径,那么在还原的时候会报错,此时指定还原文件时都需将多个路径下的文件选择到。数据备份-手工备份数据备份-自动备份数据恢复-还原适用于即没有备份账套也没有备份物理文件的情况下实现步骤:1、先在数据库中备份A账套;2、新建一个空账套B;3、EAP_account表中查询到B账套的Dsname;4、针对B账套库进行还原,选择A账套的备份文件,覆盖现有数据库;数据恢复-还原数据恢复-附加通过物理文件恢复账套账套库和系统库都存在1、停止数据库服务;2、将数据库和系统库的物理文件一共四个文件拷贝到软件安装路径的Dbserver/DATA下;3、启动数据库服务;4、先附加系统库再附加账套库;5、最后做数据库配置后可直接登录。通过物理文件恢复账套只有账套库没有系统库账套库和系统库之间是以账套库名称和系统库eap_account表里的dsname字段关联的,例如账套133531,账套库名称UFTData999532_133531,系统库里dsname名称也是UFTData999532_133531。这样这个账套才能正常登录。通过物理文件恢复账套只有账套库没有系统库恢复账套的方法1、新建账套,账套信息都随意,但账套主管的账号和名称都设置为001;2、停止数据库服务,将账套的LDF和MDF文件拷贝到软件安装路径data文件夹下;3、启动数据库服务,将账套库mdf文件附加到数据库。4、将系统库eap_account里新建账套的dsname修改为附加账套的名称,并修改cacc_mastername为001;5、找到附加账套下的eap_user表,将其中一个admin为true的操作员的code、name、personname都修改为001;6、做数据库配置后就能登录。注意:附加时,软件补丁版本和账套版本最好一致,否则附加之后点菜单会提示数据库错误。清空密码清空系统管理员密码12.1及以上版本清除系统管理员密码(针对系统库执行)UpdateEAP_ConfigPathsetAdminPassword='dL4Wl5cQ1MTnxmR4VgiEVg=12.1以下版本清除系统管理员密码(针对系统库执行)UpdateEAP_ConfigPathsetAdminPassword='1B2M2Y8AsgTpgAmY7PhCfg=清空密码清空操作员密码12.1及以上版本清除账套操作员密码(针对系统库和账套库都执行)updateEAP_Usersetpassword='dL4Wl5cQ1MTnxmR4VgiEVg==‘12.1以下版本清除账套操作员密码(针对账套库执行)updateEAP_Usersetpassword='1B2M2Y8AsgTpgAmY7PhCfg=='整理现存量/可用量12.0及以下版本现存量整理:execT_SCM_RebuildCurrentStock12.1及以上版本现存量整理(整理现存量):execSCM_SP_RebuildCurrentStockexecSCM_SP_RebuildCurrentStockForStockRequest业务场景:现存量查询表中现存量不准,有现存量但是不能出库。整理总账12.0及以下版本存货总账整理::execT_SCM_RebuildSummarybook12.1及以上版本存货总账整理:execSCM_SP_RebuildSummarybook业务场景:存货总账明细账成本计算不准,有结存成本却计算不出出库成本。检测一致性错误Dbcccheckdb(账套库)业务场景:数据异常,检测是否有一致性错误重建日志--1、停止数据库服务--2、将物理文件路径下该账套的.ldf文件删除,再启动数据库服务--3、执行以下语句将数据库改为紧急模式ALTERDATABASE账套库SETEMERGENCY--4、执行以下语句将数据库改为单用户模式ALTERDATABASE账套库SETSINGLE_USER--5、重建日志,以下语句中的路径要自行修改成客户账套的物理文件的路径alterdatabase账套库RebuildLogon(name=账套库_log,filename=‘安装路径\账套库_log.ldf')业务场景:数据修复之前,删除账套日志重建福袋工具化繁为简一键出表合理筹划checkbug工具应用原理:针对总账模块常见的数据问题,研发已经将通用的解决脚本集成在工具中,通过运行该工具进行“查错”和“修复”。注意:在使用工具之前一定要先备份好账套。X:\Chanjet\TPlusPro\Appserver\server\Tool\checkBug案例一•现象:•1131应收账款与2181其他用付款的明细数据是正确的,汇总数据是错误的。案例一i案例二i•现象:•在打印总账和明细账时在不勾选“科目无年初余额、本年无发生也打印”这个选项的情况下,同时无期初数、无发生数、无余额的科目还是打印出来。案例二跟踪分析法跟着服宝玩转软件功能操作不再陌生概念•跟踪分析法是利用一些工具,比如SQLServer的事件探查器、系统日志文件等,来完成对问题的跟踪、分析的一种方法。分类•系统日志跟踪分析法•事件探查器跟踪分析法跟踪分析法适用范围•1、通过日志文件来跟踪一些常见的报错;•2、用来跟踪某些操作所涉及到的表,表与表之间的关联关系,以及通过数据跟踪的结果来分析数据报错的原因。原理•根据软件操作过程中的错误信息,事件探查器或者日志文件会捕获到一系列的sql语句或者相关提示,然后根据这些sql语句或者提示来逐步分析,最终确定问题的原因以及如何去解决问题。•现象:•在给客户的维护过程中,会经常接到客户的反馈,说凭证或者单据无缘无故的被删除了,是不是丢失了?案例一案例一分析过程:1、针对这样的情况,软件中提供了“日志管理”功能2、通过日志管理功能,我们可以很清楚的查询到哪个操作员,什么时间,在哪台机器上登录过,做过什么操作。如图所示:案例二现象:•删除往来单位(999畅捷通)的时候提示“已使用的记录不允许删除!”,或者有时候会提示“记录已被引用,不能删除!”。多个账套运行时怎么只跟踪一个账套跟踪跟踪Databaseid怎么查--通过账套号查询数据源名称UseuftsystemSelectdsnamefromeap_acountwherecacc_num=''--通过数据源名称查询databaseidUsemasterSelectdatabase_idfromsys.databaseswherename=''跟踪案例二让事件探查器处于执行状态,然后在软件中进行删除存货档案的操作,这样事件探查器会记录相关的操作日志。注意:1、如果事件探查器中有记录,可以通过“清除跟踪窗口”来清除所有记录;2、当操作软件时,为了不产生更多的记录,可以将事件探查器处于停止状态;3、在操作软件的时候,一旦出现报错,马上将事件探查器暂停。一般情况下,从后往前找跟踪出来的sql记录。案例二将事件探查器跟踪出来的语句逐个执行,会发现有某个语句会有对应的记录,然后再对这个表进行具体分析。案例二案例二通过执行跟踪的语句,得出如图的结果。这说明数据库表中有这个往来单位的相关记录,进一步确认,价格跟踪分析表里有该往来单位的记录,经确认这个是客户价格表记录,可以直接删除。selectid,*from[AA_CustomerInventoryPrice]where[idcustomer]=N'12'备份好数据,然后执行下面的脚本即可(非通用脚本)deletefrom[AA_CustomerInventoryPrice]where[idcustomer]=N'12'跟踪知识拓展知识延伸:•进货单:主表PU_PurchaseArrival子表PU_PurchaseArrival_bselect*fromSA_SaleDelivery_bwhereidSaleDeliveryDTOin(selectIDfromSA_SaleDeliverywherecode='SA-2014-06-0001')子表的idSaleDeliveryDTO对应的就是主表的id,而code是单据号•销货单:主表SA_SaleDelivery子表SA_SaleDelivery_b•出入库记录:主表ST_RDRecord子表ST_RDRecord_b有服宝相伴工作可以更快捷扫码关注畅享更多福利扫码关注畅享智能服务