Neu Fehler bei SQL-Abfrage durch Aufgabenplanung

dein-brandstempel

Aktives Mitglied
20. November 2020
51
24
Hallo liebe Gemeinde,

ich versuche schon seit Stunden das folgende Problem zu lösen und hoffe auch Hilfe von Erfahrenen Usern:
Ich möchte eine SQL-Abfrage durch die Windows 11 Aufgabenplanung beim Systemstart starten, also noch bevor ein Windowsnutzer am Server-PC angemeldet sein muss. Die Abfrage erfolgt hierbei durch ein Python-Skript, welches in eine bat-Datei eingebettet ist. (Mit einer batch-Datei und sqlcmd habe ich es aber auch schon versucht.)

Zu meinem Problem: Solange ich die Aufgabe direkt in der Aufgabenplanung starte funktioniert alles. Also ich bin am System als Nutzer angemeldet. Startet Sie automatisch beim Systemstart erhalte ich in meinem Logfile folgende Fehlermeldung:

Sqlcmd: Fehler: Microsoft ODBC Driver 17 for SQL Server : TCP Provider: Der Wartevorgang wurde abgebrochen.
.
Sqlcmd: Fehler: Microsoft ODBC Driver 17 for SQL Server : Login timeout expired.
Sqlcmd: Fehler: Microsoft ODBC Driver 17 for SQL Server : A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online..

Also keine Verbindung zum SQL-Server möglich! Ein Zugriff von externen Clients (anderem PC im Netzwerk) auf den SQL-Server funktioniert mit dem gleichen Skript auch wenn ich am Server-PC nicht eingeloggt bin. Das Problem war übrigens mit dem gleichen Skript, sowie der gleichen Aufgabenplanung an unserem alten Server (SQL Server 2014) möglich. Nun mit dem neuen PC mit SQL Server 2022 funktionierts nicht mehr.

Ein Vergleich der Einstellungen im SQL Server Configuration Manager brachte nur Unterschiede beim SQL Native Client 11.0. Hier war bei dem funktionierenden System etwas hinterlegt bei dem neuen System sind keine Einträge vorhanden. Könnte es daran liegen?

Verzweifelte Grüße
 

mvh

Sehr aktives Mitglied
26. Oktober 2011
1.149
441
Hallo liebe Gemeinde,

ich versuche schon seit Stunden das folgende Problem zu lösen und hoffe auch Hilfe von Erfahrenen Usern:
Ich möchte eine SQL-Abfrage durch die Windows 11 Aufgabenplanung beim Systemstart starten, also noch bevor ein Windowsnutzer am Server-PC angemeldet sein muss. Die Abfrage erfolgt hierbei durch ein Python-Skript, welches in eine bat-Datei eingebettet ist. (Mit einer batch-Datei und sqlcmd habe ich es aber auch schon versucht.)

Zu meinem Problem: Solange ich die Aufgabe direkt in der Aufgabenplanung starte funktioniert alles. Also ich bin am System als Nutzer angemeldet. Startet Sie automatisch beim Systemstart erhalte ich in meinem Logfile folgende Fehlermeldung:



Also keine Verbindung zum SQL-Server möglich! Ein Zugriff von externen Clients (anderem PC im Netzwerk) auf den SQL-Server funktioniert mit dem gleichen Skript auch wenn ich am Server-PC nicht eingeloggt bin. Das Problem war übrigens mit dem gleichen Skript, sowie der gleichen Aufgabenplanung an unserem alten Server (SQL Server 2014) möglich. Nun mit dem neuen PC mit SQL Server 2022 funktionierts nicht mehr.

Ein Vergleich der Einstellungen im SQL Server Configuration Manager brachte nur Unterschiede beim SQL Native Client 11.0. Hier war bei dem funktionierenden System etwas hinterlegt bei dem neuen System sind keine Einträge vorhanden. Könnte es daran liegen?

Verzweifelte Grüße
Moin. Da ist ein Fehler in deinem Connection-String. Aber ohne diesen zu sehen, kann keiner dir helfen. Übrigens, der SQL Server 2022 benutzt nicht mehr den Native Client, nur noch ODBC 17 soll verwendet werden.
 

dein-brandstempel

