间歇性问题 存储过程中执行insert语句:找不到对象 "XX",因为它不存在或者您没有所需的权限。

csn123 2016-06-22 06:17:26
我的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
...全文
3639 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
csn123 2016-06-24
  • 打赏
  • 举报
回复
找到问题原因了
由于该表的触发器操作表引起的,当自增长出来的数字包含4则再新增一条,弃用原来的行
触发器这样操作表,我的sql账号就会出现权限不足,而且要满足条件才触发..看起来就像间歇性权限混乱
  • 打赏
  • 举报
回复
确认一下你的web.config 是否配置了多个用户登陆,每个用户登录权限是否不一样,在DB操作的里面调用的时候,多次测试,查看每次登陆的用户是否是一样的。
  • 打赏
  • 举报
回复
引用 2 楼 csn123 的回复:
1楼的兄弟 现在问题已经测试出来了 我们现在排查出现这个问题的原因
查看你SQL Server登陆用户的权限,然后你在SQL里面执行insert 或者update操作 你看这两个在SQL的查询分析器里面执行会不会出现这样的问题,如果没有,可能是程序那边的配置用户调用出现了混乱。
csn123 2016-06-22
  • 打赏
  • 举报
回复
1楼的兄弟 现在问题已经测试出来了 我们现在排查出现这个问题的原因
  • 打赏
  • 举报
回复
加强测试。每一次发布之前,都测试几万次。再明显的bug也还是要用自动化的方式来剔除,不要只靠人工测试。

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