Quantcast
Channel: Für Entwickler: SQL Server Forum
Viewing all articles
Browse latest Browse all 1772

Deadlock SQL Abfrage über JDBC

$
0
0

Hallo!

Ich habe einen Jasper Report Server welcher über JDBC auf meinen SQL Server zugreift.

Mittels diesen Reportserver erstellen wir Auswertungen über Verkaufszahlung usw.

Sobald ich Abfragen mit einer großen Zeitspanne und einer hohen Verdichtung mache gibt es Probleme.

Es kommt zu einem Deadlock. Ich kann mir aber nicht erklären warum.

Im Management Studio funktioniert die Abfrage ganz normal.

Report Server:

ESX 5.1 VM

Centos 6.5

4x2,2 GHz

4 Gb RAM

4x15k SAS HDD Raid 10

10GB



Datenbankserver

Microsoft Server 2008 R2

Microsoft SQL Server 2008 R2

32 GB RAM

4x2,93 GHz Intel X5570

8x15k SAS

Die Abfrage

select 
Kunden.Zeit as Zeit,
Kunden.Verdichtung as Verdichtung,
Kunden.Kunden as Kunden,
Damen.Damen as Damen,
Herren.Herren as Herren,
Kinder.Kinder as Kinder
from 

(select
COUNT(DISTINCT Bons.Id) as Kunden,
CAST(Bons.SaleDate as date) as Zeit ,
Bons.Verbucht as Verdichtung
fromBons, 
Salon, 
Mitarbeiter, 
Bereich,
ArtikelVerkauf
where 
Bons.SalonId=Salon.Id AND
Bons.Abgeschlossen=1 AND
Bons.Verbucht=1 AND
Bons.Mitarbeiter=0 AND
Bons.SaleDate < '03.08.2014'  AND
Bons.SaleDate > '03.08.2013'  AND



Mitarbeiter.ID=Bons.MitarbeiterId AND
Salon.BereichID=Bereich.IDAND
ArtikelVerkauf.BonId=Bons.Id AND

ArtikelVerkauf.Refund=0 AND
ArtikelVerkauf.Anzahlung=0 AND
ArtikelVerkauf.Verkaufsgutschein=0 AND
Bons.Mitarbeiter=0 


group by
CAST(Bons.SaleDate as date),
Bons.Verbucht

) as Kunden FULL OUTER JOIN


(select
COUNT(DISTINCT Bons.Id) as Damen,
CAST(Bons.SaleDate as date) as Zeit ,
Bons.Verbucht as Verdichtung
fromBons, 
Salon, 
Mitarbeiter, 
Bereich,
ArtikelVerkauf
where 
Bons.SalonId=Salon.Id AND
Bons.Abgeschlossen=1 AND
Bons.Verbucht=1 AND
Bons.Mitarbeiter=0 AND
Bons.SaleDate < '03.08.2014'  AND
Bons.SaleDate > '03.08.2013'  AND

Mitarbeiter.ID=Bons.MitarbeiterId AND
Salon.BereichID=Bereich.IDAND
ArtikelVerkauf.BonId=Bons.Id AND

ArtikelVerkauf.Refund=0 AND
ArtikelVerkauf.Anzahlung=0 AND
ArtikelVerkauf.Verkaufsgutschein=0 AND
Bons.Dame=1 

group by
CAST(Bons.SaleDate as date),
Bons.Verbucht



) as Damen ON Damen.Verdichtung=Kunden.Verdichtung and Damen.Zeit=Kunden.Zeit

FULL OUTER JOIN


(select
COUNT(DISTINCT Bons.Id) as Herren,
CAST(Bons.SaleDate as date) as Zeit ,
Bons.Verbucht as Verdichtung
fromBons, 
Salon, 
Mitarbeiter, 
Bereich,
ArtikelVerkauf
where 
Bons.SalonId=Salon.Id AND
Bons.Abgeschlossen=1 AND
Bons.Verbucht=1 AND
Bons.Mitarbeiter=0 AND
Bons.SaleDate < '03.08.2014'  AND
Bons.SaleDate > '03.08.2013'  AND

Mitarbeiter.ID=Bons.MitarbeiterId AND
Salon.BereichID=Bereich.IDAND
ArtikelVerkauf.BonId=Bons.Id AND

ArtikelVerkauf.Refund=0 AND
ArtikelVerkauf.Anzahlung=0 AND
ArtikelVerkauf.Verkaufsgutschein=0 AND
Bons.Herr=1 

group by
CAST(Bons.SaleDate as date),
Bons.Verbucht



) as Herren ON Herren.Verdichtung=Kunden.Verdichtung and Herren.Zeit=Kunden.Zeit


FULL OUTER JOIN


(select
COUNT(DISTINCT Bons.Id) as Kinder,
CAST(Bons.SaleDate as date) as Zeit ,
Bons.Verbucht as Verdichtung
fromBons, 
Salon, 
Mitarbeiter, 
Bereich,
ArtikelVerkauf
where 
Bons.SalonId=Salon.Id AND
Bons.Abgeschlossen=1 AND
Bons.Verbucht=1 AND
Bons.Mitarbeiter=0 AND
Bons.SaleDate < '03.08.2014'  AND
Bons.SaleDate > '03.08.2013'  AND

Mitarbeiter.ID=Bons.MitarbeiterId AND
Salon.BereichID=Bereich.IDAND
ArtikelVerkauf.BonId=Bons.Id AND

ArtikelVerkauf.Refund=0 AND
ArtikelVerkauf.Anzahlung=0 AND
ArtikelVerkauf.Verkaufsgutschein=0 AND
Bons.Kind=1 

group by
CAST(Bons.SaleDate as date),
Bons.Verbucht



) as Kinder ON Kinder.Verdichtung=Kunden.Verdichtung and Kinder.Zeit=Kunden.Zeit

