Neu Fehler bei SQL-Abfrage durch Aufgabenplanung

dein-brandstempel

Aktives Mitglied
20. November 2020
45
17
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
838
299
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
45
17
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
838
299
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.722
516
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
838
299
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
45
17
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: 9
  • Screenshot 2024-07-03 095701.png
    Screenshot 2024-07-03 095701.png
    78,6 KB · Aufrufe: 9
  • Screenshot 2024-07-03 101940.png
    Screenshot 2024-07-03 101940.png
    35,7 KB · Aufrufe: 9

dein-brandstempel

Aktives Mitglied
20. November 2020
45
17
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
45
17
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
45
17
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
838
299
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
838
299
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 Fehler bei der Installation in der defines.php Installation / Updates von JTL-Shop 9
Beantwortet Workflow - Versandart ändern bei Fehler JTL-Workflows - Ideen, Lob und Kritik 2
In Bearbeitung Gmail Anbindung zu POS weg, bei Mail-Einrichtung zeigt er Fehler "10:" Einrichtung / Updates von JTL-POS 4
Seit Update auf 1.9.6.5 Fehler bei Bestellabschluss, aber Bestellung geht ein JTL-Wawi 1.9 7
Fehler beim Abgleich mit Shopify – „Unknown column 'sort'“ & Bildlöschung blockiert Worker Shopify-Connector 1
Verschiedenste Fehler im Reiter "Zahlungen" JTL-Wawi 1.9 0
Neu Hochladen Artikel nicht möglich wg. Fehler (Shopware) User helfen Usern - Fragen zu JTL-Wawi 0
Neu FEHLER mit JTL Shipping und DHL - Empfängerunterschrift wird nicht gebucht JTL-ShippingLabels - Fehler und Bugs 3
Neu Amazon Fehler beim Abgleich Amazon-Anbindung - Fehler und Bugs 24
Neu Kann kein Auftrag Anlegen, Fehler 9157 JTL-Wawi - Fehler und Bugs 1
Neu Kunde zusammenführen - Fehler: Die Kunden haben unterschiedliche Konten im selben Onlineshop JTL-Wawi - Fehler und Bugs 0
Neu Fehler beim Grundpreis einspielen JTL-Ameise - Fehler und Bugs 0
Fehler beim Update JTL-Wawi JTL-Wawi 1.9 3
Neu Plugin führt zu Abgleich fehler Technische Fragen zu Plugins und Templates 0
Neu Abgleichs Fehler Warnung User helfen Usern - Fragen zu JTL-Wawi 0
Neu WooCommerce Connector Fehler: Shop-URL verweist nicht auf einen gültigen Shop WooCommerce-Connector 3
Leitweg / Zugpferd / xRechnung: Fehler - Werte werden nicht erkannt !? JTL-Wawi 1.9 1
Neu Lagerumbuchung, Fehler zu wenig Arbeitsspeicher ? User helfen Usern - Fragen zu JTL-Wawi 4
Neu Unbehandelte Ausnahme #959190594F6282F Artikel-Senden-Fehler Shopify-Connector 6
Neu Shopware 6 Connector meldet Auth Fehler Shopware-Connector 2
Neu Google Search Console: 5xx-Fehler für nicht indexierte Seiten mit URL-Parametern – Warum? Betrieb / Pflege von JTL-Shop 3
Neu Kassenbuch Fehler nach Update JTL-POS - Fehler und Bugs 7
Neu Amazon Lister 2.0 Bekleidungsgröße Fehler 90004205 Amazon-Lister - Fehler und Bugs 0
Hilfe benötigt - Amazon-Fehler wegen fehlender GPSR-Informationen in JTL Amazon-Lister - Fehler und Bugs 1
Neu JTL Worker Fehler - Amazon Abgleich soll nicht durchgeführt werden Amazon-Anbindung - Fehler und Bugs 18
Hersteller erfassen geht nicht. Fehlermeldung: Es liegen Fehler vor JTL-Wawi 1.9 2
Beantwortet Fehler beim Abgleich WooCommerce-Connector 1
Neu Fehler TSE auf Bon JTL-POS - Fehler und Bugs 0
Neu Fehler: Eine Bestellung wird nicht mit Wawi synchronisiert JTL-Shop - Fehler und Bugs 2
In Bearbeitung Fehler / Exception Buchungsdaten-Export JTL-POS - Fehler und Bugs 7
In Bearbeitung Kassenbuch Fehler nach Update JTL-POS - Fehler und Bugs 13
Neu JTL Shop Anzeige Fehler Amazon Pay Button und Paypal Pay Button Allgemeine Fragen zu JTL-Shop 3
Neu JTL Datenbankverwaltung / Datenimport funktioniert fehler User helfen Usern - Fragen zu JTL-Wawi 5
Wawi Fehler beim Upload 1.9 JTL-Wawi 1.9 1
Fehler beim Update von 1.9.4.6 auf 1.9.6.5 - HILFE JTL-Wawi 1.9 4
Neu Seit update auf version 5.4 habe ich den Fehler das die Shop class nicht mehr gefunden wird. Technische Fragen zu Plugins und Templates 4
Neu Fehler im Abgleich zum Shop / Language ISO PrestaShop-Connector 1
Neu Fehler im Zahlungsabgleich (Zahlung 31.12.2024 - Wertstellung 2.1.2025) JTL-Wawi - Fehler und Bugs 0
Neu Installation MS SQL 2022 Express: Fehler beim Warten auf das Wiederherstellungshandle des Datenbankmoduls Installation von JTL-Wawi 9
Neu Lieferanten Lieferzeiten werden nicht bei WooCommerce abgleich berücksichtigt WooCommerce-Connector 6
Neu Problem bei Update 1.7.11 zu 1.7.14 Installation von JTL-Wawi 1
Neu Bildgrösse bei swatches Allgemeine Fragen zu JTL-Shop 0
In Diskussion Bestand aus bestimmten Lager bei Auftragserstellung abfragen JTL-Workflows - Ideen, Lob und Kritik 5
Neu Größentabelle bei Artikel anzeigen Allgemeine Fragen zu JTL-Shop 3
Artikel werden bei Ebay und im Shop willkürlich gelöscht JTL-Wawi 1.9 0
Keine Preise bei Import von Aufträgen JTL-Wawi 1.9 5
Neu Fehlende Metadaten bei eBay Schnittstellen-Anbindung eBay-Anbindung - Fehler und Bugs 1
Neu Gastkunde registriert sich bei zweiter Bestellung - und die Wawi bekommt es nicht mit! Shopware-Connector 0
Neu Fehlermeldung bei Versand Schweiz - Gewicht wäre falsch Arbeitsabläufe in JTL-Wawi 1
Neu Übertragungsproblem der Kategorien bei der Shopware-Integration Shopware-Connector 0

Ähnliche Themen