Neu Fehler bei SQL-Abfrage durch Aufgabenplanung

dein-brandstempel

Aktives Mitglied
20. November 2020
44
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
769
275
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
44
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
769
275
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.606
486
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
769
275
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
44
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
44
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
44
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
44
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
769
275
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
769
275
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
Fehler bei Umlagerung zu FBA - Wawi 1.9.6.1 JTL-Wawi 1.9 0
Fehler bei Zahlungsart Einrichtung JTL-Shop5 2
Neu Fehler bei Update: Error "SQLSTATE[42S02]: Base table or view not found: 1146 Table 'web10_14.plugin_state_log' doesn't exist" in migration.... Installation / Updates von JTL-Shop 1
Update 1.9.6.1 weitere Verkaufskanäle fehler bei Abgleich JTL-Wawi 1.9 1
Neu Fehler 500 bei Versandmeldung an Amazon über JTL-eazyAuction Amazon-Anbindung - Fehler und Bugs 1
Fehler bei Rechnungsdatenserverice 2.0 JTL-Wawi 1.9 2
Neu Fehler bei Coupons bei Wechsel von 4 auf 5 Betrieb / Pflege von JTL-Shop 0
In Diskussion Log bei Workflow Fehler JTL-Workflows - Ideen, Lob und Kritik 0
Neu Fehlermeldung: Fehler bei der Kommunikation mit dem eA-Server eBay-Anbindung - Fehler und Bugs 3
Fehler bei Update von 1.5.55.8 auf 1.7.15.6 ( Unbehandelte Ausnahme #7110FFD83C0136E0 vom Typ JTL.Database.SqlUpdater.UpdateException) JTL-Wawi 1.7 0
Neu Fehler bei Abgleich JTl Wawi mit JTL Shop User helfen Usern - Fragen zu JTL-Wawi 2
Neu Fehler bei Connector Shopify-Connector 4
Neu Fehler bei Export mit Versandart DHL / Die Sequenz enthält keine Elemente. JTL-ShippingLabels - Fehler und Bugs 3
Fehler bei Hochladen der Versanddaten Otto.de - Anbindung (SCX) 0
Neu Fehler bei Update: "SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'emails' already exists" Installation / Updates von JTL-Shop 4
Neu "Noch X € und wir versenden kostenfrei" hat einen Fehler Betrieb / Pflege von JTL-Shop 0
Neu Worker Abgleich Fehler Onlineshop-Anbindung 1
Neu ++ Fehler beim update von 1.55.5.3 auf version 1.8.11.0 ++ Installation von JTL-Wawi 8
Neu Warenpost Fehler - gültige Telefonnummer an. Code: 1101 JTL-ShippingLabels - Fehler und Bugs 1
Neu Prestashop 8.1.7 neuster Connector Fehler beim einlesen von Bestellungen PrestaShop-Connector 1
paypal zahlunbgsabgleich bringt fehler JTL-Wawi 1.9 0
Neu SQL DB läuft mit Fehler voll und crasht Server JTL-Shop - Fehler und Bugs 1
Google Search Console - Crawling-Fehler: Robots.txt nicht erreichbar Einrichtung JTL-Shop5 6
Neu Fehler mit Zugriff auf die Datenbank (Exec Direct). Installation von JTL-Wawi 4
Neu Amazon Lister 2.0 Fehler 90248 Textilbereich Amazon-Lister - Fehler und Bugs 0
Neu Fehler 500 mit NOVAchild 5.3.1 in JTL-Shop 5.33 Templates für JTL-Shop 2
Neu JTL FEHLER! - JTL sendet falschen ISO-Code - Nordirland Versand mit DHL nicht mehr möglich JTL-ShippingLabels - Fehler und Bugs 5
Neu Workflow Fehler User helfen Usern - Fragen zu JTL-Wawi 1
Fehler von der Kaufland API: productData.attributes.battery_disposal_instruction: No matching model found in additionalProperties to validate battery_ kaufland.de - Anbindung (SCX) 0
ERROR - Hersteller-Senden-Fehler PrestaShop-Connector 0
Neu Fehler beim Zugrif aus die Datenbank (Exec Direct) JTL-Wawi - Fehler und Bugs 1
Neu Fehler im Statistik Modul User helfen Usern - Fragen zu JTL-Wawi 0
Neu Wawi Fehler - Auftrag öffnet im Hintergrund JTL-Wawi - Fehler und Bugs 8
Wawi 1.9.5.0 Zahlungsmodul Paypal Fehler + Bankkonto Fehler JTL-Wawi 1.9 30
Neu Fehler: "Abgleich soll nicht durchgeführt werden" Amazon-Anbindung - Fehler und Bugs 3
Neu Plugin: WooCommerce Wallet oder Gutscheine mit JTL nutzen - Fehler in der MwSt User helfen Usern - Fragen zu JTL-Wawi 0
Neu JTL Plugin fuer Wordpress Plugin wirft Error/success Fehler WooCommerce-Connector 2
Neu Amazon Abgleich Fehler: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt Amazon-Anbindung - Fehler und Bugs 18
Neu Fehler-Log - Error executing query SELECT SUM JTL-Shop - Fehler und Bugs 3
Neu Amazon Abgleich Fehler Gelöste Themen in diesem Bereich 6
Neu DPD Fehler Etikettendruck ("An existing connection was forcibly closed by the remote host") Gelöste Themen in diesem Bereich 3
Neu JTL Shop 5 Fehler beim Abglich JTL-Shop - Fehler und Bugs 9
Neu Nach Datenbank-Migration Fehler: keine Lieferzeit usw. JTL-Shop - Fehler und Bugs 1
PayPal Zahlungsabgleich Ausgang Fehler 10001 Internal Error JTL-Wawi 1.8 0
Neu Dringende Hilfe benötigt: JTL-Connector Fehler beim Shopware-Abgleich Shopware-Connector 15
Neu Amazon Abgleich Fehler - Hotfix für Version 1.5.55.8 funktioniert nicht JTL-Wawi - Fehler und Bugs 7
Fehler beim Update des Mandaten easybusiness JTL-Wawi 1.9 2
Neu Klappt bei euch die Schnittstelle? Shopware-Connector 1
Runterladen alter Bestellung bei Aktivierung der Schnittstelle Otto.de - Anbindung (SCX) 0
Plötzlich Zahlungsziel bei Auftragseingängen JTL-Wawi 1.8 0

Ähnliche Themen