lukluk
Goto Top

SQL Server 2016 - Timeouteinstellung

Hallo zusammen,

ich hatte in einer Testumgebung einen MS SQL Server 2008 mit einer Datenbank laufen. Der Server wurde nicht von mir eingerichtet.
Dazu ein .NET Programm, das auf die Datenbank zugreift und z.T. auch große Abfragen macht. .NET hat ja einen Std-Tiemout von 30sec.

Nun habe ich mir einen SQL Server 2016 aufgesetzt (Darunter ein MS Server 2006) und die Datenbank darauf rüber kopiert (Sichern->Wiederherstellen)

Nun habe ich jedoch das Problem, dass einige der Abfragen im .NET Programm nach exakt 30 Sekunden mit einem Timeout crashen.

************** Ausnahmetext **************
System.Data.SqlClient.SqlException (0x80131904): Das Ausführungstimeout ist abgelaufen. Der Timeout-Zeitraum wurde überschritten, bevor der Vorgang beendet wurde, oder der Server antwortet nicht. ---> System.ComponentModel.Win32Exception (0x80004005): Der Wartevorgang wurde abgebrochen


Hat wer eine Idee, wo man diese Timeout-Einstellungen anpassen kann?

- Unter Server > Eigenschaften > Verbindungen habe ich den Tiemout für Remoteabfragen bereits auf 0 (Inf) gestellt, dieser war jedoch vorher bei 600, kann also nicht der genannte 30sec-Timeout sein.
- Im Management-Studio unter "Optionen" habe ich die Werte auch schon geprüft. Zum einen bei Abfargeausführung>SQL Server>Allgemein und zum anderen unter Deisgner
- Im Connection String des Programms ist ein Timeout von 180sec angegeben
- in den Protokollen habe ich den Keep Alive Wert von 30000 auf 60000 angepasst (in der Annahme es wären ms) aber das war es auch nicht

Gab es evtl. eine Änderungen an den Vorgehensweisen beim Upgrade von 2008 auf 2016 und es muss im Programmcode geändert werden?
Oder gibt es vllt. irgendwo ganz tief versteckt eine Einstellung die ich noch nicht gefunden habe?


Für Ideen wäre ich euch sehr dankbar.

Grüße, LL

Content-Key: 348333

Url: https://administrator.de/contentid/348333

Printed on: April 18, 2024 at 03:04 o'clock

Member: sabines
sabines Sep 06, 2017 updated at 09:57:08 (UTC)
Goto Top
Moin,

wie sieht denn Dein Connection String im .net aus?
Und kannst Du einfache Abfragen erfolgreich durchführen oder kommt da auch der gleiche Fehler?

Gruss
Member: lukluk
lukluk Sep 06, 2017 at 14:18:13 (UTC)
Goto Top
Hallo sabines,

Der Connectionstring sieht wie folgt aus:
connectionString="Data Source=SERVERNAME;Initial Catalog=DBNAME;Persist Security Info=True;Max Pool Size=10000;Connection Timeout=180;User ID=USERNAME;Password=PWD  

Beim nachstellen der Abfrage die hängt bin ich dem Fehler wohl etwas näher gekommen.
Ich habe sie im nachfolgendem beispiel etwas heruntergebrochen.

SELECT DISTINCT TOP (100) MONTH(dbo.TEST.datum) AS monatszahl, YEAR(dbo.TEST.datum) AS Jahr
FROM            dbo.TEST INNER JOIN
                         dbo.TEST_2 ON dbo.TEST.test_ID = dbo.TEST_2.test_ID
WHERE        (YEAR(dbo.TEST.datum) = 2017)
ORDER BY monatszahl

Wenn ich da ein Count drüber jage bekomme ich ca 5000 Einträge, daraus werden die Monate gelistet.
Lustigerweise hängt er sich NICHT auf, wenn ich das "Order by" weglasse und zeigt das Ergebnis innerhalb von weniger als einer Sekunde.

Der Server hat momentan nur 1 Core (auf einem Hyper-V). Ich vermute mittlerweile fast, das ist zu wenig und er hat hier Leistungsprobleme.... aber das kann`s doch echt nicht sein?! An RAM hat er 8GB.

Der alte 2008er Server winkt die o.g. Abfrage übrigens auch in unter 1 Sec durch.

Ich gebe dem morgen früh mal ein paar mehr Kerne und schaue, ob sich etwas ändert.

Grüße
LL
Member: sabines
sabines Sep 07, 2017 at 04:43:56 (UTC)
Goto Top
Moin,

ist das eine TCP Verbindung zum Sever, wenn nicht konnte man früher über tcp: im Connection String das erzwingen.
Sprichst Du den Server über den Namen an? Hier ggfs. die IP verwenden.

Gruss
Member: lukluk
lukluk Sep 07, 2017 at 09:14:30 (UTC)
Goto Top
Hi sabines
ja, das ist eine tcp Verbindung. Das Thema passiert jedoch auch vom localhost aus. er sollte eigentlich kein Problem haben sich selbst aufzulösen.
Das Problem tritt auch im Management-Studio auf... und auch wenn ich die Netzwerkverbindung kappe, bzw. die NW-Karte entferne.

Ich glaube ich weiß nun genauer, woran es liegt. Eine Suche nach "Hyper-V SQL Server langsam" haute mich gestern spät Abend noch aus den Socken. Anscheinend schafft es MS nicht seine eigenen produkte untereinander kompatibel zu machen, denn hier gibt es sehr sehr viele beschwerden. Auch mit 6 Cores bekomme ich bei der relativ einfachen Abfrage ein Problem.

Die 5000 Zeilen stellt er problemlos dar. Sobald ich jedoch den Select auf "distinct" stelle läuft die CPU 30sec auf 100% und gibt dann einen Timeout zurück.

--
Das beantwortet mir zwar nicht die Frage, wo ich diesen 30sec-Timeout hochstellen kann... aber sagt mir zumindest, dass ich im Produktiv-Umfeld auf Hyper-V verzichten sollte.

Grüße
LL
Member: sabines
sabines Sep 08, 2017 at 04:44:02 (UTC)
Goto Top
Moin,

es gibt da eine BP von Nils Kaczenski, google das Mal.
Interessant was alles angestellt werden muss, damit das performant läuft.
Entweder ist ESXi und VMware hier deutlich besser oder ich hab' bisher immer Glück gehabt.
Installiert alles per default und rennt.

Gruss
Member: lukluk
lukluk Sep 08, 2017 at 07:37:27 (UTC)
Goto Top
Vielen Dank für den Hinweis, sabines.

Ja, vmware ist da anscheinend in der Tat besser.
Hier im Forum gibt es auch einen Thread zu dem Thema (1 Jahr alt), den ich mittlerweile gefunden habe. Dort wurden verschiedene Benchmarks durchgeführt, die das deutlich bestätigen.
Hyper-V + SQL Server langsam
bzw der darin verlinkte Thread
Hyper-V und Datenbanken - schlechte Performance

Kannst du mir ein Stichwort für den erwähnten Blogpost nennen? Unter "hyper" finde ich nur etwas von 2010 in der iX und unter SQL auch nix passendes. Du meinst ja seinen direkten Blog oder evtl. wo anders?

Grüße, LL
Member: sabines
sabines Sep 12, 2017 at 07:11:22 (UTC)
Goto Top
Sorry, ich find's nicht mehr.
Alles was ich finde ist nur allgemeiner Kram:

Hyper-V: Mythen und Wahrheiten - Nils Kaczenski auf der cim lingen 2015
https://www.youtube.com/watch?v=QSJR9KWs6Ck