Jump to content

Report Server lange Laufzeiten bei Abfrage mit Parameter


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Wir nutzen den SQL Server 2012 im Sharepoint 2010 integrierten Modus. Wir greifen über ODBC auf einen Sybase ASE 15 zu. Funktioniert soweit ganz gut. Wir haben nun Abfragen bei denen wir Parameter in in einem Where Like verwenden wollen. Auch das klappt. Nur bei einer etwas komplexeren Abfrage laufen wir damit gegen die Wand. Irgendwas sorgt dafür das die Abfrage dann so lange läuft das kein Ergebnis zurückkommt und der Reportserver die Abfrage auf Grund der Laufzeit killt.

 

Folgende Abfrage direkt klappt, Laufzeit irgendwo max. 1 Minute, 7340 Zeilen:

 

select d.d01ort, d.d01status, d.d01bnr, t.titel, t. titel_avs, t.autor_avs from sisis.d01buch d, sisis.titel_dupdaten t, sisis.titel_verbund tv, sisis.titel_buch_key tbk where d.d01mcopyno=tbk.mcopyno and tbk.katkey=tv.katkey and tbk.katkey=t.katkey and d.d01ort like "0001/8 85-%";

 

Die selbe Abfrage per Parameter dagegen nicht:

 

select d.d01ort, d.d01status, d.d01bnr, t.titel, t. titel_avs, t.autor_avs from sisis.d01buch d, sisis.titel_dupdaten t, sisis.titel_verbund tv, sisis.titel_buch_key tbk where d.d01mcopyno=tbk.mcopyno and tbk.katkey=tv.katkey and tbk.katkey=t.katkey and d.d01ort like @Teilsignatur

 

Wobei dann halt Teilsignatur 0001/8 85-% ist. Ich habe es auch mit 0001/8 85- probiert un das % angehängt, also d.d01ort like @Teilsignatur + "%"

 

Der Bericht ist super simpel, er zeigt einfach die Felder im Select an. Kein gruppieren, summieren, sortieren.

 

Wenn ich mir auf dem ReportServer die View ExecutionLog3 anschaue, in der ja die letzten ausgeführten Bericht protokolliert sind, sehe ich das der Reportserver die meiste Zeit in TimeProcessing hängt.

 

Ich bin etwas ratlos warum nur durch den Parameter plötzlich der Berichtsserver verrückt spielt. Es kommen ja letztlich die selben Daten aus der Datenbank zurück. Jemand eine Idee?

bearbeitet von Doso
Link zu diesem Kommentar

Hast Du dich bei 1 Minute verschrieben? Soll das 1 Sekunde evtl. heißen?  ;)

 

Auszug aus: http://stackoverflow.com/questions/11152607/using-like-on-a-parameter-variable

 

 

Another option is dynamic SQL:
declare @sql nvarchar(max)
set @sql = 'Select Column1 From Table Where ' + @Variable + 
' Like ''%'' + Column2 + ''%'''
exec (@sql)

 

Dynamisches SQL ist so ziemlich das Letzte, was machen sollte. Dir wird aber möglicherweise nichts anderes übrig bleiben.

 

Im SQL kenn ich eigentlich nur die einfachen ' ' Anführungszeichen. Wird es mit denen besser? Wie ist @Teilsignatur deklariert? Du kannst auf dem MS SQL Server die Abfrage debuggen, lass dir den Inhalt von @Teilsignatur per print @Teilsignatur ausgeben. Evtl. siehst Du dann mehr.

Link zu diesem Kommentar

Das ist wahrscheinlich ein Teil des Problems. Ich habe mal die Timeout Werte massiv in die Höhe gestellt. Dadurch sehe ich das die TimeDataRetrival manchmal bis zu 15 Minuten sind. Das TimeProcessing ist dann 45 Minuten bis zum nächsten Timeout. Wieso das bei manchen Querys recht fix geht, und dann über eine Stunde verstehe ich aber nicht so recht. Da sollten eigtl. die halbwegs selben Daten zurückkommen.

Link zu diesem Kommentar

Wie  gesagt, Ursache kann schon eine andere Art  der gegenseitigen Transaktion sein. Vielleicht kann man die ODBC-Treiber  updaten? Oder Du prüfst, ob es einen OLE DB Provider oder  ADO.NET. Das sollte der Sharepoint können (wobei ich mir bei SP2010 nicht  ganz sicher bin). ODBC  ist aber gefühlt die schlechteste Wahl.

Für den BCS kann ich  übrigens https://lightningtools.com/products/bcs-meta-man-2010-and-2013/  empfehlen.

Link zu diesem Kommentar

Habe das Query nun anders zusammengebaut, damit geht es in wenigen Sekunden:

 

="select d.d01ort, d.d01status, d.d01bnr, t.titel, t.autor_avs from sisis.d01buch d, sisis.titel_dupdaten t, sisis.titel_verbund tv, sisis.titel_buch_key tbk where d.d01mcopyno=tbk.mcopyno and tbk.katkey=tv.katkey and tbk.katkey=t.katkey and d.d01ort like " + Chr(34) + Parameters!Signaturparam.Value + "%" + Chr(34) + ";"

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...