Neu Fehler bei SQL-Abfrage durch Aufgabenplanung

dein-brandstempel

Aktives Mitglied
20. November 2020
47
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
1.062
401
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
47
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
1.062
401
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.851
556
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.062
401
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
47
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
47
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
47
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
47
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
1.062
401
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.062
401
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
Gelöst Bekannte Störung: Fehler "Der Inhaltstyp text/html stimmt nicht mit text/xml überein" bei der Labelerstellung JTL-ShippingLabels - Fehler und Bugs 1
Neu Fehler bei Artikel Filter in der Wawi JTL-Wawi - Fehler und Bugs 2
Neu DPD Fehler bei der Anmeldung JTL-ShippingLabels - Fehler und Bugs 1
Neu Fehler bei der Anmeldung nach Update auf 1.11.5 Installation von JTL-Wawi 11
Neu eBay Angebotsimport : Fehler bei der Kommunikation mit dem eA-Server eBay-Anbindung - Fehler und Bugs 0
Neu Fehler beim Abgleich, aber nur 1 einer von 3 Shopify Shops Shopify-Connector 2
Aufträge auf die Pikliste legen bringt Fehler DataTreeListView JTL-Wawi 1.11 2
Neu Zyklische Fehler beim Listen von T-Shirts Amazon-Lister - Fehler und Bugs 3
Neu Fehler 35 XLM entspricht nicht der Konvention Plugins für JTL-Shop 4
Neu Varkombis Import Fehler "#VARKOMBI WIRD NICHT ANGELEGT#" JTL-Ameise - Fehler und Bugs 4
Neu Kartenzahlung Total amount Fehler JTL-POS - Fehler und Bugs 1
Neu Fehler mit der Kartenzahlung Einrichtung / Updates von JTL-POS 9
"Fehler beim Laden der Daten" in Liste Aufträge und Rechnungen JTL-Wawi 1.11 4
Neu Fehler DHL Paket Inetrnational Exportdokumente "Bitte geben Sie eine Beschreibung an" JTL-ShippingLabels - Fehler und Bugs 0
Neu Shopware 6.7.6.2 Fehler [No supported api version found.] 100 Shopware-Connector 1
Neu Probleme beim Lizenzkauf im Extension Store – PayPal-Fehler? Plugins für JTL-Shop 0
Neu eazyAuction eBay Fehler 2191421 – Telefonnummer ungültig eBay-Anbindung - Fehler und Bugs 1
Neu Fehler beim Update auf 1.11.5 - Ungültiger Objektname "dbo.tUpdateMigration User helfen Usern - Fragen zu JTL-Wawi 0
Neu Apache Protokoll GuzzleHttp/GET Fehler JTL-Shop - Fehler und Bugs 7
Neu eBay Abgleich lädt keine Daten Fehler eBay-Anbindung - Fehler und Bugs 0
Neu - Sorry, war doch kein Fehler - Allgemeine Fragen zu JTL-Shop 0
Neu Wo kann ich mich über JTL Kundencenter beschweren? 20 Minuten Lang einen Bug im Ticket dokumentiert, und am Ende "ein Fehler ist aufgetreten" Smalltalk 3
Neu Fehler Connector Shopify Collection not found Shopify-Connector 8
Neu Anzeigen der Zahlungsart, die bei der Zahlung gesetzt wird Eigene Übersichten in der JTL-Wawi 10
Versandkosten bei gemischten Steuersätzen JTL-Wawi 2.0 6
Neu Synchronisation funktioniert nur bei manchen Produkten Shopify-Connector 7
Neu Problem bei Varianten-Upload mit Amazon Lister 2.0 (Attribut-Mapping Farbe/Größe) Onlineshop-Anbindung 1
Neu Reihenfolge der Länder (bei der Versandkostenberechnung) Betrieb / Pflege von JTL-Shop 2
Neu Workflow Ereignis "Position hinzufügen" bei Angebote User helfen Usern - Fragen zu JTL-Wawi 0
Neu Kundenrabatte bei Auftragsimport JTL-Ameise - Fehler und Bugs 0
Neu Rückverfolgung des Verkaufskanal bei Angeboten aus dem Shop User helfen Usern - Fragen zu JTL-Wawi 3
Neu Rückverfolgung des Verkaufskanal bei Angeboten aus dem Shop Eigene Übersichten in der JTL-Wawi 0
Neu welche Sync Benutzer Daten in Shop und WAWI bei neu-Hosting über JTL Allgemeine Fragen zu JTL-Shop 0
welche Sync Benutzer Daten in Shop und WAWI bei neu-Hosting über JTL JTL-Wawi 1.11 0
Neu Gelangensbestätigungen bei innergemeinschaftlichen Lieferungen? User helfen Usern - Fragen zu JTL-Wawi 1
Neu SaaS Connector – product.push Performance-Problem bei Shopware 6.6 Shopware-Connector 1
Neu Ständig neue Angebote von JTL und Fallen bei Unaufmerksamkeit Smalltalk 26
Export Zahlungen Amazon marketplace bei Kombi OSS und FBA erfolgt nach JTL2DATEV unvollständig JTL-Wawi 1.9 0
Neu Massive 504 Timeouts bei Bot-Crawl (JTL-Hosting) – PHP-Worker-Pool als Flaschenhals? JTL-Shop - Fehler und Bugs 2
Neu Hinweisfeld bei Versandarten: HTML Code möglich? Betrieb / Pflege von JTL-Shop 7
Neu Hinweis bei B2B-IGL User helfen Usern - Fragen zu JTL-Wawi 5
Aktualisierung Artikelbilder bei Kaufland nicht möglich? kaufland.de - Anbindung (SCX) 0
Neu Fehlermeldung bei Farbänderung im Nova oder Nova Child Theme Templates für JTL-Shop 2
Skonto bei Barzahlung wird angezeigt, aber nicht vom Rechnungsbetrag abgezogen JTL-Wawi 1.9 11
Neu Bei Gutschein einlösen kein Rückgeld möglich Allgemeine Fragen zu JTL-POS 0
Neu SPAM durch die Eingabeseite bei den Kundendaten JTL-Shop - Fehler und Bugs 67
Inaktive Zahlungsart wird bei Eingangsrechnungen angezeigt JTL-Wawi 1.11 0
Neu Shopify Connector Fehlermeldung bei Kategoriebildern Shopify-Connector 6
Neu Eigenen Firmennamen bei eingehenden Anrufen anzeigen lassen Smalltalk 2
Neu Bei Abgleich steuerfreie Lieferung VAT ID importieren Shopify-Connector 3

Ähnliche Themen