Übersicht #
Nach den jüngsten Aktualisierungen der mssql-tools Bei der Ausführung von Abfragen mit diesem Paket kann es zu unerwartetem Verhalten kommen. sqlcmdEin typisches Befehlsbeispiel:
/usr/local/relianoid/app/libexec/sqlcmd -S -U -P -Q "select count(*) from TABLE_0;"
In einigen Fällen werden Abfragefehler nicht korrekt als Befehlsfehler zurückgegeben, was sich auf Skripte, Automatisierungs- oder Überwachungsprozesse (wie z. B. Farmguardian-Integritätsprüfungen) auswirken kann, die auf Exit-Codes angewiesen sind.
Verursachen #
Dieses Problem ist auf Folgendes zurückzuführen: Verhaltensänderung im sqlcmd Nutzen, inbegriffen in mssql-tools Paket.
Standardmäßig sqlcmd:
- Gibt SQL-Fehler auf der Standardausgabe (stdout) aus.
- Beeinflusst die Es wird kein Exit-Code ungleich Null zurückgegeben. wenn eine Abfrage fehlschlägt
Das bedeutet, dass der Befehl aus Sicht des Skripters auch dann als erfolgreich erscheinen kann, wenn bei der SQL-Abfrage ein Fehler auftritt.
Lösung #
Um sicherzustellen, dass SQL-Abfragefehler ordnungsgemäß behandelt und als Befehlsfehler zurückgegeben werden, fügen Sie Folgendes hinzu: -b Parameter in der sqlcmd Befehl.
Aktualisierter Befehl:
/usr/local/relianoid/app/libexec/sqlcmd -b -S -U -P -Q "select count(*) from TABLE_0;"
Funktionsweise #
Das -b Option ändert sqlcmd Das Verhalten stellt sich wie folgt dar:
- Ursachen
sqlcmdzu Beenden mit einem Statuscode ungleich Null wenn ein Fehler auftritt - Sendet Fehlermeldungen an Standardfehler (stderr) statt Standardausgabe
- Ermöglicht die korrekte Fehlererkennung in Skripten und Automatisierungstools.
Warum dies wichtig ist #
Ohne das -b Flagge:
- Überwachungssysteme erkennen möglicherweise keine fehlgeschlagenen Abfragen.
- Automatisierungsskripte können trotz Fehlern weiterhin ausgeführt werden.
- Die Fehlersuche wird durch irreführende Erfolgsmeldungen erschwert.
Beim Hinzufügen -bstellen Sie sicher:
- Genaue Fehlerbehandlung
- Zuverlässiges Skriptverhalten
- Ordnungsgemäße Integration mit Systemüberwachung und Alarmierung
Zusätzliche Bemerkungen #
- Dieses Verhalten ist spezifisch für die
sqlcmdWerkzeug aus dem mssql-tools Paket - Bestehende Skripte sollten überprüft und entsprechend aktualisiert werden.
- Auf der SQL-Serverseite sind keine Änderungen erforderlich.
Zusammenfassung #
Eine Änderung in sqlcmd Dieses Verhalten kann verhindern, dass SQL-Fehler ordnungsgemäß gemeldet werden. -b Der Parameter stellt sicher, dass Abfragefehler korrekt über Exit-Codes und Fehlermeldungen weitergegeben werden, wodurch eine zuverlässige Automatisierung und Überwachung gewährleistet wird.