order by 
Zeit,  
Verdichtung


Der Stacktrace

2014-08-06 10:28:24,922 ERROR AsyncJasperPrintAccessor,pool-4-thread-7:299 - Error during report execution
net.sf.jasperreports.engine.JRException: Unable to get next record.
        at net.sf.jasperreports.engine.JRResultSetDataSource.next(JRResultSetDataSource.java:113)
        at net.sf.jasperreports.engine.fill.JRFillDataset.advanceDataSource(JRFillDataset.java:1405)
        at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:1254)
        at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:1233)
        at net.sf.jasperreports.engine.fill.JRBaseFiller.next(JRBaseFiller.java:1577)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:149)
        at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:932)
        at net.sf.jasperreports.engine.fill.BaseFillHandle$ReportFiller.run(BaseFillHandle.java:120)
        at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$SynchronousExecutor.execute(EngineServiceImpl.java:880)
        at net.sf.jasperreports.engine.fill.BaseFillHandle.startFill(BaseFillHandle.java:165)
        at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$AsynchronousReportFiller.fillReport(EngineServiceImpl.java:836)
        at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl.fillReport(EngineServiceImpl.java:1702)
        at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$ReportFill.runWithDataSource(EngineServiceImpl.java:1057)
        at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$ReportFill.runReport(EngineServiceImpl.java:991)
        at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$ReportRunnable.run(EngineServiceImpl.java:902)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:724)
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Die Transaktion (Prozess-ID 55) befand sich auf Sperre | Kommunikationspuffer Ressourcen aufgrund eines anderen Prozesses in einer Deadlocksituation und wurde als Deadlockopfer ausgewählt. Führen Sie die Transaktion erneut aus.
        at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216)
        at com.microsoft.sqlserver.jdbc.SQLServerResultSet$FetchBuffer.nextRow(SQLServerResultSet.java:4853)
        at com.microsoft.sqlserver.jdbc.SQLServerResultSet.fetchBufferNext(SQLServerResultSet.java:1781)
        at com.microsoft.sqlserver.jdbc.SQLServerResultSet.next(SQLServerResultSet.java:1034)
        at org.apache.commons.dbcp.DelegatingResultSet.next(DelegatingResultSet.java:168)
        at net.sf.jasperreports.engine.JRResultSetDataSource.next(JRResultSetDataSource.java:109)
        ... 17 more
2014-08-06 10:28:24,928 ERROR errorPage_jsp,http-bio-80-exec-7:287 - JSException:
2014-08-06 10:28:24,930 ERROR errorPage_jsp,http-bio-80-exec-7:573 - stack trace of exception that redirected to errorPage.jsp
com.jaspersoft.jasperserver.api.JSException: Error filling report
        at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$FillResultListener.reportFillError(EngineServiceImpl.java:1233)
        at net.sf.jasperreports.engine.fill.BaseFillHandle.notifyError(BaseFillHandle.java:211)
        at net.sf.jasperreports.engine.fill.BaseFillHandle$ReportFiller.run(BaseFillHandle.java:135)
        at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$SynchronousExecutor.execute(EngineServiceImpl.java:880)
        at net.sf.jasperreports.engine.fill.BaseFillHandle.startFill(BaseFillHandle.java:165)
        at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$AsynchronousReportFiller.fillReport(EngineServiceImpl.java:836)
        at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl.fillReport(EngineServiceImpl.java:1702)
        at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$ReportFill.runWithDataSource(EngineServiceImpl.java:1057)
        at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$ReportFill.runReport(EngineServiceImpl.java:991)
        at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$ReportRunnable.run(EngineServiceImpl.java:902)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:724)
Caused by: net.sf.jasperreports.engine.JRException: Unable to get next record.
        at net.sf.jasperreports.engine.JRResultSetDataSource.next(JRResultSetDataSource.java:113)
        at net.sf.jasperreports.engine.fill.JRFillDataset.advanceDataSource(JRFillDataset.java:1405)
        at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:1254)
        at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:1233)
        at net.sf.jasperreports.engine.fill.JRBaseFiller.next(JRBaseFiller.java:1577)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:149)
        at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:932)
        at net.sf.jasperreports.engine.fill.BaseFillHandle$ReportFiller.run(BaseFillHandle.java:120)
        ... 10 more
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Die Transaktion (Prozess-ID 55) befand sich auf Sperre | Kommunikationspuffer Ressourcen aufgrund eines anderen Prozesses in einer Deadlocksituation und wurde als Deadlockopfer ausgewählt. Führen Sie die Transaktion erneut aus.
        at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216)
        at com.microsoft.sqlserver.jdbc.SQLServerResultSet$FetchBuffer.nextRow(SQLServerResultSet.java:4853)
        at com.microsoft.sqlserver.jdbc.SQLServerResultSet.fetchBufferNext(SQLServerResultSet.java:1781)
        at com.microsoft.sqlserver.jdbc.SQLServerResultSet.next(SQLServerResultSet.java:1034)
        at org.apache.commons.dbcp.DelegatingResultSet.next(DelegatingResultSet.java:168)
        at net.sf.jasperreports.engine.JRResultSetDataSource.next(JRResultSetDataSource.java:109)
        ... 17 more





Viewing all articles
Browse latest Browse all 1772

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>