我的sql账号只具有对存储过程PROC_InsertPeisPatient的执行权限,没有对表PeisPatient授权
平均执行7次,有6次正常执行完成
有1次报错:找不到对象 "PeisPatient",因为它不存在或者您没有所需的权限。求助各位帮忙看看可能的原因ALTER PROCEDURE [dbo].[PROC_InsertPeisPatient]
@IDCardNo VARCHAR(30),
@Input_Code VARCHAR(8),
@ID_Sex int,
@Sex varchar(8),
@BirthDate datetime,
@Age int,
@ID_AgeUnit int,
@AgeUnit varchar(8),
@AgeOfReal numeric(18,5),
@ID_Nation int,
@Nation varchar(16),
@Phone varchar(30),
@PatientName varchar(50),
@ExamSuite_Name varchar(50),
@ExamSuite_Alias varchar(100),
@F_Closed bit,
@ID_FeeType int,
@ID_Payway int,
@Payway varchar(20),
@F_FeeCharged bit,
@F_IsForPrepare bit,
@ID_ExamType int
AS
BEGIN
  DECLARE @ID_Org int
  set @ID_Org=12
  declare @in_ID_Payway int
  declare @in_Payway varchar(30)
  set @in_ID_Payway=11
  set @in_Payway=''
  declare @ID_OpenDoctor int 
  set @ID_OpenDoctor=1394
  
  declare @Org_Name varchar(50)
  DECLARE @ID_OrgReservationGroup int
  DECLARE @ID_OrgReservation int
  select @Org_Name=PeisOrg.Org_Name,@ID_OrgReservation=PeisOrgReservation.ID_OrgReservation,@ID_OrgReservationGroup=PeisOrgReservationGroup.ID_OrgReservationGroup 
  from dbo.PeisOrg left join dbo.PeisOrgReservation on PeisOrg.ID_Org=PeisOrgReservation.ID_Org left join dbo.PeisOrgReservationGroup 
  on PeisOrgReservation.ID_OrgReservation=PeisOrgReservationGroup.ID_OrgReservation where PeisOrg.ID_Org=@ID_Org   declare @NEW_PeisPatientID int
  set @NEW_PeisPatientID=0
  
INSERT INTO dbo.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_PeisPatientID
                
END
GO                

解决方案 »

  1.   

    加强测试。每一次发布之前,都测试几万次。再明显的bug也还是要用自动化的方式来剔除,不要只靠人工测试。
      

  2.   

    查看你SQL Server登陆用户的权限,然后你在SQL里面执行insert 或者update操作  你看这两个在SQL的查询分析器里面执行会不会出现这样的问题,如果没有,可能是程序那边的配置用户调用出现了混乱。
      

  3.   

    确认一下你的web.config 是否配置了多个用户登陆,每个用户登录权限是否不一样,在DB操作的里面调用的时候,多次测试,查看每次登陆的用户是否是一样的。
      

  4.   

    找到问题原因了
    由于该表的触发器操作表引起的,当自增长出来的数字包含4则再新增一条,弃用原来的行
    触发器这样操作表,我的sql账号就会出现权限不足,而且要满足条件才触发..看起来就像间歇性权限混乱