Apr 21, 2007
When I execute a long running procedure, I get timeout errors when other users try to execute other procedures with UPDATE or INSERT statements.
I suspect that the other procedures are trying to execute DML statements on tables that are locked by the long running procedure.
I have a sharred trigger on all my tables that creates and updates records in tables AuditLogDetails and AuditLogParent for keeping a log of modifications. I suspect that tables AuditoLogDetails and AuditLogParent are locked by the long running procedure.
How can I change the LOCKING behavior of the long running procedure to fix the time out errors that I get?
The long running procedure is displayed below.
ALTER PROCEDURE [dbo].[spPostPresenceToHistory2]
@PostDate DateTime,
@Department Int,
@Division Int,
@Testing Bit = 0,
@XDoc xml OUTPUT,
@XDoc2 xml OUTPUT,
@ModifierID varchar(20),
@Comment varchar(200)
AS
BEGIN
BEGIN TRANSACTION
DECLARE @PostCount Int,@PreCount Int,@DiffCount Int
IF @Testing=1
BEGIN
PRINT 'DELETE FROM History2_Presence'
EXEC sp_SetPostingProperties 'History2_Presence',@ModifierID,@Comment
SELECT @PreCount=COUNT(*) FROM History2_Presence
IF EXISTS(SELECT E.ID FROM History2_Personel E WHERE E.PostDate=@PostDate)
BEGIN
DELETE FROM History2_Presence FROM History2_Presence H
INNER JOIN History2_Personel Ps ON H.Personel_ID=Ps.ID AND Ps.PostDate=@PostDate
WHERE Ps.Category_Department_ID=@Department AND Ps.Category_Division_ID=@Division AND H.Date_de_Presence=@PostDate
AND EXISTS (SELECT P.ID FROM Presence P
WHERE (P.Date_de_Presence=@PostDate AND P.Personel_ID=H.Personel_ID AND P.Travaille_de_Jour=H.Travaille_de_Jour) OR (P.ID=H.ID))
END
ELSE
BEGIN
DELETE FROM History2_Presence FROM History2_Presence H
INNER JOIN Personel As Ps ON H.Personel_ID=Ps.ID
WHERE Ps.Category_Department_ID=@Department AND Ps.Category_Division_ID=@Division AND H.Date_de_Presence=@PostDate
AND EXISTS (SELECT P.ID FROM Presence P
WHERE (P.Date_de_Presence=@PostDate AND P.Personel_ID=H.Personel_ID AND P.Travaille_de_Jour=H.Travaille_de_Jour) OR (P.ID=H.ID))
END
SELECT @PostCount=COUNT(*) FROM History2_Presence
IF @PreCount<>@PostCount
BEGIN
SET @DiffCount = @PreCount-@PostCount
SET @XDoc2.modify('
insert <Table Name="History2_Presence" RecordDeleted="{ sql:variable("@DiffCount") }"/> as last into /Deleted_Records[1]
')
END
END
PRINT 'INSERT INTO History2_Presence'
EXEC sp_SetPostingProperties 'History2_Presence',@ModifierID,@Comment
SELECT @PreCount=COUNT(*) FROM History2_Presence
INSERT INTO [dbo].[History2_Presence]
([ID]
,[User_ID]
,[Personel_ID]
,[Date_de_Presence]
,[Category_Motif_ID]
,[DateEntre]
,[Category_TypeDePresence_ID]
,[Travaille_de_Jour]
,[Heur_Supplementaire_Travaille]
,[prime_transport]
,[Tarif]
,[Jour_Travaille]
,[Montant_Supplementaire_Par_Heur]
,[Salair_par_Jour]
,[Salair_Minimum]
,[IsAutomaticRec])
SELECT [P].[ID]
,[P].[User_ID]
,[P].[Personel_ID]
,[P].[Date_de_Presence]
,[P].[Category_Motif_ID]
,[P].[DateEntre]
,[P].[Category_TypeDePresence_ID]
,[P].[Travaille_de_Jour]
,[P].[Heur_Supplementaire_Travaille]
,[P].[prime_transport]
,[P].[Tarif]
,[P].[Jour_Travaille]
,[P].[Montant_Supplementaire_Par_Heur]
,[P].[Salair_par_Jour]
,[P].[Salair_Minimum]
,[P].[IsAutomaticRec]
FROM [dbo].[Presence] AS P
INNER JOIN Personel As Ps ON P.Personel_ID=Ps.ID
WHERE P.Date_de_Presence=@PostDate AND Ps.Category_Department_ID=@Department AND Ps.Category_Division_ID=@Division
AND NOT EXISTS
(SELECT HP.ID FROM History2_Presence HP
WHERE (HP.Date_de_Presence=@PostDate AND HP.Personel_ID=P.Personel_ID AND HP.Travaille_de_Jour=P.Travaille_de_Jour) OR (HP.ID=P.ID))
SELECT @PostCount=COUNT(*) FROM History2_Presence
IF @PreCount<>@PostCount
BEGIN
SET @DiffCount = @PostCount-@PreCount
SET @xdoc.modify('
insert <Table Name="History2_Presence" RecordAdded="{ sql:variable("@DiffCount") }"/> as last into /Inserted_Records[1]
')
END
IF @Testing=0
BEGIN
PRINT 'DELETE FROM Presence'
EXEC sp_SetPostingProperties 'Presence',@ModifierID,@Comment
SELECT @PreCount=COUNT(*) FROM Presence
DELETE FROM Presence FROM Presence P
INNER JOIN Personel As Ps ON P.Personel_ID=Ps.ID
WHERE P.Date_de_Presence=@PostDate AND Ps.Category_Department_ID=@Department AND Ps.Category_Division_ID=@Division
AND EXISTS
(SELECT HP.ID FROM History2_Presence HP
WHERE (HP.Date_de_Presence=@PostDate AND HP.Personel_ID=P.Personel_ID AND HP.Travaille_de_Jour=P.Travaille_de_Jour) OR (HP.ID=P.ID))
SELECT @PostCount=COUNT(*) FROM Presence
IF @PreCount<>@PostCount
BEGIN
SET @DiffCount = @PreCount-@PostCount
SET @XDoc2.modify('
insert <Table Name="Presence" RecordDeleted="{ sql:variable("@DiffCount") }"/> as last into /Deleted_Records[1]
')
END
END
COMMIT TRANSACTION
END
View 1 Replies
View Related
Jan 13, 2008
Server Error in '/' Application.
Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: System.InvalidOperationException: Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below. Stack Trace:
[InvalidOperationException: Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.]
System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) +1188873
System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +105
System.Data.SqlClient.SqlConnection.Open() +111
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +413
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
LogDo.Log_Db_Save(String sjm, String k_sql, String bz) +438
LogDo.Log_Save(Exception e, String sql) +124
DataCaoZuo.Manage_ResultTB_Caozuo(String comstr) +145
Cls_UserManage.GetAllUserList() +18
Index.Page_Load(Object sender, EventArgs e) +83
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +15
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +34
System.Web.UI.Control.OnLoad(EventArgs e) +99
System.Web.UI.Control.LoadRecursive() +47
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1061
Version Information: Microsoft .NET Framework Version:2.0.50727.832; ASP.NET Version:2.0.50727.832
View 1 Replies
View Related