Aktives Mitglied
20. November 2020
51
24
Danke dir @mvh für die schnelle Antwort. Hier der Connection-Befehl aus Python:
... engine = create_engine('mssql+pyodbc://sa:passwort@192.168.178.24,61935/eazybusiness?driver=ODBC+Driver+17+for+SQL+Server') ...
und dieser wird so per batch gestartet:
@echo off
cd /d %~dp0
set LOGFILE=D:\ WAWI-Zubehoer\Zielemonitor\ log.txt
echo "Starting Dash server" > %LOGFILE%
cd D:\WAWI-Zubehoer\Zielemonitor\
echo "Changed directory to %CD%" >> %LOGFILE%
C:\Python\WPy64-3870\python-3.8.7.amd64\python.exe zielemonitor.py >> %LOGFILE% 2>&1
echo "Dash server started" >> %LOGFILE%
und hier die Einstellung in der Aufgabenplanung. Achso als Dienst mithilfe von "nssm" hatte ich die batch auch schon eingerichtet. Funktioniert auch nicht.



und das ist der Fehlercode der hier im Logfile geschrieben wird:
pyodbc.OperationalError: ('08001', '[08001] [Microsoft][ODBC Driver 17 for SQL Server]TCP Provider: Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte.\r\n (10061) (SQLDriverConnect); [08001] [Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired (0); [08001] [Microsoft][ODBC Driver 17 for SQL Server]A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online. (10061)')

Aber wie gesagt auf dem alten Rechner (SQLServer 2014 / Windows 10) hatte dieser wunderbar funktioniert.


Übrigens, der SQL Server 2022 benutzt nicht mehr den Native Client, nur noch ODBC 17 soll verwendet werden.
Das ist schon mal gut zu wissen, dann erklärt es auch warum da nichts eingetragen ist.
 

mvh

Sehr aktives Mitglied
26. Oktober 2011
1.149
441
Moin. Ich nehme an, dein sql server ist mit dynamischen Port konfiguriert. Oder ist 61935 ein Fester. Wenn dynamisch, dann bitte ohne Port und mit Instanznamen verwenden. Der SQL server Browser läuft? Ist die Firewall richtig für dynamische Ports konfiguriert. Startet sql server als Dienst Automatisch verzögert?
 

mh1

Sehr aktives Mitglied
4. Oktober 2020
1.873
562
Ich denke, du machst zu viele Baustellen auf einmal auf. Sowas erschwert die Fehlersuche.
  • Ich würde die Verbindung erstmal mit sqlcmd testen
  • Wenn du unbedingt python für dein Skript nutzen musst, würde ich wie von MS dokumentiert direkt den Python-SQL-Treiber pyodbc nutzen und nicht auch noch mit einem ORM zusätziche Komplexität einbauen
Gibt es einen speziellen Grund, warum du in deiner .bat nicht einfach sqlcmd aufrufst?

Wen schon phython, dann erstmal so wie es dokumentiert ist anfangen:
Python:
import pyodbc
SERVER = '<server-address>'
DATABASE = '<database-name>'
USERNAME = '<username>'
PASSWORD = '<password>'
connectionString = f'DRIVER={{ODBC Driver 18 for SQL Server}};SERVER={SERVER};DATABASE={DATABASE};UID={USERNAME};PWD={PASSWORD}'
conn = pyodbc.connect(connectionString)
 

mvh

Sehr aktives Mitglied
26. Oktober 2011
1.149
441
Im SQL Server Configuration Manager steht bestimmt der dynamischer Port bei 32-bit und 64-bit.
In diesem Fall den Instanznamen verwenden: 192.168.178.24\JTLWAWI und nicht 192.168.178.24,61935
oder den Port 61935 als festen Port festlegen
 

dein-brandstempel

Aktives Mitglied
20. November 2020
51
24
Im SQL Server Configuration Manager steht bestimmt der dynamischer Port bei 32-bit und 64-bit.
In diesem Fall den Instanznamen verwenden: 192.168.178.24\JTLWAWI und nicht 192.168.178.24,61935
oder den Port 61935 als festen Port festlegen
In der Rubrik SQL Server-Netzwerkkonfiguration (32Bit) stehen keine Elemente, siehe Anhang.
In der Rubrik SQL Server-Netzwerkkonfiguration steht die dynamische IP drin.

