问题描述
我的sql账号只具有对存储过程PROC_InsertPeisPatient的执行权限,没有对表PeisPatient授权平均执行7次,有6次正常执行完成有1次报错:找不到对象"PeisPatient",因为它不存在或者您没有所需的权限。求助各位帮忙看看可能的原因ALTERPROCEDURE[dbo].[PROC_InsertPeisPatient]@IDCardNoVARCHAR(30),@Input_CodeVARCHAR(8),@ID_Sexint,@Sexvarchar(8),@BirthDatedatetime,@Ageint,@ID_AgeUnitint,@AgeUnitvarchar(8),@AgeOfRealnumeric(18,5),@ID_Nationint,@Nationvarchar(16),@Phonevarchar(30),@PatientNamevarchar(50),@ExamSuite_Namevarchar(50),@ExamSuite_Aliasvarchar(100),@F_Closedbit,@ID_FeeTypeint,@ID_Paywayint,@Paywayvarchar(20),@F_FeeChargedbit,@F_IsForPreparebit,@ID_ExamTypeintASBEGINDECLARE@ID_Orgintset@ID_Org=12declare@in_ID_Paywayintdeclare@in_Paywayvarchar(30)set@in_ID_Payway=11set@in_Payway=''declare@ID_OpenDoctorintset@ID_OpenDoctor=1394declare@Org_Namevarchar(50)DECLARE@ID_OrgReservationGroupintDECLARE@ID_OrgReservationintselect@Org_Name=PeisOrg.Org_Name,@ID_OrgReservation=PeisOrgReservation.ID_OrgReservation,@ID_OrgReservationGroup=PeisOrgReservationGroup.ID_OrgReservationGroupfromdbo.PeisOrgleftjoindbo.PeisOrgReservationonPeisOrg.ID_Org=PeisOrgReservation.ID_Orgleftjoindbo.PeisOrgReservationGrouponPeisOrgReservation.ID_OrgReservation=PeisOrgReservationGroup.ID_OrgReservationwherePeisOrg.ID_Org=@ID_Orgdeclare@NEW_PeisPatientIDintset@NEW_PeisPatientID=0INSERTINTOdbo.PeisPatient(IDCardNo,Input_Code,ID_Sex,Sex,BirthDate,Age,ID_AgeUnit,AgeUnit,AgeOfReal,ID_Nation,Nation,Phone,PatientName,DateRegister,ExamSuite_Name,ExamSuite_Alias,F_Closed,ID_Org,ID_OrgReservation,ID_OrgReservationGroup,Org_Name,ID_FeeType,ID_Payway,Payway,F_FeeCharged,F_IsForPrepare,ID_ExamType,ID_OpenDoctor,ID_ExamPlace,F_Registered,F_Paused,F_FinalExamed,F_GuidancePrinted,F_ExamStarted,F_ReadyToFinal,F_FinalLocked,F_FinalApproved)values(@IDCardNo,@Input_Code,@ID_Sex,@Sex,@BirthDate,@Age,@ID_AgeUnit,@AgeUnit,@AgeOfReal,@ID_Nation,@Nation,@Phone,@PatientName,GETDATE(),@ExamSuite_Name,@ExamSuite_Alias,@F_Closed,@ID_Org,@ID_OrgReservation,@ID_OrgReservationGroup,@Org_Name,@ID_FeeType,@in_ID_Payway,@in_Payway,@F_FeeCharged,@F_IsForPrepare,@ID_ExamType,@ID_OpenDoctor,5,1,0,0,1,1,0,0,0)select@NEW_PeisPatientID=SCOPE_IDENTITY()select@NEW_PeisPatientIDENDGO
解决方案
解决方案二:
加强测试。每一次发布之前,都测试几万次。再明显的bug也还是要用自动化的方式来剔除,不要只靠人工测试。
解决方案三:
1楼的兄弟现在问题已经测试出来了我们现在排查出现这个问题的原因
解决方案四:
引用2楼csn123的回复:
1楼的兄弟现在问题已经测试出来了我们现在排查出现这个问题的原因
查看你SQLServer登陆用户的权限,然后你在SQL里面执行insert或者update操作你看这两个在SQL的查询分析器里面执行会不会出现这样的问题,如果没有,可能是程序那边的配置用户调用出现了混乱。
解决方案五:
确认一下你的web.config是否配置了多个用户登陆,每个用户登录权限是否不一样,在DB操作的里面调用的时候,多次测试,查看每次登陆的用户是否是一样的。
解决方案六:
找到问题原因了由于该表的触发器操作表引起的,当自增长出来的数字包含4则再新增一条,弃用原来的行触发器这样操作表,我的sql账号就会出现权限不足,而且要满足条件才触发..看起来就像间歇性权限混乱