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

问题描述

我的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账号就会出现权限不足,而且要满足条件才触发..看起来就像间歇性权限混乱

时间: 2024-11-03 17:40:21

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

大量数据执行-oracle在存储过程中执行update语句

问题描述 oracle在存储过程中执行update语句 在存储过程中经过加工对表执行update语句,但表的数据太大了,2百多万数据的表我就要执行1个多小时,,,8千多万数据的表要怎么办啊? 解决方案 有这样的思路你可参考下: 思路1.写存储过程,引入loop循环,分批次更新.提交: 思路2.以nologging形式重新建表,按新规则把数据插过来:

mysql 单引号 双引号-mysql 中,执行insert语句,单引号双引号区别

问题描述 mysql 中,执行insert语句,单引号双引号区别 建表的时候或者用Insert向表中插入记录时,会用到单引号和双引号.有时候感觉二者都行,但请问下这两者有什么区别.什么时候用单,什么时候用双?

java-为什么我在Java类中执行SQL语句,程序没错,而数据库却没执行??

问题描述 为什么我在Java类中执行SQL语句,程序没错,而数据库却没执行?? 解决方案 不知道画了删除线是什么意思,你确认这些代码有效么 解决方案二: 你用的什么啊?Hibernate?还是别的框架啊?Hibernate的话,可能是事务没有提交,你执行flush方法就可以了 解决方案三: 代码可以贴全一点吗?看不到关键部分 解决方案四: 代码内容太少了,你的Sqlca是个什么,最起码给个声明. 解决方案五: 你的sqlca是什么啊? 解决方案六: executeSQL方法问题 这个方法只能是查

mfc-MFC中使用insert语句插入时的问题

问题描述 MFC中使用insert语句插入时的问题 函数通过前面传的对象过来,将它插入数据库中,执行下面一句代码时出错: strSql.Format(_T("INSERT INTO Bill_Info (Bill_ID,Buyer_Name,Buyer_Book,Buyer_State,Price) values('%s','%s','%s','%d','%f')"), b.getbid(),b.getbname(),b.getbbook(),b.getbstate(),b.getpr

hive中执行sql语句出现的问题

The expression after ELSE should have the same type as those after THEN: "bigint" is expected but "i hive中执行sql语句: select pc.category_id, sum(case when t.so_month between 3 and 5 then t.order_item_num else 0 end) as spring, sum(case when t.

请大家帮忙-实现使用C#语言,在.net开发平台中执行sql语句

问题描述 实现使用C#语言,在.net开发平台中执行sql语句 实现使用C#语言,在.net开发平台中执行sql语句了,如查询某张表数据,向某张表插入一条数据,在某张表中编辑一条数据,删除某张表的一条数据. 解决方案 给你段代码,你参考一下 using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Data.SqlClient; using System.W

MySQL 存储过程中执行动态SQL语句的方法_Mysql

drop PROCEDURE if exists my_procedure; create PROCEDURE my_procedure() BEGIN declare my_sqll varchar(500); set my_sqll='select * from aa_list'; set @ms=my_sqll; PREPARE s1 from @ms; EXECUTE s1; deallocate prepare s1; end; 以上是小编为您精心准备的的内容,在的博客.问答.公众号.

如何在存储过程中执行别的存储过程并获取其返回的结果集

背景 在sqlserver存储过程的编写过程中,通常会碰到繁杂的业务逻辑,将一个大的存储过程拆分成多个小存储过程来做是常用的做法. 问题 在存储过程A中需要调用存储过程B,而存储过程B返回一个Table,A需要获取到B的Table,再进行下一步的处理. 本文解决的问题是:如何在A中执行B,并获取B的返回Table 思路 在A中使用Exec来执行存储过程B 在A中定义临时表,并将B返回的数据插入临时表中 步骤 新建一张测试表,并批量向表中插入若干数据 CREATE TABLE TestTable

存储过程中拼接SQL语句

很多时候我们需要利用参数在存储过程中重新组织SQL语句,在存储过程中拼接的SQL语句只是一个字符串,不会被直接执行,所以加一个execute执行它就可以了.具体看如下演示代码: 代码: set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go -- ============================================= -- Author:  yy -- Create date: 2012-1-17 -- Description: 存储过程S