Nur den Instanznamen verwenden hat leider nichts gebracht. Hier funktioniert es sogar nicht mehr, wenn ich es händisch starte. Wie kann ich den Port denn fest einstellen?

Moin. Ich nehme an, dein sql server ist mit dynamischen Port konfiguriert. Oder ist 61935 ein Fester. Wenn dynamisch, dann bitte ohne Port und mit Instanznamen verwenden. Der SQL server Browser läuft? Ist die Firewall richtig für dynamische Ports konfiguriert. Startet sql server als Dienst Automatisch verzögert?
Ja, der SQL server Browser wird als Dienst Automatisch gestartet.
Ja, der Dienst SQL Server (JTLWAWI) startet Automatisch verzögert.
In der Firewall habe ich diese Einstellungen, siehe Anhang konfiguriert. Und dies zunächst für alle Profile, also Domäne, Privat und Öffentlich. Wie gesagt extern von anderem PC komme ich ja auch auf den SQL Server und kann sogar das Skript starten.
 

Anhänge

  • Screenshot 2024-07-03 095426.png
    Screenshot 2024-07-03 095426.png
    35,4 KB · Aufrufe: 10
  • Screenshot 2024-07-03 095701.png
    Screenshot 2024-07-03 095701.png
    78,6 KB · Aufrufe: 10
  • Screenshot 2024-07-03 101940.png
    Screenshot 2024-07-03 101940.png
    35,7 KB · Aufrufe: 10

dein-brandstempel

Aktives Mitglied
20. November 2020
51
24
Ich denke, du machst zu viele Baustellen auf einmal auf. Sowas erschwert die Fehlersuche.
  • Ich würde die Verbindung erstmal mit sqlcmd testen
  • Wenn du unbedingt python für dein Skript nutzen musst, würde ich wie von MS dokumentiert direkt den Python-SQL-Treiber pyodbc nutzen und nicht auch noch mit einem ORM zusätziche Komplexität einbauen
Gibt es einen speziellen Grund, warum du in deiner .bat nicht einfach sqlcmd aufrufst?

Wen schon phython, dann erstmal so wie es dokumentiert ist anfangen:
Python:
import pyodbc
SERVER = '<server-address>'
DATABASE = '<database-name>'
USERNAME = '<username>'
PASSWORD = '<password>'
connectionString = f'DRIVER={{ODBC Driver 18 for SQL Server}};SERVER={SERVER};DATABASE={DATABASE};UID={USERNAME};PWD={PASSWORD}'
conn = pyodbc.connect(connectionString)
Ja, ich habe auch sqlcmd schon probiert und getestet. Die Verbindung funktioniert mit sqlcmd, wenn ich als Windows Nutzer angemeldet bin und es händisch starte. Wenn ich es wieder über die Aufgabenplanung starte funktioniert es nicht. Es scheint also nicht am Python-Code zu liegen, da es über sqlcmd auch nicht funktioniert.

Der einzige Unterschied, den ich zu deinem obigen Code sehe ist die Version von ODBC Driver. Hier im Beispiel wird die Version 18 verwendet. Ich hatte die 17 verwendet, da der Code schon ein paar Tage alt ist und auch bisher auf der alten Maschine immer funktioniert hat.

Der Gründe warum ich nicht aus der .bat direkt mit sqlcmd abrufe sind vielfältig. Der Hauptgrund ist allerdings, dass ich mit Python ein Dash starte und dort aktuelle Zahlen aus der WAWI abfrage, welche aller paar Minuten aktualisiert werden. Wenn ich die Abfrage über sqlcmd machen würde, müsste ich es immer erst in eine Datei schreiben und dann wieder einlesen.
 

dein-brandstempel

Aktives Mitglied
20. November 2020
51
24
Nur den Instanznamen verwenden hat leider nichts gebracht.
Hier kommt übrigens dann dieser Fehler:
(pyodbc.OperationalError) ('08001', '[08001] [Microsoft][ODBC Driver 17 for SQL Server]Named Pipes Provider: Could not open a connection to SQL Server [2]. (2) (SQLDriverConnect); [08001] [Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired (0); [08001] [Microsoft][ODBC Driver 17 for SQL Server]A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online. (2)')
(Background on this error at: http://sqlalche.me/e/13/e3q8)
Daraufhin habe ich NamedPipes im SQL Server Configuration Manager noch aktiviert. Leider immernoch derselbe Fehler.
 

dein-brandstempel

Aktives Mitglied
20. November 2020
51
24
Ich habs erstmal hinbekommen!!! 🎉
Die Lösung: Ich habe den SQL Server Dienst von "Automatisch verzögert" auf "Automatisch" gestellt. Nun startet er mein Skript auch aus der Aufgabenplanung. Die Frage ist jetzt nur, ob diese Änderung evtl. später andere Fehler hervorrufen kann? Wenn nein, warum ist SQL Server auf Automatisch verzögert eingestellt und nicht auf Automatisch?
 

mvh

Sehr aktives Mitglied
26. Oktober 2011
1.149
441
Moin.
Genau deswegen war meine Frage, ob der Dienst als "Automatisch verzögert" läuft oder nicht.
Und Nein - lieber nicht umstellen, weil der SQL Server immer als "letzter" gestartet werden soll,
also nach allen anderen "Diensten", sonst kann es dazu kommen, dass der SQL Server evtl. nicht startet
oder die Verbindungen nicht akzeptiert.
Aber wenn Du schon umgestellt hast - testen und beobachten.
Meine Lösung wäre - die Aufgabe verzögert starten, sagen wir für 5 Minuten (s. Trigger).
 
  • Gefällt mir
Reaktionen: dein-brandstempel

mvh

Sehr aktives Mitglied
26. Oktober 2011
1.149
441
Oder noch schlauer:
Einen Trigger "Bei einem Ereignis" erstellen
mit SQL Server Instanz (in unserem Beispiel MSSQL$JTLWAWI) als Quelle
und der Ereignis-ID 17162 (Start der Instanz)

sqlserverinstanzereignis.png
 
  • Gefällt mir
Reaktionen: dein-brandstempel
Ähnliche Themen
Titel Forum Antworten Datum
Neu Seltsamer Fehler bei PayPal-Checkout: "Warenkorb enthielt Vaterartikel..." JTL-Shop - Fehler und Bugs 2
Neu DHL Versenden 4.0 HS Code-Fehler bei Freiposition JTL-ShippingLabels - Fehler und Bugs 8
Fehler bei Bearbeitung von Attributen via HTML-Editor JTL-Wawi 2.0 3
Neu Produkt-Upload schlägt fehl nach Shopware-Update 6.7.9.0 – Fehler bei quantityStart (SaaS-Connector) Shopware-Connector 14
Update auf 2.0.1 Fehler bei eazybusiness JTL-Wawi 2.0 17
Neu JTL Shipping Fehler bei DHL Versand über WMS ? User helfen Usern - Fragen zu JTL-Wawi 2
Neu 500er Fehler im Shop nach aktivierung des Nova Child Templates für JTL-Shop 3
Neu Rechte-Fehler im J10n Modul und Auswirkung auf base.mo.php in div. Plugins (Shop 5.7.1) JTL-Shop - Fehler und Bugs 0
Neu Shop zeigt keine Artikel mehr Fehler 500 Betrieb / Pflege von JTL-Shop 9
Neu Paypal 2.2.1; Fehler "Der Zahlungsanbieter hat eine Anmeldung gefordert" Plugins für JTL-Shop 0
Neu Keine Warenpost Int. Labels hsCode - Fehler? JTL-ShippingLabels - Fehler und Bugs 8
Fehler mit Zahlungsabgleich JTL-Wawi 1.11 11
Neu JTL-Wawi Shopabgleich per E-Mail überwachen (Warnungen & Fehler) Onlineshop-Anbindung 1
Fehler beim Abgleich mit Amazon JTL-Wawi 2.0 10
Fehler nach Update auf Version 1.11.11 und 2.0.4 JTL-Wawi 2.0 7
Neu DHL 4.0 Versandexport Fehler JTL-ShippingLabels - Ideen, Lob und Kritik 13
Fehler beim Abgleich mit dem JTL-Shop JTL-Wawi 2.0 12
Neu PayPal Plugin wirft Fehler auf einmal wegen telefonnummer JTL-Shop - Fehler und Bugs 3
Neu Fehler DHL 4.0 Höherversicherung JTL-ShippingLabels - Fehler und Bugs 4
Neu DHL 4.0 Fehler "Please Enter Name 1" JTL-ShippingLabels - Fehler und Bugs 3
Problem mit Hermes Österreich Sendungsnummern – Fehler beim Amazon-Abgleich in JTL-Wawi JTL-Wawi 1.10 0
Neu Shop gesperrt - Webspace überschritten - Zusatzspace buchen bringt Fehler - Support fühlt sich nicht zuständig Betrieb / Pflege von JTL-Shop 7
hipping 4.0 gibt fehler: Error converting value 500 to type 'Shipping.DHL.GKVAPI40.Shared.RequestStatus'. Path 'status', line 1, position 13. JTL-Wawi 1.11 3
DHL Versenden 4.0 nicht vollständig konfigurierbar (GUI Fehler) JTL-Wawi 2.0 5
Neu Der Inhalt / Text ist verschwunden – ist das ein Fehler JTL-Shop - Fehler und Bugs 0
Neu Shopware 5 + JTL-Connector: sporadische 500 Fehler / PHP-FPM Limit erreicht – trotz unverändertem Setup User helfen Usern - Fragen zu JTL-Wawi 0
Neu Fehler Rechnungsupload Amazon FBA Business Kunde JTL-Wawi - Fehler und Bugs 0
Gelöst: Shipping 4.0 gibt fehler: The product entered is unknown. JTL-Wawi 1.11 6
Neu Error 500 Fehler nach Dropper Installation Betrieb / Pflege von JTL-Shop 2
JTL-Wawi 1.11.7 Sporadischer Fehler - Zugriff verweigert. JTL-Wawi 1.11 4
Neu VCS Lite / IDU blockiert – Aufträge fälschlich unter "Externe Rechnungen" (Amazon API Fehler) Amazon-Anbindung - Fehler und Bugs 9
JTL Shop 4 Upgrade auf 5.5.0 --> Fehler 500 Upgrade JTL-Shop4 auf JTL-Shop5 3
JTL Shop 4 Upgrade auf 5.5.0 --> Fehler 404 Upgrade JTL-Shop4 auf JTL-Shop5 11
Neu Etikettendruck über Remotedesktop Fehler Arbeitsabläufe in JTL-Wawi 0
Nach Update auf Wawi 2.0.X, API v1 Fehler JTL-Wawi 2.0 9
Neu Fehler Scan Barcodes GTIN13 auf einem Lotto-Kundenbeleg JTL-POS - Fehler und Bugs 4
Gelöst Störung: DHL Versenden 3.0 - Fehler "Request processing failure" Gelöste Themen in diesem Bereich 1
Neu Fehler beim Update der Datenbank von 1.11.7 auf 2.0.1 JTL-Wawi - Fehler und Bugs 7
Gelöst: Störung bei LInk11 - JTL- Shops teilweise nicht erreichbar Störungsmeldungen 1
Neu JTL Wawi 1.11.11 - Zahlungsabgleich bei FYRST Bank verlangt immer Passwort User helfen Usern - Fragen zu JTL-Wawi 0
Kundengruppenrabatte werden bei einzelnen Artikeln nicht übernommen – „Rabatte ignorieren“ springt nach Speichern zurück JTL-Wawi 2.0 0
Neu [API] Zahlungen bei salesOrders verbuchen Schnittstellen Import / Export 0
Neu Unerwünschtes Scrollen/Springen zum Seitenanfang bei Footer-Menüs (Mobile) JTL-Shop - Fehler und Bugs 0
Frage stellen bei Bestellung JTL-Wawi 1.11 1
Bei Update auf 2.05 kam folgende Meldung JTL-Wawi 2.0 2
Neu Fehleretikett bei OTTO Bestellungen bzgl. Adresszusatz JTL-ShippingLabels - Fehler und Bugs 2
Skonto wird bei Zahlung setzen nicht berücksichtigt JTL-Wawi 1.11 2
Wawi 1.11.9 Ständige Abstürze bei Aktualisierung Artikelstammdaten JTL-Wawi 1.11 4
Neu Helfen Lösungen wie Unicorn wirklich, um die teuren Preise bei JTL zu vermeiden? Amazon-Anbindung - Ideen, Lob und Kritik 1
Neu Erstellung der Sitemap bei WaWi Abgleich funktioniert nicht Allgemeine Fragen zu JTL-Shop 0

Ähnliche Themen