Dies ist der Befehl sqsh, der beim kostenlosen Hosting-Anbieter OnWorks über eine unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, den Windows-Online-Emulator oder den MAC OS-Online-Emulator ausgeführt werden kann
PROGRAMM:
NAME/FUNKTION
sqsh – Interaktive Datenbank-Shell (Version 2.1.7)
ZUSAMMENFASSUNG
sqsh [[Optionen]] [[Argumente......]]
[ -a count ]
[ -A Paketgröße ]
[ -B ]
[ -B ]
[ -c [cmdend] ]
[ -C sql ]
[-d Schweregrad]
[-D Datenbank]
[ -e ]
[-E Editor]
[-f Schweregrad]
[ -G tds_version ]
[ -H ]
[ -H Hostname ]
[ -i Dateiname ]
[-I Schnittstellen]
[-J Zeichensatz]
[ -k Schlüsselwörter ]
[ -K Keytab]
[ -l debug_flags ]
[ -L var=Wert ]
[-m Stil]
[ -n ein|aus ]
[ -N Appname ]
[ -o Dateiname ]
[ -P ]
[ -P [Passwort] ]
[ -Q query_timeout ]
[ -r [sqshrc] ]
[ -R Serverprinzipal ]
[ -s colsep ]
[-S Server]
[ -t [Filter] ]
[ -T login_timeout ]
[ -U Benutzername ]
[ -v ]
[ -V [bcdimoqru]]
[ -w Breite ]
[ -X ]
[ -y Verzeichnis ]
[ -z Sprache ]
[ -Z [secmech|default|none] ]
BESCHREIBUNG
Sqsh (ausgesprochen Skwish) ist die Abkürzung für SQshelL (ausgesprochen Sq-Shell) und ist als gedacht
Ersatz für das ehrwürdige Programm „isql“ von Sybase. Es kam dadurch zustande
Jahre der Frustration über den Versuch, echte Arbeit mit einem Programm zu leisten, das nie dafür gedacht war
echte Arbeit leisten.
Sqsh ist viel mehr als nur eine nette Eingabeaufforderung, es soll einen Großteil der Funktionalität bereitstellen
bereitgestellt durch eine gute Shell, wie Variablen, Aliasing, Umleitung, Pipes, Hintergrund,
Jobsteuerung, Verlauf, Befehlsersetzung und dynamische Konfiguration. Auch als Neben-
Produkt des Designs, es ist bemerkenswert einfach zu erweitern und Funktionalität hinzuzufügen.
OPTIONAL
Die folgenden Optionen können verwendet werden, um einige Verhaltensweisen von sqsh anzupassen, auch wenn sie umfangreich sind
Ein Teil der Konfigurationsoptionen ist nur über Umgebungsvariablen verfügbar
Dies kann zur Laufzeit oder über eine .sqshrc-Datei festgelegt werden.
Optionen können auch in der SQSH-Umgebungsvariablen bereitgestellt werden. Diese Variable wird analysiert
vor dem Parsen der Befehlszeile, sodass die Befehlszeile in den meisten Fällen das überschreibt
Inhalt der Variablen. Beachten Sie, dass es sich um Optionen handelt, die bereitgestellt werden dürfen
mehrfach, z.B -c, indem Sie sie sowohl in einer Variablen als auch in der Befehlszeile bereitstellen
Dies entspricht der mehrfachen Eingabe in der Befehlszeile.
-eine Zählung
Legt das Maximum fest zählen der Fehler (wie durch die Variable $thresh_fail bestimmt) dass
kann auftreten, bevor sqsh abbricht. Wenn Sie diesen Wert auf 0 setzen, bedeutet dies, dass sqsh dies nicht tun sollte
Bei Fehlern beenden. Dieser Wert ist standardmäßig 0 und kann auch mit $thresh_exit festgelegt werden
Variable. Siehe Sektion EXIT STATUS .
-Eine Paketgröße
Gibt die Größe der Netzwerk-TDS-Pakete an, die für die Kommunikation mit dem SQL-Server verwendet werden.
Dieser Wert muss zwischen 512 und 8192 liegen und ein Vielfaches von 512 sein. Überprüfen Sie Ihre SQL
Serverkonfiguration zur Ermittlung unterstützter Paketgrößen. Dieser Wert kann auch sein
Wird zur Laufzeit mithilfe der Variablen $packet_size angegeben.
-b Unterdrückt die Bannermeldung beim Start. Dies ist in Fällen unnötig, in denen stdout
wurde in eine Datei umgeleitet. Diese Option kann auch über die Variable $banner festgelegt werden.
-B Deaktiviert die gesamte Pufferung von stdin, stdout und stderr. Mit dieser Funktion kann sqsh sein
wird über ein interaktives Steuerskript wie „Chat“ und „Expect“ ausgeführt.
-c [cmdend]
Intern stellt sqsh den Befehl bereit \gehen um einen SQL-Stapel an die Datenbank zu senden und
stellt einen einzelnen Alias bereit, go für diesen Befehl. Jedes Mal cmdend erhält einen neuen Alias
für \gehen ist etabliert.
-C SQL
Verursacht die SQL Befehl, der von sqsh ausgeführt werden soll, ähnlich dem gezeigten Verhalten
durch das Flag -i. Das SQL Die Anweisung darf keine doppelten Anführungszeichen enthalten (diese Einschränkung kann sein).
wird in einer zukünftigen Version von sqsh aufgehoben).
-d Schweregrad
Legt den minimalen SQL Server-Fehlerschweregrad fest, der dem Benutzer angezeigt wird. Der
Der Standardwert ist 0 und die gültigen Bereiche liegen zwischen 0 und 22. Dies kann auch mit festgelegt werden
$thresh_display-Variable. Siehe Sektion EXIT STATUS.
-D-Datenbank
Veranlasst, dass sqsh versucht, mit dem auf eingestellten Datenbankkontext zu starten Datenbank statt
Ihre Standarddatenbank (normalerweise Master). Dies kann auch über die $database eingestellt werden
variabel.
-e Schließt jeden an sqsh ausgegebenen Befehl ein, der in die Ausgabe einbezogen werden soll. Diese Option kann
kann auch über die Variable $echo festgelegt werden (die nichts mit der zu tun hat). \Echo Befehl).
-E-Editor
Legen Sie den Standardeditor auf fest Herausgeber. Dies kann auch über die UNIX-Umgebung eingestellt werden
Variable $EDITOR auf den Namen des gewünschten Editors.
-f Schweregrad
Legt das Minimum fest Schwere Level wird von sqsh als Fehler angesehen. Das ist das Gleiche wie
Festlegen der Variablen $thresh_fail. Siehe Sektion EXIT STATUS .
-G tds_version
Legen Sie die zu verwendende TDS-Version fest. Gültige Versionen sind 4.0, 4.2, 4.6, 4.9.5, 5.0 und freetds
Unterstützt zusätzlich die Versionen 7.0 und 8.0. Der angegebene Wert wird dem zugewiesen
Variable $tds_version. Die Eingabevalidierung wird von sqsh nicht durchgeführt. Wenn jedoch ein
Wenn eine ungültige TDS-Version angegeben ist, wird die Standardversion 5.0 verwendet. Nach einer
Wenn die Sitzung eingerichtet ist, wird die Variable $tds_version auf die gültige TDS-Version gesetzt.
Die Variable ist nicht verfügbar, wenn die Option -G nicht verwendet wird. Gedacht zum Testen und
Nur zu Debugzwecken.
TDS steht für Tabular Data Stream und ist das Kommunikationsprotokoll von Sybase
Microsoft verwendet für die Client-Server-Kommunikation.
-h Deaktiviert Spaltenüberschriften und nachgestellte Zeilen „(# betroffene Zeilen)“ aus der Batch-Ausgabe.
-H Hostname
Legt den Client-Hostnamen fest, wie in sysprocesses gemeldet. Dies kann auch über eingestellt werden
$hostname-Variable.
-i Dateiname
Lesen Sie alle Eingaben von Dateinamen statt von stdin.
-I-Schnittstellen
Wenn eine Verbindung zur Datenbank hergestellt wird, wird die Schnittstellen Die Datei wird zum Drehen verwendet
den Wert von $DSQUERY in den Hostnamen und Port, zu dem die Verbindung hergestellt werden soll,
standardmäßig befindet sich diese in $SYBASE/interfaces. Dieses Flag ermöglicht diese Standardeinstellung
überschrieben.
-J Zeichensatz
Gibt den Zeichensatz an, der auf der Clientseite für die Kommunikation mit SQL verwendet werden soll
Server. Dies kann auch über die Umgebungsvariable $charset festgelegt werden.
-k Schlüsselwörter
Gibt eine Datei an, die eine Liste von Schlüsselwörtern enthält, die für die Schlüsselwort-Tab-Vervollständigung verwendet werden sollen.
wenn die Readline-Unterstützung in sqsh kompiliert wurde. Diese Datei kann auch über eingestellt werden
Variable $keyword_file, die standardmäßig $HOME/.sqsh_words ist.
-K Keytab
Kerberos-Unterstützung. Geben Sie den Namen der Keytab-Datei für DCE an.
Weitere Informationen finden Sie im Abschnitt Kerberos-Unterstützung weiter unten.
-l debug_flags
Wenn sqsh mit -DDEBUG kompiliert wurde, kann diese Option zum Ein- und Ausschalten verwendet werden
Debugging-Optionen. Siehe die Variable $debug unten.
-L var=Wert
Setzt den Wert von $var auf Wert. Dies kann verwendet werden, um den Wert eines beliebigen Sqsh festzulegen
Variable, auch wenn eine explizite Befehlszeilenvariable zum Festlegen der angegeben wird
Variable. Das -L Flag kann verwendet werden, um den Wert von Nicht-Konfigurationsvariablen festzulegen
Gut.
-m-Stil
Ändert den aktuellen Anzeigestil in Stil. Derzeit unterstützte Stile sind horizontal,
vert, bcp, csv, html, Ziel, ziemlich und keine. Der aktuelle Anzeigestil kann ebenfalls eingestellt werden
mit der Variablen $style oder über die -m Fahne zum \gehen Befehl.
-n ein|aus
Aktiviert den verketteten Transaktionsmodus beim Herstellen einer Verbindung (sofern aktiviert). Verketteter Transaktionsmodus
wird auch als „AutoCommit aus“-Modus bezeichnet.
-N Appname
Legen Sie den Anwendungsnamen fest, den sqsh verwendet, um sich gegenüber dem SQL-Server zu identifizieren. Der
Der Anwendungsname kann mithilfe der Spalte vom Server abgerufen werden Programmname dauert ebenfalls 3 Jahre. Das erste Jahr ist das sog.
master.dbo.sysprocesses-Tabelle. Standardmäßig ist sqsh-2.1.7.
-o Dateiname
Leitet die gesamte Ausgabe um Dateinamen statt Standard.
-p Zeigt Leistungsstatistiken nach Abschluss jedes SQL-Batches an. Diese Option kann
kann auch über die Variable $statistics oder durch Angabe von aktiviert werden -p Fahne zum \gehen
Befehl.
-P [Passwort]
Die Sybase Passwort für Benutzername zum Herstellen einer Verbindung erforderlich Server (Standard: NULL). Der
Passwort kann auch über $password eingestellt werden. Die Angabe des Passworts „-“ führt dazu, dass
Passwort, das aus der ersten Zeile von stdin gelesen werden soll.
sqsh bemüht sich, das Passwort vor jedem Benutzer zu verbergen, der versucht, die Befehlszeile anzuzeigen
Wird zum Starten von sqsh verwendet, also mit -P sollte keine Sicherheitslücke darstellen.
Alternativ können Sie Ihr Standardkennwort in der Datei .sqshrc speichern, was nicht der Fall ist
für niemanden außer Ihnen selbst lesbar. (chmod 600 .sqshrc)
-Q-Wert
Zeitüberschreitungswert für die Abfrage (entspricht der Option -t von isql). Wenn festgelegt, erfolgt eine lange Zeitüberschreitung
laufende Abfrage. Karten zum $query_timeout variabel.
Beispielsweise:
sqsh -SASE1502 -Usa -P -Q30
ASE1502.sa.master.1> CD-Tix
ASE1502.sa.tix.1> select count(*) from E_TIX;
Kundennachricht öffnen
Schicht 1, Ursprung 2, Schweregrad 2, Nummer 63
ct_results(): Benutzer-API-Ebene: interner Clientbibliotheksfehler:
Beim Lesen vom Server ist eine Zeitüberschreitung aufgetreten.
ASE1502: Zeitüberschreitung bei Abfrage oder Befehl erkannt, Befehl/Batch abgebrochen
ASE1502: Die Clientverbindung hat dies 1 Mal erkannt.
Siehe auch die $max_timeout Variable, die die Anzahl der Timeouts steuert
treten bei der aktuellen Verbindung auf, bevor die Sitzung abgebrochen wird.
-r [sqshrc]
Gibt eine Alternative an .sqshrc Datei, die verarbeitet werden soll, und nicht die Standarddatei. Wenn nein
sqshrc wird im Folgenden mitgeliefert -r, dann werden keine Initialisierungsdateien verarbeitet. Diese Flagge
sollen das erste Argument sein, das in der Befehlszeile angegeben wird, alle anderen Instanzen werden es sein
ignoriert.
-R server_principal
Kerberos-Unterstützung: Gibt a an Server Haupt- zur Verwendung im Netzwerk (Kerberos)
Authentifizierung, wenn der Servername in der Schnittstellendatei vom tatsächlichen Server abweicht
Namen.
Weitere Informationen finden Sie im Abschnitt Kerberos-Unterstützung weiter unten.
-s colsep
Verursacht die Zeichenfolge colsep wird verwendet, um die Ausgabespalten der SQL-Spalte abzugrenzen
Der Standardwert ist „“.
-S-Server
Der Name der Sybase Server Um eine Verbindung herzustellen, ist die Standardeinstellung die externe
Umgebungsvariable $DSQUERY. Wenn weder -S noch $DSQUERY gesetzt ist, dann ist der Standardwert
„SYBASE“. Dieser Wert kann auch über die interne Variable $DSQUERY gesetzt werden.
-t [Filter]
Ermöglicht das Filtern von Befehlsstapeln über ein externes Programm. Filter, und vor
an den SQL Server gesendet wird. Wenn Filter nicht angegeben, dann wird $filter_prog verwendet
(Standard ist 'm4 -'). Dieser Wert kann auch über $filter und $filter_prog festgelegt werden
Variablen.
-T-Wert
Gibt das Anmelde-Timeout an (ähnlich dem Flag -l von isql). Wenn gesetzt, wird die Nummer angegeben
von Sekunden sqsh wird warten, bevor eine Anmeldeanforderung abläuft. Karten zum
$login_timeout variabel.
-U Benutzername
Die Sybase Benutzername Um eine Verbindung zur Datenbank herzustellen als, wird standardmäßig der Benutzername von verwendet
Der Benutzer läuft sqshdem „Vermischten Geschmack“. Seine Benutzername kann auch über die Variable $username festgelegt werden.
-v Zeigt die Versionsnummer, $version und Exits an.
-V [bcdimoqru]
Kerberos-Unterstützung: Geben Sie die zu verwendenden Sicherheitsoptionen an.
Weitere Informationen finden Sie im Abschnitt Kerberos-Unterstützung weiter unten.
-w Breite
Die maximale Leistung Breite eines angezeigten Ergebnissatzes entspricht dies standardmäßig Ihrer Bildschirmbreite
im interaktiven Modus.
-X Initiiert die Anmeldeverbindung zum Server mit clientseitiger Passwortverschlüsselung (falls
unterstützt). Wenn entweder SQL Server diese Option nicht erkennt oder die Version von
CT-Lib wird zum Kompilieren verwendet sqsh Wenn diese Option nicht unterstützt wird, wird sie ignoriert.
Diese Option kann auch mithilfe der Umgebungsvariablen $encryption festgelegt werden.
-y Verzeichnis
Gibt eine SYBASE an Verzeichnis zum Suchen einen anderen Wert als den Wert von $SYBASE verwenden
die Interfaces-Datei.
-z Sprache
Gibt eine Alternative an Sprache um Sqsh-Eingabeaufforderungen und -Meldungen anzuzeigen. Ohne das -z
Flag wird die Standardsprache des Servers verwendet. Dies kann auch über eingestellt werden
$Sprachvariable.
-Z [secmech|default|none]
Kerberos-Unterstützung: Geben Sie den zu verwendenden Sicherheitsmechanismus an.
Weitere Informationen finden Sie im Abschnitt Kerberos-Unterstützung weiter unten.
Argumente...
Wenn sqsh mit ausgeführt wird -i Flag, das eine zu verarbeitende Eingabedatei angibt (statt
(Initiieren einer interaktiven Sitzung) können Argumente in der Befehlszeile bereitgestellt werden
an die Eingabedatei übergeben werden. Auf diese Argumente kann über die Variablen ${0},
${1}, ... (siehe Variablen Weitere Informationen finden Sie im Abschnitt unten.
Initialisierung
Beim Start initialisiert sqsh alle internen Umgebungsvariablen, Befehle und Aliase
auf ihre Standardwerte zurückgesetzt, sucht es dann in der systemweiten Konfigurationsdatei, /etc/sqshrc,
gefolgt von einer lokalen Konfigurationsdatei $HOME/.sqshrc (dies kann überschrieben werden).
Externe Umgebungsvariable SQSHRC). Wenn diese Datei gefunden wird, wird sie wie eine ausgeführt
Das Skript würde das verwenden -i Flagge.
Das .sqshrc Die Datei kann jedoch alles enthalten, was normalerweise an der Eingabeaufforderung eingegeben werden könnte
Es ist zu beachten, dass sqsh zum Zeitpunkt des Lesens dieser Datei noch keine Datei erstellt hat
Verbindung zur Datenbank, jedoch die meisten Befehle, die Datenbankaktivitäten ausführen, wie z
\gehen wird bei der Ausführung versuchen, eine Datenbankverbindung herzustellen (möglicherweise werden Sie auch dazu aufgefordert).
(ggf. für ein Passwort). Auch wenn bei diesem Start eine Datenbankaktivität erforderlich ist
Datei, die \verbinden Befehl (siehe BEFEHLE, unten) ausgeführt werden.
Nach dem .sqshrc Datei wurde ausgeführt, sqsh analysiert dann alle Befehlszeilenoptionen (also
alle in Ihrem festgelegten Variablen .sqshrc (Datei kann durch Befehlszeilenoptionen überschrieben werden).
Im Anschluss daran, wenn sqsh wird im interaktiven Modus (also ohne) ausgeführt -i und wenn stdin ist
an ein TTY angehängt), sucht es dann nach .sqsh_history und lädt den Inhalt dieser Datei
in diesen Verlaufspuffer (siehe PUFFER, unter).
Unmittelbar vor dem Herstellen einer Verbindung zur Datenbank (entweder beim Start oder
durch eine explizite \verbinden or \erneut verbinden Befehl) wird die Datei $HOME/.sqsh_session ausgeführt.
Der Name dieser Datei kann mit der Variablen $session überschrieben werden.
Befehl Linie
Wenn eine Zeile zum ersten Mal gelesen wird sqsh, das erste Wort wird von der Zeile getrennt. Dieses Wort
wird dann aller Variablen erweitert (siehe Variable Substitution, unten), gefolgt vom Befehl
Erweiterung (siehe Befehl Substitution, unter). Das erste Wort der resultierenden Zeichenfolge ist
Anschließend wird analysiert, ob es gültig ist sqsh Befehl oder Alias.
Das sqsh Die Befehlszeile folgt vielen der gleichen Regeln wie die Bourne-Shell und ermöglicht Dateien
Umleitung, Pipelining, Befehlsersetzung und Hintergrundverarbeitung über dieselbe Syntax.
Ihre Nachricht
Jede Zeile, die mit a beginnt # gefolgt von einem nicht alphanumerischen Zeichen (jedem anderen Zeichen).
als 0-9, az, AZ und _) führt dazu, dass die gesamte Zeile ignoriert wird. Wegen des Möglichen
Wenn es zu einer Kollision mit T-SQL-sitzungsspezifischen temporären Tabellennamen kommt, wird die Zeile nicht ignoriert, wenn
das erste Zeichen nach dem #, ist alphanumerisch.
Zitieren
Anführungszeichen werden verwendet, um die Interpretation spezieller Schlüsselwörter oder Zeichen für sqsh zu verhindern.
wie Leerzeichen, Variablenerweiterung oder Befehlsersetzung. Es gibt drei Arten von
zitieren, Flucht, Einzelzitate und Anführungszeichen.
Durch das Einschließen von Zeichen in einfache Anführungszeichen bleibt die wörtliche Interpretation der einzelnen Zeichen erhalten
Zeichen, die in den Anführungszeichen enthalten sind. Ein einzelnes Anführungszeichen darf nicht in einfachen Anführungszeichen stehen.
auch wenn eine Flucht vorausgeht. Zum Beispiel:
1> \echo Ich kann '$username' nicht erweitern
Ausgänge
Ich kann $username nicht erweitern
Die Zeichen \\ werden verwendet, um die Bedeutung von zu umgehen (und somit die Interpretation zu verhindern).
der Charakter, der ihnen unmittelbar folgt. Das \-Zeichen selbst kann maskiert werden. Für
Beispiel:
1> \echo Ich kann '$username' nicht erweitern
Ausgänge
Ich kann $username nicht erweitern
Das Escape-Zeichen kann auch verwendet werden, um eine neue Zeile zu maskieren, um eine Zeile auszuführen
Fortsetzung, in diesem Fall wird die neue Zeile verworfen und die fortgesetzte Zeile
automatisch an die vorherige Zeile angehängt, zum Beispiel:
1> \echo Hallo \
-> Welt!
Hallo Welt!
Durch das Einschließen von Zeichen in doppelte Anführungszeichen bleibt die wörtliche Bedeutung aller Zeichen erhalten
in ihnen mit Ausnahme von $, ' und \. Ein doppeltes Anführungszeichen kann darin enthalten sein
doppelte Anführungszeichen durch Escapezeichen.
1> \echo „\\“Ich kann es nicht leugnen, ich mag $username\\“, sagte sie“
druckt aus
„Ich kann es nicht leugnen, ich mag Grau“, sagte sie
Expansion
Nachdem eine Eingabezeile gelesen wurde, sqsh versucht, die Zeile aller Aliase zu erweitern (siehe
Aliasing, unten) und versucht anschließend festzustellen, ob die Zeile mit a beginnt
Befehlsschlüsselwort. Sobald festgestellt wurde, dass eine Zeile einen Befehlsnamen enthält, enthält sie zwei
Arten der durchgeführten Erweiterung: Variable Substitution, Gefolgt von Befehl
Substitution bzw. Nach dieser Erweiterung wird die Befehlszeile in unterteilt
Wörter und der Befehl wird ausgeführt.
Variable Substitution
Das Zeichen $ wird verwendet, um eine Variablenersetzung oder -erweiterung innerhalb eines Wortes anzuzeigen.
Diesen Variablen können Werte zugewiesen werden \einstellen Befehl etwa so:
1> \set name=value
Name kann ein Zeichen oder ein Unterstrich sein, gefolgt von einer beliebigen Kombination aus Zeichen, Ziffern usw.
oder Unterstrich und darf keine Sonderzeichen wie (') und (") enthalten. Die
Die Einschränkung, dass das erste Zeichen eine Ziffer sein darf, wird eingeführt, da SQL dies zulässt
Darstellung von Gelddatentypen als $nn.nn, wobei n eine Ziffer ist.
Wert kann alles enthalten, wenn es jedoch Leerzeichen enthalten soll, muss es so sein
zitiert (vgl Wörter & Zitieren, über). Beachten Sie, dass, um die Erweiterung von a zu verhindern
Variablen verwenden entweder einfache Anführungszeichen oder zwei \, etwa so:
1> \echo \\$name
$ name
Variablen können auf zwei Arten referenziert werden:
$variable Auf diese Weise werden alle Zeichen, Ziffern und Unterstriche als behandelt Name
der Variablen, bis ein anderer Zeichentyp erreicht wird (entweder ein Sonderzeichen oder
ein Leerzeichen). ${variable} Die geschweiften Klammern sind nur erforderlich, wenn Variable gefolgt von a
Buchstabe, Ziffer oder Unterstrich, der nicht als Teil seines Namens zu interpretieren ist. Beachten Sie, dass
Der gleiche Effekt kann durch doppelte Anführungszeichen erzielt werden.
Es ist zu beachten, dass die Variablen erweitert werden, bevor der Befehl unterbrochen wird
Wenn der Inhalt der Variablen Leerzeichen enthält, werden sie als Leerzeichen behandelt
vom Parser signifikant. Im folgenden Beispiel:
1> \set x="1 2 3"
1> \echo $x
\Echo Der Befehl empfängt drei Argumente, „1“, „2“ und „3“, obwohl es so aussieht
Es wurde nur ein Argument übergeben. Dieses Verhalten stimmt mit den meisten Shells überein (z. B
csh, Bourne-Shell usw.).
Befehl Substitution
Sqsch unterstützt eine zweite Form der Erweiterung namens Befehl Substitution. Diese Form von
Die Erweiterung ersetzt einen Befehl auf der Befehlszeile durch die Ausgabe des externen UNIX
Befehl. Diese Erweiterung kann durch Platzieren der auszuführenden Befehlszeile erreicht werden
Backquotes (`). Zum Beispiel:
1> \set passwort=`/sybase/bin/getpwd $DSQUERY`
1> \echo $password
Ich mag Gürkchen
Dieses Beispiel ist das externe Programm /sybase/bin/getpwd wird mit dem Strom ausgeführt
Inhalt der Umgebungsvariablen $DSQUERY wird dann der gesamte Ausdruck durch ersetzt
die Ausgabe von getpwd (Ich mag Gürkchen) vor der Ausführung \einstellen Befehl. Standardmäßig ist die
Die Ausgabe des ersetzten Befehls wird zunächst entsprechend dem Inhalt von in Wörter aufgeteilt
die Variable $ifs, bevor sie wieder in der Befehlszeile zusammengesetzt wird. Also, von
Wenn Sie den Inhalt von $ifs überschreiben, kann dies Auswirkungen auf das Verhalten des Ersetzungsprozesses haben.
Beispielsweise:
1> \set ifs=":"
1> \echo `echo hello:how:are:you`
hallo, wie geht's dir
Dieser Mechanismus ist häufig zum Parsen von Eingabedateien nützlich, z / etc / passwd in
Felder.
Input / Output Redirection
Wie bei der Standard-Bourne-Shell (und übrigens auch bei den meisten anderen Shells) handelt es sich um die Eingabe eines Befehls
und die Ausgabe kann mithilfe einer speziellen, von der Shell interpretierten Notation umgeleitet werden. Der
Folgendes kann an einer beliebigen Stelle in der Befehlszeile erscheinen, jedoch nur die angegebene Umleitung
vor an eine Pipe (|) hat tatsächlich Auswirkungen auf das Verhalten interner SQLSH-Befehle
(beziehen auf Rohre, unter).
<Wort
Verwenden Sie die Datei Wort als Standardeingabe für den Befehl. Normalerweise sehr wenige sqsh
Befehle lesen tatsächlich alles aus stdin, daher hat dies normalerweise keine Auswirkung (siehe
\Schleife Befehl).
[n]>Wort
Ordnen Sie die Ausgabe des Dateideskriptors zu n (standardmäßig stdout) mit Datei Wort. Wenn das so ist
Datei existiert nicht, sie wird erstellt; andernfalls wird es auf die Länge Null gekürzt.
[n]>>Wort
Hängen Sie die Ausgabe des Dateideskriptors an n (standardmäßig stdout) in die Datei kopieren Wort, es erschaffen
wenn es nicht existiert.
[m]>&n
Leiten Sie die Ausgabe des Dateideskriptors um m (standardmäßig stdout), zur gleichen Ausgabe wie die Datei
Deskriptor n. Die Reihenfolge, in der Umleitungen in der Befehlszeile angegeben werden, ist
von Bedeutung, da die Umleitungen von links nach rechts ausgewertet werden. Zum Beispiel:
1> select * from select /* Syntaxfehler */
2> \go >/tmp/output 2>&1
Diese Anweisung leitet zunächst die Standardausgabe von um \gehen Befehl an die Datei
/tmp/output, leitet dann den stderr in dieselbe Datei um. Wenn also die Befehle fehlschlagen,
Die Fehlerausgabe befindet sich in der Datei /tmp/output.
Durch Ändern der Umleitungsreihenfolge können Sie jedoch die Bedeutung vollständig ändern:
1> Wählen Sie * aus der Auswahl
2> \go 2>&1 >/tmp/output
Nachricht 156, Ebene 15, Status 1
Server „SQSH_TEST“, Zeile 1
Falsche Syntax in der Nähe des Schlüsselworts „select“.
In diesem Fall wird die Fehlerausgabe an stdout gesendet, wohingegen was sonst gegangen wäre
stdout wird umgeleitet /tmp/output (in diesem Fall /tmp/output wird leer sein).
Bitte lesen Sie den Abschnitt über Hintergrund Jobs, unten, für detaillierte Informationen zur Interaktion
zwischen Dateiumleitung und Hintergrundjobs.
Rohre
A Pipeline ist eine Folge von einem oder mehreren durch ein „|“ getrennten Befehlen, wobei jeder Befehl Folgendes verwendet
die Standardausgabe des vorhergehenden Programms für ihre eigene Standardausgabe. Allerdings ist der erste Befehl in der
Pipeline muss ein sqsh-Befehl sein und alle anderen Befehle müssen extern (oder UNIX) sein.
Programme. Jeder sqsh-Befehl kann über eine Pipeline ausgeführt werden, obwohl für viele von ihnen (wie z
wie die \einstellen Befehl) macht es eigentlich keinen Sinn, dies zu tun. Das Folgende ist ein
Beispiel eines Pipeline:
1> Wählen Sie * aus Syslogins aus
2> \go | mehr
Dieser Befehl bewirkt, dass die von der generierte Ergebnismenge \gehen Befehl, der an den gesendet werden soll mehr(1)
Programm, das es dann an Ihren Bildschirm sendet und bei jedem Bildschirm voller Daten anhält (dies ist
der Hauptgrund, warum ich sqsh geschrieben habe).
Es gibt einige Besonderheiten in der Art und Weise, wie sqsh damit umgeht Pipelines im Gegensatz
auf die Art und Weise, wie die Standard-Bourne-Shell sie behandelt.
Alles, was auf das erste Vorkommen eines Pipe-Zeichens (|) folgt, wird in Weiß aufgeteilt.
durch Leerzeichen getrennte Wörter, einschließlich spezieller Shell-Befehle wie „2>&1“ und andere
Vorkommen von Rohren. Wenn in diesen Wörtern Variablen enthalten sind, dann sind sie es
Erweitert nach den gleichen Anführungszeichenregeln wie in beschrieben Wörter & Zitieren, oben, mit dem
Eine Ausnahme besteht darin, dass alle Anführungszeichen bestehen bleiben. Diese Wörter werden dann wieder zu a zusammengesetzt
Einzelsaite und verschickt an / Bin / sh zum Bearbeiten.
Kurz gesagt, sqsh unternimmt keinen Versuch zu interpretieren, was auf die erste Pipe folgt, sondern es ist so
in eine „echte“ Shell verschifft, um die Arbeit zu erledigen. Der Grund dafür ist, dass ich faul war
und hatte keine Lust, die gleiche bizarre Variablenbehandlung zu schreiben, &&'ing, ||'ing,
Gruppierung und variable Erweiterungsregeln, die die Bourne-Shell unterstützt, und stattdessen lasse ich zu
Bourne macht die Drecksarbeit.
Der Vorteil dieser Methode besteht darin, dass Sie einige sehr komplexe Aufgaben danach erledigen können
Pipeline, wie zum Beispiel:
1> Wählen Sie * aus den Systemspalten aus
2> \go | (CD / Tmp; compress -c > sysolumns.Z)
Mir fällt zwar kein wirklicher Grund dafür ein, aber Sie können es tun, wenn Sie möchten.
Hintergrund Jobs
Der Hintergrund bietet einen Mechanismus, mit dem Sie jeden beliebigen SQLSH-Befehl im Hintergrund ausführen können
verarbeiten und weiterarbeiten, während er ausgeführt wird. Sqsh bietet zwei Arten von Hintergrundinformationen:
Latente
In diesem Modus leitet sqsh alle Ausgaben des Hintergrundjobs in eine temporäre Datei um
(befindet sich im Verzeichnis $tmp_dir), während der Job ausgeführt wird, damit die Ausgabe erfolgt
nicht mit dem vermischt, woran Sie gerade arbeiten. Wenn der Job abgeschlossen ist, sind Sie fertig
Sie werden über den Abschluss des Prozesses benachrichtigt und die Ausgabe kann mithilfe der angezeigt werden \zeigen
Befehl.
Nicht aufgeschoben
Dies entspricht der gängigen Vorstellung eines Hintergrundprozesses unter UNIX. In diesem Modus
Die Ausgabe des Jobs wird nicht implizit für Sie umgeleitet und kann es daher sein
vermischt mit dem, woran Sie gerade arbeiten. Die von Ihnen gewählte Modusauswahl ist
wählbar über die Variable $defer_bg (die standardmäßig „1“ oder „Ein“ ist). Typischerweise die
einziger Grund, es nicht zu verwenden latente Der Modus dient dazu, zu verhindern, dass sich große Ergebnismengen füllen
Ihr Dateisystem.
Um anzugeben, dass ein Job im Hintergrund ausgeführt werden soll, hängen Sie einfach ein & an das Ende an
Befehlszeile, als:
1> sp_long_arduous_proc 1, 30
2> \go &
Job Nr. 1 läuft [xxxx]
1>
Wenn sqsh am Ende der Befehlszeile auf das & trifft, erzeugt es einen untergeordneten Prozess (mit
eine Unix-Prozess-ID von xxxx), dann ruft der untergeordnete Prozess die auf \gehen. \gehen Befehl dann
stellt eine neue Verbindung zur Datenbank her (unter Verwendung der aktuellen Werte von $DSQUERY,
$username, $password (Variablen) und führt die angezeigte Abfrage aus. Während der Job ausgeführt wird
die Befehle \Arbeitsplätze \Warten und \töten kann verwendet werden, um einen aktuell ausgeführten Job zu überwachen oder zu ändern
(siehe Sektion BEFEHLE, unter). Wenn ein Job abgeschlossen ist, zeigt sqsh eine Benachrichtigung an.
Felsen der Yoga-Therapie:
1> Wählen Sie count(*) aus
Auftrag Nr. 1 abgeschlossen (Ausgabe steht aus)
2>
Wenn ein Auftrag abgeschlossen ist und keine Ausgabe erfolgt ist, gilt er sofort als beendet und
wird nicht in der aktuellen Liste der ausgeführten Jobs angezeigt. Allerdings wenn der komplette Job hat
Bis zur Ausgabe wird er weiterhin als laufender Job angezeigt (mit dem \Arbeitsplätze Befehl)
Bis ein \zeigen wird verwendet, um die Ausgabe des Jobs anzuzeigen.
Es gibt einen bekannten Fehler bei der Job-Hintergrundfunktion, wenn diese in Verbindung mit Pipes verwendet wird
siehe die Fehler Abschnitt am Ende des Handbuchs.
Puffer
Im Normalfall isql es werden nur zwei Puffer verwaltet; der Puffer, in dem Sie sich gerade befinden
Eingabe und einen Puffer, der den zuletzt ausgeführten Stapel enthält (dieser wird für wann aufbewahrt).
Sie führen „vi“ oder „edit“ aus).
Sqsh verwaltet mehrere unterschiedliche Puffersätze:
Arbeiten Puffer: Dieser Puffer entspricht direkt dem isql Arbeitspuffer. Es ist der Puffer
in das Sie den aktuellen Stapel eingeben, bevor Sie ihn an die Datenbank senden.
Geschichte Puffer: Dies ist tatsächlich eine Kette von 0 oder mehr Puffern (konfigurierbar durch
$histsize-Variable) der letzten $histsize-Batches, die ausgeführt wurden. Dieser Puffer ist nur
wird beibehalten, wenn sqsh im interaktiven Modus ausgeführt wird; das heißt, Stapel, die mit dem ausgeführt werden -i
Flag oder über eine Umleitung von der UNIX-Eingabeaufforderung ausgeführt wird, wird nicht im Verlauf beibehalten
(Schließlich liegen sie bereits irgendwo in einer Datei).
Wenn die Variable $histsave True ist (siehe Abschnitt SPECIAL VARIABLEN), und sqsh ist drin
Im interaktiven Modus wird der aktuelle Verlaufspuffer in $HOME/.sqsh_history geschrieben, wenn
Du gehst raus. Diese Datei wird dann beim nächsten interaktiven Start wieder in sqsh eingelesen
Modus arbeiten können.
Namens Puffer: Zu jedem Zeitpunkt während einer Sitzung die Arbeiten Pufferoder einer der Geschichte Puffer
kann mit in einen benannten Puffer kopiert werden \buf-Kopie Befehl (siehe Abschnitt BEFEHLE,
unter). Diese Puffer gehen verloren, wenn Sie das Programm beenden (wie auch immer Sie es verwenden). \buf-speichern Befehl an
benannte Puffer in einer Datei speichern).
Puffer Kurzschrift
Viele Befehle ermöglichen die Kurzreferenzierung aller dieser Puffer
ähnlich wie das csh(1) verweist auf seinen Befehlsverlauf. Irgendeine dieser Abkürzungen
kann für jeden verwendet werden puffern Parameter beschrieben in der BEFEHLE Abschnitt:
!. Der aktuelle Arbeitspuffer.
!! Der zuletzt ausgeführte Befehl (beachten Sie, dass dieser im nicht interaktiven Modus nicht verfügbar ist, da er
führt keine Historie).
!+ Der nächste verfügbare Verlaufseintrag. Dies ist ein schreibgeschützter Puffer, also normalerweise nur
gilt für Befehle wie \buf-Kopie.
!n Bezieht sich auf die Geschichte #n. Jedes Mal, wenn ein Eintrag in den Verlauf geschrieben wird, wird ihm ein zugewiesen
steigende Zahl ab dem letzten Eintrag, mit dieser Kurzschrift können Sie auf jede beliebige verweisen
gegebene Geschichte.
!buf_name
Aus Gründen der Konsistenz wird dies als Referenz auf den benannten Puffer bereitgestellt buf_nameJedoch
buf_name ohne das führende '!' gilt auch als richtig.
buf_name
Bezieht sich auf den benannten Puffer buf_name.
Variablen
Variablen können auch in Arbeitspuffern enthalten sein. Unter diesen Umständen ist die
Variablen bleiben nicht erweitert, bis der Puffer an die Datenbank gesendet wird (über \gehen
Während dieser Zeit werden sie im Puffer erweitert und ersetzt. Das
Das Verhalten kann über die Variable $expand geändert werden. (sehen Spezial Variablen, unter).
Das Folgende ist ein Beispiel für die Verwendung von Variablen innerhalb eines Puffers:
1> \set table_name=syscolumns
1> Wählen Sie count(*) aus $table_name aus
2> \go
Dies entspricht der Durchführung der Abfrage:
1> Wählen Sie count(*) aus den Systemspalten aus
2> \go
direkt. Normalerweise ist diese Funktion für die Wiederverwendung großer Komplexe nützlich woher Klauseln, bzw
lange Spaltennamen.
Anführungsregeln gelten in SQL-Puffer genauso wie in Befehlszeilen. Das heißt, irgendein
Variablen, die in doppelten Anführungszeichen (") enthalten sind, werden erweitert und darin enthaltene Variablen
Einfache Anführungszeichen (') bleiben unberührt. Daher:
1> wählen Sie „$username“, „$username“
2> \go
liefert die Ergebnisse
---- ---------
grauer $Benutzername
Befehl Substitution
Wie bei der Befehlszeile kann auch die Ausgabe von UNIX-Befehlen innerhalb einer SQL ersetzt werden
Puffer bei der Ausführung (wiederum nur, wenn die Variable $expand auf 1 oder true gesetzt ist). In
In diesem Fall wird der in Anführungszeichen (`) enthaltene Befehl durch seine Ausgabe ersetzt
bevor der Puffer an den SQL-Server weitergeleitet wird. Zum Beispiel:
1> Wählen Sie count(*) aus „echo syscolumns“ aus
2> \go
Bewirkt, dass die Zeichenfolgen „echo syscolumns“ durch das Wort ersetzt werden Systemspalten vor
den Befehl ausführen. Es ist zu beachten, dass der Inhalt des ersetzten Befehls lautet
erst zum Zeitpunkt der ausgeführt \gehen Befehl, nicht wenn die SQL-Zeile eingegeben wird.
Kontrollfluss
Neu in Version 2.0 von sqsh ist die Möglichkeit, grundlegende Kontrollflüsse durchzuführen und
Funktionen mit dem \Wenn, \während, \Tun und \func Befehle.
Blockiert & SQL Puffer
Alle SQLSH-Flow-of-Control-Befehle sind blockbasiert. Das heißt, wenn der Testausdruck des
Wenn der Befehl erfüllt ist, wird ein Block von sqsh-script ausgeführt. Zum Beispiel die Definition
dauert ebenfalls 3 Jahre. Das erste Jahr ist das sog. \Wenn Befehl ist:
\if-Ausdruck
Schutzmassnahmen bei
\sein
Dieses Schutzmassnahmen bei kann aus einer beliebigen Anzahl von Zeilen mit Sqsh-Befehlen, SQL-Anweisungen oder Flusskontrollanweisungen bestehen
ausgeführt werden, wenn die Ausdruck ergibt eine Erfolgsbedingung (0).
. Schutzmassnahmen bei verfügt über einen eigenen SQL-Puffer für die Dauer, die der Schutzmassnahmen bei wird ausgeführt. Das ist,
die folgenden Aussagen:
1> /*
2> ** FALSCHE VERWENDUNG DES IF-BLOCKS
3> */
4> Wählen Sie count(*) aus
5> \if [ $x -gt 10 ]
6> Systemobjekte
7> \else
8> Sysindexes
9> \fi
5> los
wird ergeben:
Nachricht 102, Ebene 15, Status 1
Server „bps_pro“, Zeile 1
Falsche Syntax in der Nähe von „von“
weil die Zeichenfolge „sysobjects“ oder „sysindexes“ in ihre eigenen SQL-Puffer eingefügt wurde.
Diese Puffer werden verworfen, sobald das Ende des Blocks erreicht wurde und da a \gehen
Da der Befehl nicht im Block enthalten war, wurden keine weiteren Fehler generiert.
Die korrekte Schreibweise des obigen Ausdrucks wäre also:
1> /*
2> ** RICHTIGE VERWENDUNG DES IF-BLOCKS
3> */
4> \if [ $x -gt 10 ]
5> Wählen Sie count(*) aus SysObjects aus
6> los
7> \else
8> Wählen Sie count(*) aus den Sysindexes aus
9> los
10> \fi
oder auch:
1> /*
2> ** RICHTIGE VERWENDUNG DES IF-BLOCKS
3> */
4> \if [ $x -gt 10 ]
5> \set table_name=sysobjects
6> \else
7> \set table_name=sysindexes
8> \fi
4> Wählen Sie * aus $table_name aus
5> los
Beachten Sie außerdem, dass die in der sqsh-Eingabeaufforderung angezeigte Zeilennummer auf die aktuelle zurückgesetzt wird
Position im äußeren SQL-Puffer nach Erreichen der \sein Terminator.
Ausdrücke
Alle Flusskontrollanweisungen in sqsh benötigen eine Ausdruck um festzustellen, welche Schutzmassnahmen bei von Code
ausführen. Genau wie die Bourne Shell von UNIX Ausdruck ist einfach ein Betriebssystem
Programm, das von sqsh ausgeführt wird. Wenn der Befehl einen Erfolgsstatus zurückgibt (Aufrufe wunsch(0)),
dann gilt es als erfolgreich.
Zum Beispiel mit folgender Aussage:
\while test $x -lt 10
Schutzmassnahmen bei
\Erledigt
wird den Inhalt von ausführen Schutzmassnahmen bei während der aktuelle Wert von $x kleiner als 10 ist. Hinweis
Dieser „Test“ ist ein Standard-UNIX-Programm zur Durchführung grundlegender Zeichenfolgen- oder Zahlenvergleiche
(unter anderem). Außerdem verfügt sqsh im Gegensatz zu vielen Shells über keine integrierte Version von „test“.
Sqsh unterstützt jedoch die Standard-Kurzform von „test“:
\while [ $x -lt 10 ]
Schutzmassnahmen bei
\Erledigt
Mit diesem Ausdruck wird die offene Klammer ('[') durch den Sqsh-Parser durch 'test' und ersetzt
Die schließende Klammer (']') wird verworfen.
Ungestützt Ausdrücke
Derzeit unterstützt sqsh die Standard-Shell-Prädikatoperatoren „&&“ und „||“ nicht.
Diese können wie folgt durchgeführt werden:
\if sh -c "cmd1 && cmd2"
Schutzmassnahmen bei
\Erledigt
\if-Anweisung
Das \Wenn Der Befehl führt die bedingte Ausführung eines Sqsh aus Schutzmassnahmen bei basierend auf dem Ergebnis eines
bereitgestellter Ausdruck:
\if expr1
block1
\elif expr2
block2
\anders
block3
\sein
In diesem Beispiel if-Ausdruck Ausdruck1 als wahr ausgewertet wird, dann der Block block1 is
ausgewertet. Andernfalls, wenn der Ausdruck Ausdruck2 wird als wahr ausgewertet und dann blockiert block2 is
ausgewertet. Schließlich, wenn alle anderen Tests fehlschlagen block3 ausgewertet wird.
Beachten Sie, dass im Gegensatz zu Bourne Shell alle \Wenn Der Befehl muss von einem abschließenden Zeichen begleitet werden \sein
Stellungnahme. Auch der Sqsh-Parser ist nicht besonders intelligent: Der \anders und \sein Aussagen
muss der einzige Inhalt in der Zeile sein, in der sie erscheinen, und es darf kein Alias darauf gesetzt werden
ein anderer Name.
\while-Anweisung
Das \während Befehl führt a aus Schutzmassnahmen bei des SQLSH-Codes für den während eines bereitgestellten Ausdrucks
bleibt wahr.
\while expr
Schutzmassnahmen bei
\Erledigt
In diesem Beispiel während der Ausdruck ausdr als wahr ausgewertet wird, dann der Block Schutzmassnahmen bei is
bewertet.
Das \brechen Diese Aussage kann dazu dienen, aus dem Innersten auszubrechen \während or \für Schleife (mehr
on \für unten).
\for-Anweisung
Das \für Befehl führt a aus Schutzmassnahmen bei von sqsh-Code für jeden Wort geliefert:
\für var in Wort ...
Schutzmassnahmen bei
\Erledigt
Für jeden Wort angegeben, der Wert der Variablen $ var wird auf das Wort und das gesetzt Schutzmassnahmen bei of
Code wird ausgeführt. Die Ausführung endet, wenn die Liste keine Wörter mehr enthält.
Wie bei \während \brechen Die Anweisung kann verwendet werden, um aus der innersten Ausführung auszubrechen
Schleife.
\do-Befehl
Das \Tun Der Befehl ist eine Art Kreuzung zwischen einer Anweisung und einem Befehl.
Es ist eine Form von \gehen (Einzelheiten dazu finden Sie weiter unten \gehen Befehl), in dem a Schutzmassnahmen bei von sqsh
Code kann für jede von der Abfrage zurückgegebene Datenzeile ausgeführt werden. Wenn das Schutzmassnahmen bei is
ausgeführt werden, können spezielle Sqsh-Variablen #[0-9]+ (ein Hash gefolgt von einer Zahl) verwendet werden
Verweisen Sie auf die Werte in der zurückgegebenen Abfrage. Zum Beispiel der folgende Befehl:
Wählen Sie ID und Namen aus „master..sysdatabases“ aus
\Tun
\echo „Checkpointing-Datenbank Nr. 2, Dbid Nr. 1“
Verwenden Sie #2
go
Kontrollpunkt
go
\Erledigt
würde dazu führen, dass in jeder Datenbank auf dem Server ein CHECKPOINT-Befehl ausgegeben wird.
Befehlszeilenoptionen
Das \Tun Der Befehl stellt eine neue Verbindung her, die von verwendet werden soll Schutzmassnahmen bei des Codes wann
hingerichtet. Standardmäßig wird diese Verbindung zum aktuellen Server (der aktuellen) hergestellt
Einstellung von $DSQUERY), unter Verwendung des aktuellen Benutzernamens ($ username) und das aktuelle Passwort
($passwort). Dieses Verhalten kann jedoch mithilfe von Befehlszeilenoptionen außer Kraft gesetzt werden:
-D-Datenbank
Stellt die Verbindung zur Datenbank wie angegeben her Datenbank.
-U Benutzername
Stellt wie angegeben die Verbindung zum Server her Benutzername.
-P Passwort
Stellt die Verbindung zum Server über das mitgelieferte her Passwort (welches ist
hoffentlich ein gültiges Passwort für das angegebene Benutzername).
-S-Server
Stellt die Verbindung zum Versorgten her Server.
-n Keine Verbindung zur Verwendung durch erstellen \Tun Schleife. Dieses Flag schließt sich gegenseitig aus
mit den oben genannten Flags. Wenn dieses Flag aktiviert ist, wird versucht, Datenbankbefehle auszuführen
innerhalb der Schutzmassnahmen bei wird eine Flut von CT-Bibliotheksfehlern erzeugen.
Spaltenvariablen
Wie oben erwähnt, können die Werte der Spalten im aktuellen Ergebnissatz bestimmt werden
unter Verwendung der speziellen #[0-9]+-Variablen. Somit würde die Variable Nr. 1 den Wert von enthalten
Spalte Nummer eins der aktuellen Ergebnismenge, und #122 könnte den Wert der enthalten
122. Spalte (Spaltennummern beginnen bei 1).
Im Fall von verschachtelt \Tun Schleifen können Werte in vorherigen Verschachtelungsebenen referenziert werden
Fügen Sie einfach für jede vorherige Verschachtelungsebene einen Zusatz „#“ hinzu, etwa so:
Wählen Sie ID und Namen aus SysObjects aus
\Tun
Wählen Sie Name und Indid aus den Sysindexes aus, wobei die ID = #1 ist
\Tun
\echo „Tabelle ##2 (objid ##1) hat Index #1“
\Erledigt
\Erledigt
Natürlich ist dies nicht die Art und Weise, wie Sie diese Abfrage im wirklichen Leben durchführen würden, aber Sie bekommen die Idee.
Beim Erweitern von Spalten mit NULL-Werten wird die Spaltenvariable leer erweitert
Zeichenfolge (''). Auch Verweise auf nicht vorhandene Spalten, wie z. B. #0, führen zu einem Leerzeichen
Zeichenfolge ('').
Wie bei regulären Sqsh-Variablen (die mit einem „$“ referenziert werden), gilt dies auch für Spaltenvariablen nicht
erweitert, wenn es in einfache Anführungszeichen gesetzt wird.
Abbrechen
Besitzt das \brechen or \zurückkehren Befehle werden während der Verarbeitung von a ausgegeben \Tun Schleife, die
Die aktuelle Abfrage wird abgebrochen, die von der Schleife verwendete Verbindung wird geschlossen (es sei denn, die
-n Flagge wurde mitgeliefert) und die \Tun Die Schleife wird abgebrochen.
\func-Befehl
Das \func Der Befehl wird verwendet, um einen wiederverwendbaren Block von SQLSH-Code als Funktion zu definieren. Funktionen
sind wie folgt definiert:
\func Statistiken
\if [ $# -ne 1 ]
\echo „verwende: Statistiken [an | aus]“
\return 1
\sein
Statistiken festlegen io ${1}
Statistikzeit festlegen ${1}
go
\Erledigt
In diesem Beispiel wird eine neue Funktion namens eingerichtet Statistik das ein einzelnes Argument erwartet,
entweder „an“ oder „aus“. Mit diesem Argument, Statistik aktiviert oder deaktiviert zeitbasierte und
E/A-basierte Statistiken.
Sobald die Funktion eingerichtet ist, kann sie wie folgt aufgerufen werden:
\call stats on
Dadurch werden alle Instanzen von ${1} durch das erste Befehlszeilenargument ersetzt
Statistik.
Befehlszeilenoptionen
Derzeit steht nur ein Befehlszeilenargument zur Verfügung \func Befehl.
-x Bewirkt, dass die Funktion als exportiert wird sqsh Befehl. Das heißt, die Funktion kann sein
direkt aufgerufen werden, ohne dass dies erforderlich ist \Forderung Befehl. Dieses Verhalten ist optional
weil Befehlsnamen möglicherweise mit T-SQL-Schlüsselwörtern in Konflikt geraten können. Wenn Sie dies verwenden
Flag wird empfohlen, dass Sie Ihrem Funktionsnamen einen Backslash (\) voranstellen.
Funktionsvariablen
Wie im obigen Beispiel gezeigt, stehen mehrere spezielle Variablen zur Verwendung innerhalb zur Verfügung
Körper der Funktion. Diese sind:
$# Erweitert sich auf die Anzahl der Argumente, die der Funktion oder dem Skript beim Aufruf bereitgestellt werden.
$* Erweitert die vollständige Liste der Argumente, die der Funktion oder dem Skript zur Verfügung gestellt werden, wenn
aufgerufen.
${0}..${N}
Erweitert um Positionsargumente für die Funktion. ${0} ist der Name der Funktion
Beim Aufruf ist ${1} das erste Argument, ${2} das zweite und so weiter, bis zum Argument
N. Beachten Sie, dass sqsh im Gegensatz zu den meisten Shells erfordert, dass auf Funktionsargumente verwiesen wird
unter Verwendung der speziellen Syntax für geschweifte Klammern (${1}, statt $1). Der Grund dafür ist
dass $1 ein gültiger MONEY-Wert ist und die Verwendung der geschweiften Klammern diese Mehrdeutigkeit beseitigt.
$? Nach dem Aufruf einer Funktion enthält diese deren Rückgabewert (siehe unten).
Rückgabewert
Ein Wert kann von einer Funktion über zurückgegeben werden \zurückkehren Befehl.
Wie so:
\return N
Wo N ist ein positiver Wert. Dieser Rückgabewert steht dem Aufrufer der Funktion zur Verfügung
über das $? Variable. Konventionell wird ein Rückgabewert von 0 verwendet, um einen Erfolg anzuzeigen.
If \zurückkehren Wird nicht explizit aufgerufen, ist der Standardrückgabewert der aktuelle Wert von
$? Variable (die bei Eingabe der Funktion auf 0 gesetzt wird). Also, wenn irgendwelche SQL-Anweisungen
werden innerhalb der Funktion aufgerufen, der Standardrückgabewert von $? wird der letzte Fehler sein
Code, der während der Verarbeitung der SQL-Anweisung zurückgegeben wird.
Kerberos Unterstützung
Ab Version 2.1.6, sqsh bietet die gleichen Befehlszeilenoptionen wie isql zu handhaben
Kerberos-Netzwerkauthentifizierung.
In Version 2.1.5 wurde experimentelle Kerberos-Unterstützung mithilfe der Optionen -K und -R hinzugefügt. -K
war lediglich ein Schalter zum Einschalten von Kerberos. In sqsh 2.1.6 eine erweiterte Implementierung von
Die Netzwerkauthentifizierung wird eingeführt, wenn auch noch experimentell.
Durch die Verwendung der Parameter -K, -R, -V, -Z können Sie Ihre definierte Netzwerksicherheit nutzen
Einstellungen (libtcl.cfg). Die benannten Optionen sind identisch mit denen, die für definiert wurden isql.
-K keytab_file
Keytab_file-Name für DCE.
-R server_principal
Serverprinzipalname, wenn der in den Schnittstellen angegebene Servername vom tatsächlichen abweicht
Servername.
-V [bcdimoqru]
Geben Sie Sicherheitsoptionen an, die mit dem Sicherheitsmechanismus verwendet werden sollen. Jedes Zeichen steht für
einen bestimmten Sicherheitsdienst.
-Z [secmech|default|none]
Fordern Sie einen für Kerberos, DCE oder PAM definierten Sicherheitsmechanismus in Ihrer libtcl.cfg-Datei an.
Verwenden Sie die secmech um den Namen eines SECURITY-Eintrags anzugeben oder Standard für den ersten verfügbaren
Eintrag in libtcl.cfg. Keine muss angegeben werden, um die Netzwerkauthentifizierung zu deaktivieren oder zurückzusetzen
mögliche vorhandene Werte in Variablen $secmech or $secure_options.
Zum Beispiel die Verbindung zu einem Server über Kerberos (was zufällig die Standardeinstellung ist, d. h
erster Eintrag in libtcl.cfg, Registerkarte [SICHERHEIT] in diesem Beispiel):
~> sqsh -SSYB1502 -Uuser1 -RFC6A1502 -Z
\connect: Netzwerkauthentifizierte Sitzung läuft ab um:
16. Februar 2010 15:28:39 (11764 Sek.)
SYB1502.user1.master.1> wählen Sie @@Servername,@@authmech,
show_sec_services();
---------------- ----------- ----------------------- -----------
FC6A1502 Kerberos UnifiedLogin Delegation MutualAuth
Integrität, Vertraulichkeit
Detectreplay Detectseq
Beachten Sie, dass sich der tatsächliche Name des Servers (@@servername) vom Servernamen im unterscheidet
interfaces-Datei, daher müssen wir den Prinzipalnamen über die angeben -R Parameter. Wann
Sie geben das nicht an -V Parameter zusammen mit -Z, alle verfügbaren Sicherheitsoptionen werden aktiviert
aktiviert sein. Wenn -V wird ohne Sicherheitsdienstoptionen, nur Option, angegeben u für
Die Netzwerkauthentifizierung wird implizit festgelegt und der Standardsicherheitsmechanismus wird festgelegt
verwendet, wenn -Z ist nicht angegeben.
[user1@linux-fc6a ~]$ sqsh -SFC6A1502 -Uuser1 -V
Kundennachricht öffnen
Schicht 7, Ursprung 9, Schweregrad 5, Nummer 1
ct_connect(): Sicherheitsdienstschicht: interne Sicherheitskontrolle
Ebenenfehler:
Interner Fehler des Sicherheitsdienstanbieters -1765328352
auftrat.
[user1@linux-fc6a ~]$ kinit
Passwort für user1@LOCALDOMAIN:
[user1@linux-fc6a ~]$ sqsh -SFC6A1502 -Uuser1 -V
\connect: Netzwerkauthentifizierte Sitzung läuft ab um:
16. Februar 2010 15:28:39 (10964 Sek.)
FC6A1502.user1.master.1>
Wenn die Verbindung erfolgreich ist, sqsh speichert den echten Namen des Sicherheitsmechanismus in
Die Variable $secmech. Beispielsweise könnte „\echo $secmech“ angezeigt werden csfkrb5. Der Parameter -V
Nimmt eine Liste von Zeichen aus den möglichen Werten von bcdimoqru. Die Option u ermöglicht
Die Netzwerkauthentifizierung ist die Standardeinstellung und wird bei der Verwendung immer eingestellt -V or -Z,
angegeben oder nicht.
b - chanbinding: Kanalbindung
c – Vertraulichkeit: Datenvertraulichkeitsdienst
d – Delegation: Delegierte Anmeldeinformationen zulassen
i – Integrität: Datenintegritätsdienst
m – Mutualauth: Gegenseitige Authentifizierung für die Verbindung
Gründung
o - dataorigin: Datenursprungsstempeldienst
q - discoverseq: Erkennung außerhalb der Reihenfolge
r - Detectreplay: Erkennung der Datenwiedergabe
u – unifiedlogin: Netzwerkauthentifizierung
Bitte überprüfen Sie master.dbo.syssecmechs auf verfügbare Dienste. Nicht vorhanden oder nicht unterstützt
Dienstleistungen, die mit geliefert werden -V werden stillschweigend ignoriert. Wenn Sie angeben -V und / oder -Z, sqsh übernimmt
Die Netzwerkauthentifizierung wird versucht und es ist kein Passwort erforderlich.
Wenn Sie über eine netzwerkauthentifizierte Verbindung verfügen und die Verbindung mit normalem ASE wiederherstellen möchten
Nach der Authentifizierung mit Benutzername und Passwort müssen Sie die Netzwerkauthentifizierung zurücksetzen
Variablen durch Angabe von -Znone
Beispielsweise:
[user1@linux-fc6a ~]$ sqsh -SFC6A1502 -Uuser1 -V
\connect: Netzwerkauthentifizierte Sitzung läuft ab um:
16. Februar 2010 15:28:39 (10764 Sek.)
FC6A1502.user1.master.1> \echo $secmech csfkrb5
FC6A1502.user1.master.1> \reconnect -SASE1502 -Usa -Psybase
Kundennachricht öffnen
Schicht 7, Ursprung 9, Schweregrad 5, Nummer 8
ct_connect(): Sicherheitsdienstschicht: interne Sicherheitskontrolle
Ebenenfehler:
Die für die Anmeldeinformationen durchgeführten Konsistenzprüfungen sind fehlgeschlagen
(Minor-Status 0).
FC6A1502.user1.master.1> \reconnect -SASE1502 -Usa -Psybase -Znone
ASE1502.sa.master.1>
Das erste \reconnect schlägt fehl, weil sqsh immer noch die Netzwerkauthentifizierung versuchen möchte.
Es existiert jedoch kein Benutzerprinzipal für „sa“ und es ist kein Ticket und somit keine Verbindung festgelegt
scheitert. Der Zweite \erneut verbinden ist erfolgreich, da die Option -Znone die entsprechenden Variablen zurücksetzt.
Wenn das Kerberos-Ticket mit erneuert wird gut oder ein anderes Client-Tool, das sqsh Sitzung
muss a durchführen \erneut verbinden um die Anmeldeinformationen zu aktualisieren und eine vorzeitige Sitzung zu verhindern
abbrechen. Mit dem Befehl \snace Sie können das Ablaufintervall der Sitzung anfordern.
Abhängig von den eingestellten Sicherheitsdiensten kann es sein, dass die Datenbankverbindung geschlossen wird
ohne Vorwarnung, sobald das Ticket abläuft.
Siehe Kapitel 16 „Externe Authentifizierung“ im Sybase System Administration Guide
Band 1 für weitere Informationen zur Kerberos-Netzwerkauthentifizierung
BEFEHLE
Lesen-Evaluieren-Drucken
Die Read-Eval-Print-Schleife ist das Herzstück des Sqsh-Systems und für die Eingabeaufforderung verantwortlich
einen Benutzer zur Eingabe und Festlegung, was damit geschehen soll. Typischerweise ist diese Schleife für
Nur für den internen Gebrauch, sie stehen dem Benutzer jedoch offen, da es einige kreative Elemente gibt
Dinge, die man damit machen kann.
\loop [-i] [-n] [-e sql] [Datei]
Das \Schleife Der Befehl liest die Eingabe entweder aus einer Datei, einer bereitgestellten SQL-Anweisung oder von einem
Benutzer (siehe Optionen unten) und bestimmt, ob die aktuelle Zeile ein Teil von a ist
TSQL-Anweisung oder einen sqsh-Befehl ausführen und die entsprechende Aktion ausführen. Beim Einfahren
ein interaktiver Modus \Schleife ist auch für die Anzeige der aktuellen Eingabeaufforderung verantwortlich (siehe
$Eingabeaufforderung unten).
\Schleife wird abgeschlossen, wenn alle Eingaben aufgebraucht sind (Dateiende erreicht ist) oder wenn
ein Befehl, wie z \Ausfahrt fordert das \Schleife Ausfahrt.
-i Normalerweise, wenn Datei wird geliefert und existiert nicht, \Schleife wird mit einem Fehler zurückkehren
Bedingung, die normalerweise dazu führt, dass sqsh beendet wird. Durch die Bereitstellung der -i Flagge, Kontrolle wird sein
wird an die aufrufende Schleife zurückgegeben, als ob das Dateiende erreicht worden wäre (d. h. mit Nr
Fehlerzustand).
-n Standardmäßig ist \Schleife versucht automatisch, eine Verbindung zur Datenbank herzustellen, wenn a
Es wurde noch keine Verbindung über hergestellt \verbinden Befehl. Das -n Flagge
deaktiviert dieses Verhalten und ermöglicht es \Schleife um Befehle zu verarbeiten, die nicht erforderlich sind
Datenbankunterstützung.
-e SQL
Ursachen \Schleife den Inhalt verarbeiten SQL als ob der Benutzer es eingegeben hätte
Eingabeaufforderung und ein impliziter Aufruf an \gehen wird automatisch an die Anweisung angehängt. Wenn
mehrere Instanzen von -e geliefert werden, werden sie alle als einzelne Charge an die gesendet
SQL Server zur Verarbeitung. Diese Option darf nicht in Kombination mit a verwendet werden Datei
auch den Namen.
Datei
Gibt den Namen von a . an Datei als Eingabe verwendet werden, anstatt Eingaben zu lesen
der Benutzer oder vom -e Flagge.
Database Access
Angesichts der Größe und Komplexität von sqsh (sehen Sie sich nur die Länge dieser Manpage an) ist dies der Fall
Es ist erstaunlich, wie wenige Befehle zur Datenbankmanipulation es tatsächlich gibt. Die Folgenden sind
Befehle, die die aktuelle Datenbankverbindung beeinflussen oder verwenden:
\connect [-c] [-D db] [-S srv] [-U user] [-P pass] [-I ifile] [-K keytab] [-R
server_principal] [-n] [-N appname] [-Q query_timeout] [-T login_timeout] [-V [bcdimoqru]]
[-Z [secmech|default|none]]
Dieser Befehl wird hauptsächlich für den internen Gebrauch verwendet, um eine Verbindung zu einem herzustellen
Datenbank. Wenn bereits eine Verbindung besteht, hat dies keine Auswirkung, wenn jedoch a
Verbindung wurde nicht hergestellt und $passwort nicht geliefert wurde, dann die
Es wird ein Passwort abgefragt und eine Verbindung hergestellt. \verbinden akzeptiert folgendes
Parameter:
-c Standardmäßig ist die \verbinden Der Befehl verwendet den Inhalt von $Datenbank um das festzustellen
Datenbankkontext, der beim Herstellen der Verbindung verwendet werden soll (dies ist
genutzt von \erneut verbinden um den aktuellen Datenbankkontext bei erneuter Verbindung beizubehalten).
Das -c Flag unterdrückt dieses Verhalten und der Standarddatenbankkontext der Anmeldung ist
stattdessen verwendet.
-D db
Ursachen \verbinden um zu versuchen, den Datenbankkontext automatisch zu wechseln db
nach dem Verbindungsaufbau.
Die Verwendung dieses Flags ist identisch mit dem Setzen von $Datenbank Variable vor
Herstellen der Verbindung.
-S srv
Der Name der Sybase Server Um eine Verbindung herzustellen, ist dies standardmäßig auf $DSQUERY wenn nicht
geliefert.
-U Benutzer
Die Sybase Benutzer um eine Verbindung zur Datenbank herzustellen als, ist dies standardmäßig der Fall $ username Variable
falls nicht mitgeliefert.
-P bestanden
Das Passwort für Benutzer zum Herstellen einer Verbindung erforderlich Server. Dies ist die Standardeinstellung $passwort if
nicht beiliegend.
-Ich schreibe
Der vollständige Pfad einer alternativen Sybase Schnittstellen zu verwendende Datei.
-K keytab_file
Wird für die DCE-Benutzerauthentifizierung verwendet.
-R Prinzipalname
Wird für die Kerberos-Benutzerauthentifizierung verwendet, um den Namen des Serverprinzipals anzugeben
wenn der Name von dem abweicht $DSQUERY Wert.
Siehe auch die Diskussion zur Kerberos-Unterstützung.
-n Gibt an, dass die Verbindung den ANSI-kompatiblen Kettenmodus verwenden muss.
-N Appname
Geben Sie den Anwendungsnamen an, den der Server für Programmname im verwenden soll
sysprocesses-Tabelle.
-Q query_timeout
Legen Sie ein Abfrage-Timeout in Sekunden fest.
-T login_timeout
Gibt eine maximale Wartezeit für den Sitzungsaufbau an.
-V [bcdimoqru]
Sicherheitsdienste, die für die Kerberos-Unterstützung und andere Sicherheitsmechanismen verwendet werden.
-Z [secmech|default|none]
Gibt den Sicherheitsmechanismus an, der für die Benutzerauthentifizierung verwendet werden soll. Zum Beispiel
csfkrb5 für Kerberos-Unterstützung.
\reconnect [-c] [-D db] [-S srv] [-U user] [-P pass] [-I ifile] [-K keytab] [-R
server_principal] [-n] [-N appname] [-Q query_timeout] [-T login_timeout] [-V [bcdimoqru]]
[-Z [secmech|default|noe]]
Das \erneut verbinden Der Befehl kann verwendet werden, um eine erneute Verbindung zur Datenbank mithilfe eines neuen Befehls zu erzwingen
Benutzername, Servername oder Passwort (falls gewünscht). Wenn dieser Befehl fehlschlägt, wird der aktuelle
Die Verbindung bleibt bestehen (falls vorhanden), wenn sie jedoch erfolgreich ist, dann die aktuelle
Die Verbindung wird geschlossen und die neue Verbindung wird zur einzigen aktiven.
Alle Argumente, die von akzeptiert werden \verbinden werden auch von akzeptiert \erneut verbinden (In der Tat
\erneut verbinden verwendet \verbinden um die neue Verbindung herzustellen).
\snace
Zeigt das Sitzungsablaufintervall für eine netzwerkauthentifizierte Sitzung an
Kerberos-Tickets zum Beispiel.
\go [Optionen] [xacts]
Sendet den Inhalt der Arbeiten Puffer zur Datenbank und stellt eine neue Verbindung her
zur Datenbank hinzufügen, falls noch keine vorhanden ist (durch Aufruf von \verbinden über). Es ist ihnen
zeigt die Ergebnisse der Abfrage wieder an stdout an und gibt zurück, was dazu führt, dass Arbeiten Puffer
gelöscht und an das Ende verschoben werden Geschichte Puffer.
Besitzt das Arbeiten Puffer ist leer und die $repeat_batch Variable ist auf „Ein“ gesetzt, \gehen werden wir
Versuchen Sie, den zuletzt ausgeführten Befehl erneut auszuführen (dies funktioniert nur im interaktiven Modus).
wenn die Verlaufsunterstützung aktiviert ist).
\gehen akzeptiert die folgenden Argumente:
-d Anzeige
Wenn die X11-Unterstützung in sqsh kompiliert ist und der X-Anzeigemodus verwendet wird (siehe -x,
unten), dann Display wird als X-Anzeigebereich für den Ergebnissatz verwendet. Von
Standardmäßig wird die Umgebungsvariable verwendet $ANZEIGE wird angenommen.
-f Schaltet die Anzeige der Fußzeilenmeldung „(%d Zeilen betroffen)“ aus. Fußzeilennachrichten
kann auch über ausgeschaltet werden $Fußzeilen variabel.
-h Schaltet alle Spaltenüberschriften aus. Diese können auch über deaktiviert werden $header
variabel.
-m-Stil
Ändert den Anzeigestil vorübergehend in Stil für die Dauer des Befehls.
Derzeit unterstützte Stile sind horizontal (oder hor or horizontal), vert (oder vertikal),
bcp, csv, html, Ziel, ziemlich und keine. Der Anzeigestil kann dauerhaft eingestellt werden
über das $stil variabel oder die -m Kommandozeilen-Flag.
-n Deaktiviert die Variablenerweiterung im Arbeiten Puffer bevor es an den Server gesendet wird,
Dies kann auch über das deaktiviert werden $ expand variabel.
-p Aktiviert die Ausgabe von Leistungsstatistiken, wenn der Ergebnissatz erstellt wurde
erfolgreich vom Server zurückgegeben. Dies kann auch über aktiviert werden -p
Befehlszeilenargument an sqsh oder das $statistics variabel.
-s Sek
Wenn der Wert von xacts größer als 1 ist, führt dies dazu, dass sqsh schläft Sek. Sekunden
bevor die nächste Transaktion ausgeführt wird. Beachten Sie, dass die Zeit, die Sie mit Schlafen verbringen, beträgt
von den mit dem angezeigten statistischen Informationen ausgeschlossen -p Flagge.
-t [Filter]
Filtert den Befehlsstapel durch ein externes Programm, Filterund vor dem Sein
an den SQL Server gesendet. Wenn Filter wird nicht geliefert, dann $filter_prog verwendet wird
(Standard ist 'm4 -'). Dieser Wert kann auch über eingestellt werden $filter und $filter_prog
Variablen.
-w Breite
Überschreibt den Wert von $breite für die Lebensdauer der Abfrage (siehe $breite unten).
-x [xgeom]
Aktiviert den X11-Anzeigefilter (nur wenn die X11-Unterstützung in sqsh kompiliert ist).
bewirkt, dass die Ergebnismenge an ein separates Fenster gesendet wird. Wenn xgeom wird dann geliefert
Dieser Wert wird verwendet als $xgeom für die Lebensdauer der Abfrage (siehe $xgeom unten).
-T xwin_title
Geben Sie den Titelnamen des zu erstellenden X-Ergebnisfensters an. Dies wird vorübergehend der Fall sein
überschreibt den Wert von $xwin_title. Nur sinnvoll, -T in Verbindung mit anzugeben
-x.
xacts
Gibt an, wie oft der Inhalt der Arbeiten Puffer sollte ausgeführt werden.
Beachten Sie, dass ähnlich wie bei isql eine Ergebnismenge nur während des Finales angezeigt wird
Ausführung der Charge. Auch der Inhalt der Arbeiten Puffer werden lediglich erweitert
Einmal vor der ersten Ausführung, damit sich der Inhalt des Puffers nicht ändert
zwischen aufeinanderfolgenden Hinrichtungen.
\bcp [bcp_options]-Tabelle
Das \bcp Befehle fungieren als eine Art Erweiterung \gehen Befehl, der das Ergebnis umleitet
Satz(e) des Stapels über das BCP-Protokoll an einen anderen Server übertragen. Obwohl es möglich ist
\bcp Das Ergebnis wird auf den aktuellen Server zurückgesetzt (der $DSQUERY Variable), das ist
lässt sich einfacher über ein SELECT INTO erreichen.
Die wichtigsten Details von \bcp gehen Sie so vor: Zuerst wird der aktuelle SQL-Batch erweitert
(es sei denn, die $ expand Variable wird auf 0 gesetzt) und an die Datenbank gesendet
wird bearbeitet. Wenn alles gut geht, wird eine neue Verbindung zum Ziel aufgebaut
Datenbank (wie über $DSQUERY oder angegeben). -S Flag), mit dem die Ergebnismenge übertragen werden soll
bcp. Anschließend wird die Ausgabe der Quelldatenbankverbindung an den neuen BCP gebunden
Verbindung und Datenübertragung erfolgt. \bcp kann mehrere Ergebnismengen verarbeiten
ohne Probleme (einschließlich der von gespeicherten Prozeduren zurückgegebenen Ergebnismengen usw.)
vorausgesetzt, dass alle Ergebnismengen für die Zieltabelle gültig sind.
Das Äquivalent eines „bcp out“ kann mit durchgeführt werden bcp Einstellung des Anzeigestils und
Dateiumleitung (siehe $stil Variable).
-Ein Paket
Gibt die TDS-Paketgröße an, die für die Kommunikation mit dem Zielserver verwendet wird. Wenn
Wenn dies nicht angegeben wird, wird standardmäßig der Wert the verwendet $packet_size Variable, oder (falls das so ist
nicht festgelegt), die Standardpaketgröße des Servers (normalerweise 512 Byte).
-b Batch_Größe
Die Anzahl der Datensätze, die in einer einzelnen Transaktion zwischen Servern übertragen werden. Notiz
dass das Erreichen des Endes eines Ergebnisses dazu führt, dass der Stapel übertragen wird, unabhängig davon
vom Wert von Batch_Größe. Der Standardwert ist der gesamte Ergebnissatz.
-Ich schreibe
Der vollständige Pfad einer alternativen Sybase Schnittstellen zu verwendende Datei.
-J Zeichensatz
Gibt die Standardeinstellung an charset Wird für die Kommunikation mit dem SQL Server verwendet. Das
Standardmäßig wird der aktuelle Zeichensatz verwendet (der Wert von $charset Variable).
-m maxerr
Die maximale Anzahl von Stapeln, die zuvor fehlschlagen können \bcp gibt den Geist auf
(Standard ist 10). Beachten Sie, dass sich dies nur auf Fehler innerhalb einer bestimmten Charge bezieht.
Bei der Durchführung eines BCP mehrerer Ergebnismengen an einen Server, wenn eine bestimmte Ergebnismenge vorhanden ist
hat, sagen wir, zu viele Spalten oder fehlerhafte Datentypen, dann ist es der gesamte BCP-Prozess
abgebrochen, unabhängig vom Wert von maxerr.
-N Gibt an, dass der Wert für eine Identitätsspalte in der Zieltabelle lautet
wird im Ergebnissatz bereitgestellt.
-P Passwort
Das Passwort für Benutzer zum Herstellen einer Verbindung erforderlich Server. Dies ist die Standardeinstellung $passwort if
nicht beiliegend.
-S-Server
Der Name der Sybase Server Um eine Verbindung herzustellen, ist dies standardmäßig auf $DSQUERY wenn nicht
geliefert.
-U Benutzer
Die Sybase Benutzer um eine Verbindung zur Datenbank herzustellen als, ist dies standardmäßig der Fall $ username Variable
falls nicht mitgeliefert.
-X Bewirkt, dass mit dem Zielserver eine Passwortverhandlung durchgeführt wird
Clientseitige Verschlüsselung.
-z Sprache
Gibt die zu verwendende Spracheinstellung an.
Tabelle
Wie bei regulären bcp, Tabelle kann entweder ein vollständig oder teilweise angegebener Tabellenname sein
im Zielserver. Beachten Sie, dass da eine neue Datenbankverbindung besteht
Während der BCP-Prozesse wird der Datenbankkontext der Verbindung hergestellt
Möglicherweise stimmt es nicht mit dem aktuellen Kontext überein, daher ist es normalerweise am sichersten, es vollständig zu verwenden
Geben Sie den Tabellennamen in der Form Datenbank.Eigentümer.Tabelle an.
\rpc [rpc_opt] rpc_name [[parm_opt] [@var=]value ...]
Das \rpc Der Befehl wird verwendet, um einen Aufruf einer gespeicherten Prozedur direkt in der verbundenen Verbindung aufzurufen
Server. Dieser Befehl ist besonders nützlich für die Kommunikation mit einem Open Server
unterstützt Sprachaufrufe nicht direkt.
\rpc ruft die Remote-Prozedur auf rpc_name mit einem oder mehreren Parametern, die sein können
benannt (mit @var) oder anonym (durch Nichtangabe eines Namens) erfolgen. Leider aufgrund der
Tatsache ist, dass Sybases Implementierung von RPCs die meisten impliziten nicht direkt unterstützt
Datentypkonvertierungen (hauptsächlich zwischen VARCHAR (der Zeichenfolge, die Sie im Befehl angeben).
Zeile) und die meisten anderen Datentypen (die die Remote-Prozedur erwartet), die
Syntax für die \rpc Der Befehl ist etwas komplex. Kurz gesagt, hier ist jedoch, wie die Dinge aussehen
Arbeit:
Da die \rpc Befehlszeile wird analysiert, sqsh versucht, den Datentyp des zu erraten
Parameter Wert basierend auf dem Format (z. B. wenn es nur Ziffern enthält, ist es
als Ganzzahl angenommen), sqsh führt dann zuvor eine explizite Datentypkonvertierung durch
zum Aufrufen des Remoteprozeduraufrufs. Wenn sqsh Vermutungen falsch, mehrere Flaggen sind vorhanden
bereitgestellt, um die korrekte Datentypkonvertierung zu erzwingen (siehe parm_opt).
Display Optionen
Die folgenden Optionen können an einer beliebigen Stelle in der Befehlszeile angegeben werden und werden zur Beeinflussung verwendet
die Art und Weise, in der die vom Remote-Prozeduraufruf zurückgegebenen Ergebnismengen vorliegen
angezeigt:
-d Anzeige
Wenn die X-Unterstützung in sqsh kompiliert wird, ist der Wert von Display wird als X-Fenster verwendet
DISPLAY-Variable. Beachten Sie, dass dies normalerweise im Lieferumfang enthalten ist -x Flagge, unten.
-f Schaltet die Anzeige der Fußzeilenmeldung „(%d Zeilen betroffen)“ aus. Fußzeilennachrichten können
kann auch über das ausgeschaltet werden $Fußzeilen variabel.
-h Schaltet alle Spaltenüberschriften aus. Diese können auch über deaktiviert werden $header variabel.
-m-Stil
Ändert den Anzeigestil vorübergehend in Stil für die Dauer des Befehls.
Derzeit unterstützte Stile sind horizontal (oder hor or horizontal), vert (oder vertikal), bcp,
csv, html, Ziel, ziemlich und keine. Der Anzeigestil kann über dauerhaft eingestellt werden
$stil variabel oder die -m Kommandozeilen-Flag.
-r Anforderung, die Prozedur vor der Ausführung neu zu kompilieren.
-w Breite
Setzt die Ausgabebreite vorübergehend auf Breite. Die Ausgabebreite kann fest eingestellt werden
über das $breite variabel.
-x [xgeom]
Sendet die Ausgabe an ein separates X-Fenster. Wenn xgeom bereitgestellt wird, verwendet das X-Fenster dies
Geometrie (vgl $xgeom für Details).
-T xwin_title
Geben Sie den Titelnamen des zu erstellenden X-Ergebnisfensters an. Dies wird vorübergehend der Fall sein
überschreibt den Wert von $xwin_title. Nur sinnvoll, -T in Verbindung mit anzugeben -x.
Parameter Optionen
Die folgenden Optionen können unmittelbar vor der Angabe eines Parameters angegeben werden Wert
und werden verwendet, um die Art und Weise zu beeinflussen, in der sqsh interpretiert den Inhalt der Wert vor
Aufruf der Remote-Prozedur. Obwohl sqsh erlaubt jede beliebige Kombination dieser Parameter
kombiniert werden, macht es nur wirklich Sinn, die zu kombinieren -x Flagge mit jeder anderen Flagge.
-b Zeigt an, dass die Wert Die angegebene Variable sollte vorher in VARBINARY konvertiert werden
Aufruf rpc_name. Dieses Flag ist implizit (dh Sie müssen es nicht angeben), wenn Wert beginnt
mit „0x“ und enthält nur Ziffern.
-c Zeigt an, dass die Wert Die angegebene Datei sollte zuvor in VARCHAR konvertiert werden
Aufruf rpc_name. Dieses Flag ist implizit, wenn Wert stimmt mit keinem der impliziten überein
Konvertierungen für die anderen Datentypen.
-d Zeigt an, dass die Wert das angegebene soll in double (float) konvertiert werden
vor dem Anruf rpc_name. Dieses Flag ist implizit, wenn Wert ist ein gültiger Gleitkommawert
Notation (z. B. 0.1, .1, 1.4e10 oder 4e10).
-i Zeigt an, dass die Wert Der angegebene Wert sollte vorher in eine Ganzzahl (int) konvertiert werden
Aufruf rpc_name. Dieses Flag ist implizit, wenn Wert enthält nur Ziffern (und,
optional ein Vorzeichen).
-y Zeigt an, dass die Wert Der angegebene Betrag sollte vor dem Anruf in Geld umgewandelt werden
rpc_name. Dieses Flag ist implizit, wenn Wert beginnt mit einem „$“ und enthält nur Ziffern
und optional eine Dezimalzahl.
-n Zeigt an, dass die Wert Der angegebene Wert sollte zuvor in einen numerischen Wert konvertiert werden
Aufruf rpc_name. Dieses Flag ist niemals implizit, da Wert würde immer entweder mit int übereinstimmen
(-i) oder float (-d); Beide Typen werden jedoch implizit in a konvertiert
numerisch nach Bedarf durch den Prozeduraufruf.
-u Zeigt das an Wert sollte ignoriert und als NULL-Wert behandelt werden. Dieses Flag ist
implizit wenn Wert Ist "".
Puffer
Die folgenden Befehle können zum Erstellen, Zerstören oder Bearbeiten der verschiedenen Puffer verwendet werden
Beschrieben in der PUFFER Abschnitt, oben.
\klar
Das \klar Der Befehl verwirft den aktuellen Puffer und steht im Widerspruch zum
\zurücksetzen Befehl, speichert den aktuellen Puffer nicht im Verlauf. Wenn sqsh kompiliert wird
Mit Readline-Unterstützung löscht dieser Befehl auch den Bildschirm. (wie ^l es tut.) Die
alias klar wird beim Start automatisch eingerichtet.
\history [-i] [-x count]
Zeigt die letzte an $histsize Chargen, die entweder über die an die Datenbank gesendet wurden
\gehen Befehl oder gelöscht von der Arbeiten Puffer über das \zurücksetzen Befehl. Mit Option -i
Außerdem wird angezeigt, wie oft der Puffer verwendet wurde und wann er zuletzt verwendet wurde
gebraucht. Diese Informationen können bei der Verwendung von von besonderem Interesse sein $histunique -Funktion
Das -x Die Option kann stattdessen die Anzahl der aktuellsten Verlaufseinträge angeben, die angezeigt werden sollen
der Gesamtliste der Verlaufseinträge.
\hist-load [Dateiname]
Laden Sie eine Verlaufsdatei und hängen Sie Elemente an die aktuelle Verlaufsliste an. Verwenden $Geschichte wenn nein
Dateiname wird als Parameter angegeben.
\hist-save [Dateiname]
Speichert die aktuellen Verlaufspuffer im $Geschichte Datei oder auf den Dateinamen
als Parameter angegeben.
\neu zeichnen
Gibt eine Anfrage an die aktuelle Lese-, Auswertungs- und Druckschleife zurück, damit diese erneut angezeigt wird
Strom Arbeiten Puffer. Wenn dieser Befehl im nicht interaktiven Modus ausgeführt wird, hat er keine Auswirkung.
\zurücksetzen
Das \zurücksetzen Der Befehl entspricht direkt dem isql 'Reset'-Befehl, der a zurückgibt
Anfrage an die Read-Eval-Print-Schleife, um den Inhalt des aktuellen zu löschen Arbeiten Puffer
und wenn Sie im interaktiven Modus arbeiten, platzieren Sie eine Kopie des Puffers in der
Geschichte Puffer. Der Deckname zurückstellen wird beim Start von automatisch eingerichtet sqsh für
Abwärtskompatibilität mit isql.
\buf-append dst-buffer [src-buffer]
Fügt den Inhalt von hinzu Quellpuffer (standardmäßig !.) auf den Inhalt von dst-PufferWenn
Es existiert. Wenn dst-Puffer existiert nicht, es wird erstellt.
\buf-copy dst-buffer [src-buffer]
Kopiert den Inhalt von Quellpuffer (standardmäßig !., der Arbeiten Puffer, falls nicht mitgeliefert),
zu dst-Puffer. Beziehen auf PUFFER Informationen zu Pufferbenennungskonventionen finden Sie hier.
\buf-del [Puffer|Bereich]
Entfernen Sie einen Verlaufspuffer aus der Verlaufsliste. Sie können auch eine Bereichsliste angeben
bestehend aus der ersten und letzten Puffernummer, getrennt durch ein „-“. Zum Beispiel:
„\buf-del 1-10“ löscht die ersten 10 Verlaufseinträge. Ein weiteres Beispiel: „\buf-del
21“ löscht nur Puffer Nummer 21. Beachten Sie, dass die Verlaufspuffer gelöscht werden
fortlaufend neu nummeriert.
\buf-edit [-r read-buf] [-w write-buf]
Das \buf-edit Der Befehl wird verwendet, um den Inhalt eines Puffers zu bearbeiten und die Änderungen zu platzieren
in einen anderen Puffer. Dieser Befehl kann nur im interaktiven Modus ausgeführt werden. Wenn lesen-
buf nicht angegeben ist, ist der zu bearbeitende Puffer standardmäßig !. Wenn er nicht leer ist,
andernfalls ist die Standardeinstellung !!. Wenn write-buf nicht bereitgestellt wird, dann ist es der bearbeitete Puffer
zurückgeschrieben an !..
Standardmäßig \buf-edit verwendet die Umgebungsvariable $ EDITOR zuerst, gefolgt von $SICHTBAR
um zu bestimmen, welcher Editor verwendet werden soll. Standardmäßig wird „vi“ verwendet, wenn die Variable nicht festgelegt ist.
Es ist wichtig zu beachten, dass ab Version 1.2 \buf-edit ist nicht mehr in der Lage, das zu verwenden
Name eines Alias als Namen des zu startenden Editors. Dies ist in erster Linie darauf zurückzuführen
die Änderung im Verhalten von Alias (siehe Abschnitt Aliasing, unten, für Einzelheiten).
Die Befehle bearbeiten vi und Emacs werden beim Start von automatisch eingerichtet sqsh für
Abwärtskompatibilität mit isql.
\buf-get-Puffer
Das \buf-get Der Befehl wird als Kurzform zur Ausführung bereitgestellt \buf-Kopie Es ist die
Äquivalent zum Laufen:
\buf_append !. Puffer
\buf-load [-a] Dateiname [dst-buffer]
Kopiert den Inhalt von Dateinamen in dst-Puffer (Standard ist !.). Wenn die -a Flagge ist
geliefert, der Inhalt von Dateinamen werden angehängt dst-Puffer. Beachten Sie, dass es illegal ist
versuchen, in den Inhalt des Verlaufspuffers zu schreiben.
\buf-save [-a] Dateiname [src-buffer]
Speichert den Inhalt von Quellpuffer (Standard ist !.) bis Dateinamen. Wenn der -a Flagge ist
sofern der Inhalt beigefügt ist Dateinamen anstatt den aktuellen zu überschreiben
Inhalt.
\buf-show [Puffer]
Zeigt den Inhalt der benannten Datei an puffern. Wenn puffern nicht mitgeliefert wird, dann die
Der Inhalt aller benannten Puffer wird angezeigt. Dieser Befehl unterscheidet sich geringfügig von
die oben genannten Befehle, da es nur zulässig ist, a anzugeben Namens Puffer puffern, Geschichte
Pufferund der Arbeiten Puffer wird keine Ergebnisse bringen.
Variablen
Die folgenden Befehle werden verwendet, um den Inhalt interner Variablen zu manipulieren
Umgebungsvariablen.
\set [-x] [name=Wert ...]
Wenn keine Argumente angegeben werden \einstellen dann sind die aktuellen Werte aller Variablen
angezeigt. Ansonsten die Variable Name eingestellt ist Wert. Beachten Sie, dass einige interne
Variablen (vgl SPECIAL VARIABLEN) darf nur mit bestimmten gesetzt werden Werts, also diese Aktion
kann fehlschlagen und der vorherige Inhalt bleibt erhalten Name intakt. Das -x Flag verursacht die
Variable, die in die Umgebung aller gestarteten Programme exportiert werden soll sqsh.
Job Control
Die folgenden Befehle werden verwendet, um den Status von Hintergrundjobs anzuzeigen oder diese zu bearbeiten
aktuell ausgeführt werden, entsprechen diese in etwa den Befehlen, die von Shells wie bereitgestellt werden
csh(1).
\jobs [-i]
Zeigt den Status aller derzeit ausgeführten Jobs an, einschließlich der Angabe, ob diese Jobs ausgeführt werden oder nicht
ausstehende Ausgaben haben, wie lange sie ausgeführt wurden und wann sie gestartet wurden. Der
-i Diese Option zeigt einige zusätzliche Jobinformationen an. Beachten Sie, dass die Gesamtlaufzeit von
Der Auftrag wird ab dem Zeitpunkt bestimmt, an dem er durch die Lese-Auswertung als abgeschlossen markiert wird.
druckt die Schleife, wenn sie abgefragt wird, nicht, wenn sie tatsächlich beendet wurde und von der als beendet gekennzeichnet wird
Signalhandler.
\wait [job_id]
Wird pausieren, bis der Auftrag von angegeben wird Job-ID vervollständigt. Wenn Job-ID ist eine negative Zahl
dann \Warten wird pausieren bis jedem Ausstehende Aufträge werden abgeschlossen. Wenn keine Jobs ausstehen,
or Job-ID nicht zu einem laufenden Job gehört, wird eine Fehlermeldung angezeigt. Notiz
dass, wenn mehrere Jobs ausgeführt werden, und a \Warten wird für einen von ihnen ausgestellt, der andere
Jobs werden möglicherweise nicht automatisch signalisiert, wenn sie innerhalb der Wartezeit abgeschlossen werden
konkrete Aufgabe. Die anderen Jobs müssen möglicherweise mit a signalisiert werden \Warten -1 auch sein
völlig bemerkt sqsh.
\kill job_id
Beendet den von angegebenen Job Job-ID, wodurch jegliche Ausgabe verworfen wird, die möglicherweise verzögert wird
für die Arbeit. Wenn Job-ID kein laufender Job ist, wird eine Fehlermeldung angezeigt.
\show job_id
Zeigt die verzögerte Ausgabe des abgeschlossenen Hintergrundjobs an Job-ID und entfernt den Job
aus der Liste der ausstehenden Jobs (wobei die Verzögerungsdatei entfernt wird). Wenn Job-ID is
Wenn der Job noch läuft oder kein gültiger abgeschlossener Job ist, wird eine Fehlermeldung angezeigt. Du
Möglicherweise muss ein ausgestellt werden \Warten Job-ID Erstens, um über den tatsächlichen Abschluss des Auftrags benachrichtigt zu werden.
Aliasing
Ab Version 1.2 sqsh unterstützt voll cshBefehls-Aliasing im Stil. Mit dieser Funktion sqsh
prüft das erste Wort jeder Zeile, vor zu jedem unten stehende Formular of Expansion, um zu sehen, ob es übereinstimmt
der Name eines vorhandenen Alias. Wenn dies der Fall ist, wird der Befehl mit dem Alias erneut verarbeitet
Definition, die ihren Namen ersetzt. nicht wie cshAllerdings nur eine Form der Geschichtssubstitution
ist innerhalb eines Alias verfügbar: das '!*'-Eintrag, der die aktuelle Zeile angibt, die erweitert wird.
Wenn keine Verlaufserweiterung erforderlich ist, bleiben die Argumente in der Befehlszeile unverändert.
Like csh, Aliase werden nicht rekursiv erweitert, daher ist es völlig legal, einen zu erstellen
Alias, der zu einem Befehl mit demselben Namen erweitert wird.
Mit dem folgenden Befehl wird ein Alias erstellt:
\alias [alias_name=alias_body]
Wenn dem keine Argumente übergeben werden \alias Befehl, dann die Liste der aktuellen Aliase
tatsächlich angezeigt wird. Andernfalls wird ein neuer Alias mit dem Namen erstellt Pseudonym
und ein Körper von alias_body; ob Pseudonym existiert bereits, der Körper des Existierenden
Pseudonym wird durch die neue Definition ersetzt.
Nach der Definition des neuen Alias, wann immer sqsh trifft auf eine Zeile, die mit beginnt
Pseudonym, der Rest der Zeile wird durch ersetzt alias_body bevor es weitergeht
Verarbeitung durchgeführt wird.
Wenn die Zeichenfolge '!*' existiert irgendwo im Inneren alias_body, die Argumente, die an die geliefert werden
Alias werden an dieser Stelle eingefügt, andernfalls werden die Argumente an das Ende von angehängt
die Alias-Definition. Zum Beispiel:
1> \alias hi='\echo !* sagte hallo'
1> Hallo Scott
Scott sagte Hallo
wobei als ob der Alias das nicht enthält !* Schlüsselwort, dann verhält es sich so:
1> \alias hi='\echo sagte hallo'
1> Hallo Scott
sagte hallo Scott
Es ist völlig legal, a aufzunehmen !* mehr als einmal innerhalb eines bestimmten Zeitraums alias_body.
Derzeit gibt es keine Möglichkeit, die Zeichenfolge zu umgehen !*, wenn Sie diese Funktion wirklich benötigen
Schicken Sie mir eine E-Mail.
\unalias Aliasname
Entfernt Pseudonym.
Weitere Anwendungsbereiche
Die übriggebliebenen Befehle.
\exit [x]
Das \Ausfahrt Der Befehl fordert an, dass die aktuelle Lese-, Auswertungs- und Druckschleife die Verarbeitung beendet. Wenn
die letzte Schleife kehrt zurück, sqsh wunsch(1)S. Als Parameter können Sie einen Exit-Code angeben
wird gespeichert in $exit_value und wird beim Beenden als Rückgabewert an die Shell verwendet
of sqsh. (0 <= x <= 255).
\abbrechen
Bewirkt, dass alle verschachtelten Lese-, Auswertungs- und Druckschleifen die Verarbeitung abbrechen, was zu einem Abbruch führt sqsh mit rausgehen
einen Exit-Wert von 254 (siehe Abschnitt EXIT STATUS).
\read [-a] [-n] [-h] var_name
Liest eine Eingabezeile des Benutzers und platziert den Text der Zeile in der Variablen
var_name. Wenn der -n verwendet wird, bleibt die abschließende neue Zeile in der Textzeile.
und wenn -a angegeben wird, wird der Text der Zeile an den vorhandenen Wert von angehängt
var_namedem „Vermischten Geschmack“. Seine -h Flag deaktiviert die Rückmeldung eingegebener Zeichen an den Benutzer.
\sleep Sekunden
Ursachen sqsh zu pausieren für Sekunden. Dies ist in Skripten von Stapeln nützlich, die Folgendes benötigen
um zwischen den Chargen kurz zu pausieren (dies war für mich hauptsächlich zum Testen des Hintergrunds nützlich).
Arbeitsplätze).
\echo [-n] [Argumente ...]
Genau wie das UNIX Echo(1), dies gibt seine Argumente an stdout aus, gefolgt von einem neuen-
Linie. Wenn die -n Flag bereitgestellt wird, wird die neue Zeile weggelassen.
\Garantie
Zeigt die Standard-GNU-Garantie an.
\help [Befehl]
Ohne Argumente \Hilfe zeigt eine kurze Liste aller verfügbaren Befehle an,
andernfalls bietet es spezifische Hilfe für Befehl, wenn verfügbar. Wenn Hilfe angefordert wird
auf ein bestimmtes Befehl, \Hilfe sucht nach der Datei $help_dir/command.hlp und zeigt es an
zu stdout.
\shell [Shell-Befehl]
If Schale Befehl wird dann nicht mitgeliefert sqsh wird ausgeführt $SCHALE. Wenn der $SCHALE Variable hat
nicht festgelegt wurde, dann standardmäßig / Bin / sh wird ausgeführt. Ansonsten, wenn Schale Befehl is
geliefert, dann wird es ausgeführt. Der Exit-Status des ausgeführten Befehls wird im gespeichert
besondere $? schreibgeschützte Umgebungsvariable.
\sperren
Sperrt die aktuelle Sitzung, bis das richtige Passwort eingegeben wird. Standardmäßig \sperren
versucht, das UNIX-Passwort (von / etc / passwd), die dem ausgeführten Benutzer zugeordnet ist
sqsh, jedoch wenn die $lock Wenn eine Variable festgelegt wird, wird deren Inhalt verwendet
stattdessen eine Validierung.
Beachten Sie, dass auf Systemen, die Shadow-Passwörter verwenden (in denen sogar das Passwort verschlüsselt ist).
nicht verfügbar), \sperren funktioniert nur mit dem $lock variabel.
Aliases
Die folgenden Aliase werden beim Start von eingerichtet sqsh, und sind in erster Linie vorgesehen
Abwärtskompatibilität mit isql. Diese können jederzeit mit dem entfernt werden \unalias
Befehl (entweder an der Eingabeaufforderung oder in Ihrer .sqshrc-Datei).
! Das ! Alias wird als bereitgestellt csh(1)-ähnlicher Verlaufsmechanismus und ist ein Alias von
\buf-append. Mit Version 0.7 wird dieser Alias nur aus Gründen der Abwärtskompatibilität bereitgestellt
mit früheren Versionen von sqsh. Sehen SPECIAL VARIABLEN, $history_shorthand für Details
über den neuen Kurzschriftmechanismus (die neue Kurzschrift ähnelt eher der von csh).
klar
Ein Alias für die \klar Befehl, der den Inhalt des aktuellen Arbeitspuffers verursacht
gelöscht und entsorgt werden. Außerdem wird der Bildschirm gelöscht, wenn readline kompiliert wird
in sqsh.
zurückstellen
Ein Alias für die \zurücksetzen Befehl, der den Inhalt des aktuellen Arbeitspuffers verursacht
gelöscht und in den Verlauf kopiert werden (im interaktiven Modus).
Ausgang [x]
aufhören [x]
Ein Alias für die \Ausfahrt [X] Befehl, bewirkt, dass die aktuelle Read-Eval-Print-Schleife ausgeführt wird
abgeschlossen.
bearbeiten
vi
Emacs
Diese werden als Aliase für bereitgestellt \buf-edit Befehl. Sehen BEFEHLE-Puffer für
Informationen über die Wechselwirkungen zwischen \buf-edit und Aliase.
go Wird als Alias für bereitgestellt \gehen Befehl (aus offensichtlichen Gründen).
Hilfe
Ein Alias für die \Hilfe Befehl.
In der Reihe \gehen
Wenn die Variable $semicolon_hack auf 1 (ein) gesetzt ist, unterstützt sqsh einen sogenannten In-
Linie \gehen Besonderheit. Dadurch kann der aktuelle Befehlsstapel beendet und an den gesendet werden
Datenbank in einem einzigen Schritt durch Anhängen eines ';' an das Ende des aktuellen Arbeitspuffers. Das
erlaubt
1> sp_who;
Um sich so zu verhalten, als ob Sie Folgendes eingegeben hätten:
1> sp_who
2> \go
Ebenso wird alles, was auf das Semikolon folgt, an übergeben \gehen Befehl, als ob es so wäre
Als normalen Befehl ausführen:
1> sp_who ; 2>/dev/null | mehr
Im Gegensatz zu den meisten anderen isql Ersatz, sqsh versucht, mit den Semikolons klug umzugehen. Wenn ein
Wenn ein Semikolon in einfachen oder doppelten Anführungszeichen steht, wird es nicht interpretiert.
Dazu gehören mehrere Anführungszeichen. Zum Beispiel:
1> Wählen Sie „Dies ist eine Mehrfachzeile.“
2> Zitat; es ist schlau!" ;
Im obigen Beispiel ist nur das zweite Semikolon (das am Ende der Zeile) vorhanden
interpretiert.
SPECIAL VARIABLEN
Es gibt mehrere Optionen, die über die Befehlszeilenoptionen konfiguriert werden können sqsh,
Diese sind jedoch keineswegs vollständig. Es gibt viele Aspekte von sqsh's Verhalten, das kann
nur durch Setzen spezieller Variablen verändert werden. (Tatsächlich sind es die Befehlszeilenoptionen
Legen Sie diese Variablen nur für Sie fest).
Variable Daten-Management Typen
Neben allen folgenden Variablen ist die Art der Daten aufgeführt, mit denen sie festgelegt werden können.
Alle Versuche, die Variable auf einen Datentyp zu setzen, den sie nicht akzeptiert, schlagen fehl.
Schnur
Beliebige Folgezeichen.
boolean
Ein positives boolean Der Wert kann entweder als „True“, „Yes“, „1“ oder „On“ dargestellt werden.
(Groß-/Kleinschreibung wird nicht beachtet) und ein negativer boolescher Wert kann als „Falsch“, „Nein“ oder „Nein“ dargestellt werden.
„0“ oder „Aus“ (ohne Berücksichtigung der Groß-/Kleinschreibung). Intern ändert sich jedoch der Wert der Variablen
immer entweder als „1“ oder „0“ dargestellt werden.
Weg
Muss das sein Weg Name, der für die lesbar ist sqsh
int Muss eine oder mehrere Ziffern sein. Beachten Sie, dass einige Variablen auch den Bereich einschränken
ganze Zahl.
Datumsspez
Dies ist eine Zeichenfolge in dem Format, das zur Angabe von Datums- und Uhrzeitangaben für verwendet wird Datum(1)
Befehl, oder die strftime(3 ° C) und cftime(3 ° C) Standardfunktionen der C-Bibliothek. Zum Beispiel
„%H:%M:%S“ gibt eine Zeitangabe in Stunden im 24-Stunden-Format an, gefolgt von einem Doppelpunkt
nach Minuten, gefolgt von einem Doppelpunkt, gefolgt von Sekunden.
Float-Format
Eine Zeichenfolge des Formats ps, Wobei p ist die Gesamtgenauigkeit eines Gleitkommawerts
(die Gesamtzahl der anzuzeigenden Ziffern, einschließlich der Stellen nach dem Dezimaltrennzeichen)
und s ist die Skalierung des Werts (die Gesamtzahl der Ziffern nach dem Dezimalkomma).
angezeigt werden).
Variablen
Die folgenden Variablen haben eine besondere Bedeutung sqsh und deren Einstellung
Variablen verändern das Verhalten der Shell.
$? (int)
Diese schreibgeschützte Variable kann den folgenden Rückgabewert enthalten:
· Die letzte vom SQL Server zurückgegebene Fehlernummer (@@errno) mit Schweregrad >
10 (oben Informationsmeldungen).
· Der Exit-Wert eines zuvor ausgeführten Pipe-Befehls.
· Der Rückgabewert der zuletzt ausgeführten sqsh-Funktion.
$$? (int)
Diese Variable kann das Ergebnis der zuletzt ausgeführten \if-Anweisung enthalten:
- 0 -
Der Test wurde mit „Falsch“ bewertet.
- 1 -
Der Test wurde mit „True“ bewertet.
- 2 -
Es gab einen Fehler in der Testspezifikation.
$# (int)
Enthält die Anzahl der Argumente, die an die Funktion oder das Skript sqsh übergeben werden.
$* (String-Liste)
Erweitert die vollständige Liste der Argumente, die der Funktion oder dem Skript zur Verfügung gestellt werden, wenn
aufgerufen.
${0}...${N} (int)
Wird verwendet, um Positionsfunktionsargumente zu referenzieren. Argument ${0} ist der Name des
die aufgerufene Funktion, ${1} ist das erste Argument usw.
$$ Erweitert sich auf die Prozess-ID der aktuell ausgeführten SQLSH-Sitzung.
DISPLAY
Kann den Namen des DISPLAYs enthalten, das der X-Server verwendet, um das XWindows-Ergebnis abzulegen
Fenster bei der Verwendung \gehen -x. Standardmäßig ist die $ANZEIGE Shell-Umgebung.
App Name
Enthält den Namen sqsh verwendet, um sich gegenüber dem Server zu identifizieren. Standardmäßig ist sqsh-2.1.7.
Der Anwendungsname kann wie folgt aus der Tabelle „sysprocesses“ abgerufen werden:
Wählen Sie Programmname aus master.dbo.sysprocesses aus, wobei spid=@@pid;
autouse (Zeichenfolge)
Hinweis: Die Bedeutung dieser Variablen ist veraltet.
If $autouse eingestellt ist, und die $Datenbank Variable wurde nicht gesetzt, dann diese Variable
Ursachen \verbinden eine „Nutzung“ durchführen $autouse" sobald eine Verbindung hergestellt wurde.
Diese Variable kann auch mit festgelegt werden -D Befehlszeilenoption.
Banner (boolean)
Schaltet die beim Start angezeigte Bannernachricht aus. Diese Variable ist standardmäßig auf 1 eingestellt und kann möglicherweise nicht angezeigt werden
kann auch mit ausgeschaltet werden -b Befehlszeilenargument.
batch_failcount (int)
Diese interne Variable wird verwendet, um die Anzahl der fehlgeschlagenen Chargen zu verfolgen
auszuführen (im Wesentlichen die Häufigkeit, mit der der Fehlerbehandler aufgerufen wurde).
Ein Batch gilt als fehlgeschlagen, wenn ein Fehler mit einem Schweregrad vorliegt $thresh_fail is
angetroffen. Wenn $batch_failcount Lauf $thresh_exit sqsh Exits mit einem Exit-Wert
der Gesamtzahl der ausgefallenen Chargen. Einstellung $batch_failcount zu den
Die Zeichenfolge „“ führt dazu, dass der Wert auf Null zurückgesetzt wird. Jeder andere Wert kann unvorhersehbar sein
Ergebnisse angezeigt
Weitere Informationen finden Sie auch in den EXIT STATUS .
batch_pause (boolean)
Bewirkt, dass nach jedem Stapel die Meldung „Pausiert. Drücken Sie die Eingabetaste, um fortzufahren …“ angezeigt wird
wird ausgeführt. Diese Variable in Verbindung mit $echo eignet sich gut zum Debuggen von SQL
Skripte, die mit angegeben werden -i .
bcp_colsep (Zeichenfolge)
Wird als Trennzeichen zwischen Spalten während der Ausgabe im BCP-Stil verwendet (siehe $stil
Konfigurationsvariable und die -m Option zum \gehen Befehl). Die Standardeinstellung ist
„|“.
bcp_rowsep (Zeichenfolge)
Wird während der Ausgabe im BCP-Stil als Trennzeichen zwischen Zeilen verwendet (siehe $stil Konfiguration
Variable und die -m Option zum \gehen Befehl). Beachten Sie, dass es sich um eine neue Zeile („\n“) handelt
Dieser Wert wird automatisch angehängt und sollte nicht angegeben werden. Die Standardeinstellung ist
„|“.
bcp_trim (boolean)
Steuert, ob die Ausgabe im BCP-Stil nachfolgende Leerzeichen von der festen Länge abschneidet
Säulen. Der Standardwert ist „True“.
verkettet (boolesch)
Wenn festgelegt, verwendet sqsh den „verketteten“ Transaktionsmodus (auch bekannt als „AutoCommit aus“). Einstellung
Dies hat KEINE Auswirkungen auf die aktuelle Verbindung. Es kann über die Befehlszeile eingestellt werden
Argument -n.
Zeichensatz (Zeichenfolge)
Wenn diese Variable vor dem Herstellen einer Verbindung mit SQL Server festgelegt wird, dann
während der Verbindung sqsh fordert den Server auf, sich von und zum umzuwandeln
angefordert charset. Nach dem Verbindungsaufbau wird diese Variable automatisch gesetzt
an den aktuell verwendeten Zeichensatz.
clear_on_fail (boolean)
Normalerweise, wann immer die \gehen Befehl wird ausgeführt, sqsh löscht den aktuellen Arbeitspuffer
Inhalte und verschiebt sie in die Geschichte. Einstellung $clear_on_fail auf 0, verlässt die aktuelle Arbeit
Puffer intakt, wenn beim Senden des Inhalts an die Datenbank ein Fehler auftritt.
Der Standardwert ist 1 oder on.
colsep (Zeichenfolge)
Verursacht die Zeichenfolge colsep wird verwendet, um die Ausgabespalten der SQL-Spalte abzugrenzen
Der Standardwert ist „ “ und kann auch über das Befehlszeilenargument festgelegt werden -s.
Spaltenbreite (int)
Wird verwendet, um die maximale Spaltenbreite zu steuern, die von angezeigt wird ziemlich Anzeigestil (siehe
$stil unter). Wenn eine Zeile einer Spalte diese Breite überschreitet, wird sie in a umbrochen
relativ optisch ansprechender Weise bei $colwidth Figuren. Beachten Sie jedoch, dass wenn
Die Bildschirmbreite reicht aus, um alle Spalten aufzunehmen $colwidth darf bis zum überschritten werden
Breite des Bildschirms erreicht ist.
Datenbank (Zeichenfolge)
Wenn diese Variable vor dem Herstellen einer Verbindung zum SQL Server gesetzt wird, wird die a
"verwenden $Datenbank" wird unmittelbar nach dem Verbindungsaufbau ausgeführt. Einmal a
Sobald die Verbindung hergestellt wurde, wird diese Variable automatisch auf den aktuellen Wert gesetzt
Datenbankkontext.
Datum (Datumsspezifikation)
Diese Variable kann mit einem Datumsformat festgelegt werden (siehe Manpage für). Datum(1)), und das
Die Variable wird im angegebenen Format auf das aktuelle Datum erweitert. Das Standardformat für
Diese Variable ist %d-%b-%y (z. B. 02).
datetime (Datumsspezifikation)
Diese Variable kann mit einem Datumsformat ähnlich wie festgelegt werden $datum und $ Zeit und ist es gewohnt
Steuern Sie das Anzeigeformat aller SQL Server-Spalten DATETIME und SMALLDATETIME.
Beachten Sie, dass diese Funktion auf den betriebssystemspezifischen Gebietsschemainformationen basiert
zum Bestimmen von Dingen wie dem Namen des Monats und des Tages, anstatt zu gehen
über die CT-Lib-Gebietsschemainformationen. Dies bedeutet, dass das Datumsformat könnte
stimmt möglicherweise nicht mit dem Gebietsschema überein, das mithilfe von angefordert wurde -z Flagge. Zum Beispiel, wenn sqsh
wird auf einem Betriebssystem ausgeführt, das für US-Englisch konfiguriert ist, fordert jedoch Französisch als Sprache an
Sprache der Wahl verwenden -z, die Verwendung von $datetime führt dazu, dass alle Datumsinformationen angezeigt werden
nicht in Französisch, sondern in US-Englisch angezeigt werden.
In der Variablen definierte gewöhnliche Zeichen bleiben ohne Konvertierung erhalten.
Durch ein „%“-Zeichen eingeleitete Zeichen werden bei der Anzeige eines Spaltenwerts ersetzt
wie folgt:
[] Alles, was zwischen einem Klammerpaar („[“ und „]“) enthalten ist, wird entfernt, wenn
Anzeigen von SMALLDATETIME-Spalten. Diese Funktion ist besonders nützlich zum Entfernen
die Sekunden- und Millisekundenwerte, die nicht auf SMALLDATETIME anwendbar sind
Trotzdem. Bei DATETIME-Spalten werden nur die tatsächlichen Klammern entfernt.
%a Der abgekürzte Wochentagsname gemäß dem aktuellen Betriebssystemgebietsschema.
%A Der vollständige Wochentagsname gemäß dem aktuellen Betriebssystemgebietsschema.
%b Der abgekürzte Monatsname gemäß dem aktuellen Betriebssystemgebietsschema.
%B Der vollständige Monatsname gemäß dem aktuellen Betriebssystemgebietsschema.
%c Die bevorzugte Datums- und Uhrzeitdarstellung für das aktuelle Betriebssystem
lokal.
%d Der Tag des Monats als Dezimalzahl (Bereich 0 bis 31).
%D Das Datum im US-Format (MM/TT/JJ).
%H Die Stunde als Dezimalzahl im 24-Stunden-Format (Bereich 00 bis 23)
%I Die Stunde als Dezimalzahl im 12-Stunden-Format (Bereich 01 bis 12)
%j Der Tag des Jahres als Dezimalzahl (Bereich 001 bis 366).
%m Der Monat als Dezimalzahl (Bereich 10 bis 12).
%M Die Minute als Dezimalzahl.
%p Entweder 'am' oder 'pm' entsprechend dem angegebenen Zeitwert oder dem entsprechenden
Zeichenfolgen für das aktuelle Betriebssystemgebietsschema.
%r Die Uhrzeit im 12-Stunden-Format (hh:mm:ss [AM|PM]).
%s Sekunden seit dem Epoc (1970-01-01 00:00:00 UTC) (dies wird nicht auf allen unterstützt).
Systeme).
%S Die Sekunde als Dezimalzahl.
%T Die aktuelle Uhrzeit im 24-Stunden-Format (hh:mm:ss).
%u Die Millisekunde als Dezimalzahl.
%U Die Wochennummer des aktuellen Jahres als Dezimalzahl, beginnend mit der ersten
Sonntag als erster Tag der ersten Woche.
%W Die Wochennummer des aktuellen Jahres als Dezimalzahl, beginnend mit der ersten
Montag als erster Tag der ersten Woche.
%w Der Wochentag als Dezimalzahl, Sonntag ist 0.
%x Die bevorzugte Datumsdarstellung für das aktuelle Gebietsschema ohne Uhrzeit.
%X Die bevorzugte Zeitdarstellung für das aktuelle Gebietsschema ohne Datum.
%y Das Jahr als Dezimalzahl ohne Jahrhundert (Bereich 00 bis 99).
%Y Das Jahr als Dezimalzahl einschließlich des Jahrhunderts.
%Z Die Zeitzone (z. B. EDT) oder nichts, wenn keine Zeitzone bestimmbar ist.
%% Ein wörtliches „%“-Zeichen.
debug (Zeichenfolge)
If sqsh Wurde mit aktiviertem Debugging (-DDEBUG) kompiliert, kann diese Variable verwendet werden
um die Menge der angezeigten Debugging-Ausgabe zu steuern. $debug kann auf eine Pipe (|) gesetzt werden
durch getrennte (logisches ODER) Satz der folgenden Wörter, um verschiedene Teile davon einzuschalten
Debugging: ALIAS, AVL, BCP, DISPLAY, ENV, ERROR, EXPAND, FD, JOB, ZEILE LESEN (Abk. RL),
RPC, SCREEN, SIG, SIGCHLD (oder SIGCLDoder ALLER.
defer_bg (boolean)
Wenn ein Job im Hintergrund ausgeführt wird (über ein „&“ in der Befehlszeile), wird normalerweise der
Die Ausgabe des Jobs wird in eine temporäre Datei verschoben (in $tmp_dir) bis der Benutzer
fordert die Ausgabe an, die mit angezeigt werden soll \zeigen Job-ID. Auf diese Weise die Ergebnisse der Arbeit
beeinträchtigt nicht die Aktivitäten des Benutzers. Wenn Sie diese Variable auf „false“ setzen, wird dies der Fall sein
Dies führt dazu, dass keine verzögerten Ausgabedateien erstellt und an den Bildschirm gesendet werden
sofort
echo (boolean)
Rahmen $echo to on (1) bewirkt, dass jeder Befehl über den an die Datenbank übermittelt wird \gehen
Befehl, der vor der Ausgabe angezeigt werden soll. Diese Variable ist standardmäßig 0 (oder aus) und
kann auch mit eingestellt werden -e Befehlszeilenoption.
Verschlüsselung (boolean)
Einstellen der $Verschlüsselung Variable, bevor eine Verbindung zum Server hergestellt wird
bewirken, dass die Anmeldeverbindung mithilfe der clientseitigen Passwortverschlüsselung initiiert wird. Das
Variable kann auch mit eingestellt werden -X Befehlszeilenoption.
exit_failcount (boolean)
Wenn Sie diesen Wert auf 1 setzen, wird dies verursacht sqsh um einen Exit-Status von zurückzugeben $batch_failcount
statt 0, bei einer fehlerfreien Beendigung. Sehen EXIT STATUS für Details. Der Standard
Wert ist 0.
exit_value (int)
Wenn Sie sqsh beenden, indem Sie einen Exit-Code angeben, z \Ausfahrt 3 oder mit einem der
Aliase wunsch or verlassen Befehle, dann wird dieser Wert dem zugewiesen $exit_value
Variable. Sie können einen Wert auch mit dem zuweisen \einstellen Befehl. Wenn sqsh bestimmt
Diese Variable hat während der Beendigung einen Wert ungleich Null. Dieser Wert wird als Exit verwendet
Code. Sehen EXIT STATUS .
erweitern (boolesch)
Standardmäßig, wenn die \gehen Wenn der Befehl ausgeführt wird, wird der Inhalt des aktuellen Arbeitspuffers angezeigt
wird um alle Umgebungsvariablen erweitert, bevor es an die Datenbank gesendet wird
Ausführung. Durch Setzen dieser Variable auf „0“ wird der Puffer nicht mehr erweitert
bevor es an die Datenbank gesendet wird. Dies ist nützlich, wenn entweder (1) Zeichenfolgen vorhanden sind
der Puffer, der ein „$“ enthält und nicht erweitert werden soll, oder (2) für
Leistungsgründe; Die Ausführung erfordert Zeit (und eine zusätzliche Kopie des Puffers).
Variable Erweiterung.
Filter (boolean)
Schaltet die Filterung des SQL-Batches durch ein externes Programm (definiert durch) um
$filter_prog Variable (unten), bevor sie an den SQL Server gesendet wird. Der Standardwert ist „0“,
oder „aus“.
filter_prog (Zeichenfolge)
Definiert das externe Programm, durch das der SQL-Batch zuvor gefiltert wird
an den SQL Server gesendet wird. Diese Variable wird ignoriert, wenn $filter auf '0' gesetzt ist oder
'aus'. Der Standardwert ist „m4 -“.
float (Float-Format)
Definiert das Anzeigeformat (Genauigkeit und Skalierung) für alle Gleitkommawerte
angezeigt von sqsh. Der Standardwert ist „18.6“. Beachten Sie, dass Werte über dem definierten Wert liegen
Präzision werden nicht abgeschnitten, daher kann eine zu niedrige Einstellung dieses Werts dazu führen, dass Spalten in a
Die Ergebnismenge ist falsch ausgerichtet.
Fußzeilen (boolesch)
Schaltet das „(%d betroffene Zeilen)“ nach einem Ergebnissatz um. Der Standardwert für diese Variable
ist '1'.
Header (boolean)
Schaltet die Spaltenüberschriften vor einem Ergebnissatz um. Der Standardwert für diese Variable ist
'1'.
help_dir (Pfad)
Dies ist der Speicherort der Hilfedateien, die von verwendet werden \Hilfe Befehl, normalerweise es
Der Standardwert ist etwa /usr/local/lib/sqsh/help.
hist_auto_save (int)
Wenn variabel $histsave ist an und die $hist_auto_save Variable hat einen größeren Wert
als 0, dann wird der Verlauf automatisch gespeichert $Geschichte nachdem $hist_auto_save
Änderungen der Historienpuffer. Wenn der Wert 0 ist (Standard), dann erfolgt keine Automatik
Die Speicherung des Verlaufs wird durchgeführt.
Histnum (int)
Enthält die Historiennummer, die dem aktuellen Befehlsstapel in Kürze zugewiesen wird
wie die \gehen Befehl wird ausgeführt. Diese Variable sollte als schreibgeschützt betrachtet werden. Siehe auch
die Diskussion über die $histunique variabel.
Geschichte (Pfad)
Dies ist der Speicherort der Verlaufsdatei, die zum Speichern und Abrufen des Verlaufs eines Benutzers verwendet wird
beim Starten und Herunterfahren. Dies ist die Standardeinstellung $HOME/.sqsh_history. Diese Variable ist
jedes Mal erweitert, wenn von sqsh darauf verwiesen wird, ganz ähnlich $Eingabeaufforderung is
jedes Mal referenziert, wenn die Eingabeaufforderung angezeigt wird.
History_shorthand (boolean)
Diese Variable ist nur innerhalb einer interaktiven Sitzung von Bedeutung. Wenn es eingestellt ist, wird es eingeschaltet
die Möglichkeit, einen beliebigen benannten Puffer oder Verlaufspuffer an den aktuellen Arbeitspuffer anzuhängen
in einem „sh“-Geschichtsstil, wie zum Beispiel „!40“. Seien Sie vorsichtig mit dieser Funktion, sqsh ist nicht
Ich bin furchtbar intelligent, wenn es darum geht, nach historischen Abkürzungen zu suchen, also ist es möglich, dass es so ist
verwirrt werden (obwohl es schlau genug ist,! in Zeichenfolgen in Anführungszeichen zu ignorieren).
histsave (boolean)
Der Wert dieser Variablen wird von verwendet sqsh um anzugeben, ob der Verlauf angezeigt werden soll
gespeichert in $Geschichte vor der Beendigung von sqsh.
histsize (int)
Der Wert dieser Variablen wird verwendet, um die maximale Anzahl der Verlaufseinträge zu ändern
instandgehalten von sqsh (Der Standardwert ist 10). Beachten Sie, dass der Wert hierfür verringert wird
Die Variable führt dazu, dass einige Verlaufseinträge verloren gehen.
histunique (boolean)
Wenn eingestellt, sqsh Behält eine MRU-LRU-Reihenfolge der ausgeführten Puffer bei und speichert nicht
doppelte Befehlspuffer. Beobachten Sie beispielsweise die folgende Situation:
LINUX1502.user1.master.1> \history
(1) sp_who
(2) Gewähren Sie sa_role die Rolle mon_role
(3) Wählen Sie * aus monProcessActivity aus
(4) Wählen Sie @@authmech,show_sec_services()
(5) wählen Sie @@servername,@@authmech,show_sec_services()
LINUX1502.user1.master.1> sp_who
LINUX1502.user1.master.2> los
... Ausgabe weggelassen
LINUX1502.user1.master.1> \history
(1) Gewähren Sie sa_role die Rolle mon_role
(2) Wählen Sie * aus monProcessActivity aus
(3) Wählen Sie @@authmech,show_sec_services()
(4) wählen Sie @@servername,@@authmech,show_sec_services()
(5) sp_who
sp_who ist der zuletzt ausgeführte Befehl und der Puffer – ursprünglich der letzte in der Liste –
steht nun ganz oben auf der Liste. Wenn ein bereits vorhandener Puffer wiederverwendet wird, wird der Wert des
$histnum Variable wird nicht geändert.
Hostname (Zeichenfolge)
Wird während des Verbindungsvorgangs verwendet, um SQL Server den Namen des Hosts anzuzeigen
welche sqsh verbindet. Diese Variable kann auch mit festgelegt werden -H Flagge.
ifs (Zeichenfolge)
Die Liste der internen Feldtrenner.
ignoreof (boolean)
Standardmäßig sqsh wird beendet, wenn der Benutzer ^d (Strg-D) in einer leeren Zeile drückt und
Readline-Unterstützung ist einkompiliert. Wenn $ignoreeof Wird in der sqshrc-Datei festgelegt, erhalten Sie eine
stattdessen eine Warnmeldung:
STRG-D: Verwenden Sie „exit“ oder „quit“, um die Sqsh-Shell zu verlassen.
Dies entspricht der Verwendung von „set -oignoreof“ in der Bash-Shell.
interaktiv (boolesch)
Dies ist eine intern verwendete Variable und sollte vom Benutzer wahrscheinlich nicht geändert werden. Wenn
$interaktiv ist '0', dann wird die Eingabeaufforderung nicht angezeigt, der Verlauf wird weder gelesen noch gelesen
geschrieben und einige Benutzermeldungen werden unterdrückt.
Schnittstellen (Pfad)
Dies ist der vollständige Pfadname der Schnittstellendatei, der standardmäßig verwendet wird $SYBASE/Schnittstellen.
keytab_file (Zeichenfolge)
Wird in Sicherheitsmechanismen für die Benutzerauthentifizierung von Kerberos und DCE verwendet. Entspricht dem
-K Startoption.
Siehe auch die Diskussion zur Kerberos-Unterstützung.
keyword_completion (int/string)
Diese Variable gilt nur, wenn GNU Readline-Unterstützung kompiliert wurde sqsh.
$keyword_completion wird zur Steuerung der TSQL-Schlüsselwortvervollständigungsfunktion in verwendet
readline und kann entweder mit einer Ganzzahl zwischen 0 und 4 oder einer davon festgelegt werden
Streicher keine, senken, obere, smart, oder auch genau. Wenn es entweder auf 0 oder gesetzt ist keine, dann nein
Es wird eine Schlüsselwortvervollständigung durchgeführt (dies ist die Standardeinstellung). senken oder 1, Ursachen sqsh zu
Vervollständigen Sie das Schlüsselwort in Kleinbuchstaben, unabhängig davon, ob es teilweise vervollständigt wurde
Schlüsselwort wurde eingegeben. obere oder 2 erzwingt die Ausführung der Vervollständigung in Großbuchstaben, smart,
oder 3, basiert die Entscheidung über die Groß-/Kleinschreibung auf dem ersten Zeichen des Teilschlüsselworts und
genau vervollständigt das Schlüsselwort in genau der gleichen Groß-/Kleinschreibung wie im definiert .sqsh_words
(Für die integrierten TSQL-Schlüsselwörter wird dies in Kleinbuchstaben geschrieben).
keyword_file (Zeichenfolge)
Wenn Readline-Unterstützung kompiliert wurde sqsh und sqsh wird interaktiv ausgeführt
Modus wird der Inhalt dieser Datei eher für die Keyword-Tab-Vervollständigung durch readline verwendet
als der Standardsatz syntaktischer TSQL-Schlüsselwörter. Die Standardeinstellung ist $HOME/.sqsh_words.
Sprache (Zeichenfolge)
Das $Sprache Variable wird beim Herstellen einer Verbindung zum Server verwendet
Geben Sie die Landessprache an, die zum Anzeigen von Systemaufforderungen und -meldungen verwendet wird. Der
Die Variable verfolgt automatisch die aktuelle Spracheinstellung des Servers. Das vielleicht
auch über eingestellt werden -z Flagge.
lineno (int)
Dies ist eine interne Variable und sollte vom Benutzer nicht geändert werden. Es ist gewohnt
Behalten Sie die Zeilennummer bei, die im aktuellen Arbeitspuffer eingegeben wird.
linesep (Zeichenfolge)
Wird zum Konfigurieren des Zeilentrennzeichens für den horizontalen Anzeigestil verwendet. Dies ist die Standardeinstellung
zu „\n\t“.
Sperre (String/schreibgeschützt)
Definiert das Passwort, das von verwendet werden soll \sperren Befehl. Wenn nicht gesetzt oder auf die Zeichenfolge festgelegt
„NULL“, dann das UNIX-Passwort des laufenden Benutzers sqsh wird stattdessen verwendet (wenn möglich).
Beachten Sie, dass $lock wird immer auf die Zeichenfolge „*lock*“ erweitert, wenn darauf verwiesen wird.
login_timeout (int)
Die Anzahl der Sekunden, die beim Versuch, eine neue Verbindung zu Daten herzustellen, gewartet werden soll
Server. Der Standardwert ist 0 (unendliche Wartezeit). Siehe auch die -T Befehlszeilenoption.
max_timeout (int)
Steuert, wie oft eine Abfrage ihren Timeout-Wert erreichen muss, bevor der
Sitzung wird abgebrochen. Sehen $query_timeout und der -Q Befehlszeilenflag. Die folgende
Meldungen werden angezeigt und sqsh wird mit dem Wert 255 beendet, wenn die $max_timeout begrenzen
ist erreicht.
Zeitüberschreitung bei Abfrage oder Befehl erkannt, Sitzung abgebrochen
Die Clientverbindung hat dies x Mal(e) erkannt
Abbruch bei max_timeout-Grenze
maxlen (int)
Steuert die maximale Datenmenge, die (in jedem Anzeigemodus) in a angezeigt wird
einzelne Spalte. Diese Einstellung schneidet die Ausgabe von bestimmten Dateien automatisch ab
große Datentypen (z. B. TEXT) auf den angegebenen Wert anwenden. Die Standardeinstellung ist 8192
Bytes (8 KB).
newline_go (boolean)
Dieses Flag wird als schrecklicher Trick verwendet, um einen „leeren“ Alias für zu unterstützen \gehen
Befehl, d. h. das Äquivalent zur Angabe von „-c ''“ oder einfach nur „-c“ im Befehl
Linie. Wenn diese Option aktiviert ist, wird eine leere Zeile als Aufruf des interpretiert \gehen Befehl. Dieses Feature
wird nicht empfohlen, wird aber der Vollständigkeit halber mitgeliefert.
Output_parms (boolean)
Flag zum Aktivieren oder Deaktivieren der Anzeige gespeicherter Ausgabeparameter-Ergebnissätze
Verfahren. Standardmäßig ist die Anzeige aktiviert.
packet_size (int)
Definiert die Größe der TDS-Pakete, die zur Kommunikation mit SQL verwendet werden. Wert ändern
Der Wert der Variablen wirkt sich nicht auf die aktuelle Verbindung aus, sondern wirkt sich auf die aus
weiter \erneut verbinden Befehl. Die Angabe des Werts NULL gibt an, dass es sich um das Standardpaket handelt
Größe gewünscht ist.
Passwort (String/schreibgeschützt)
Dies ist das aktuelle Passwort des Benutzers. Ein NULL-Passwort kann explizit zugewiesen werden
Zeichenfolge „NULL“. Aus Sicherheitsgründen wird beim Verweis auf die $passwort variabler Wille
immer auf die Zeichenfolge „*Passwort*“ erweitern.
passwort_retry (boolean)
Wenn die Variable aktiviert ist und sqsh im interaktiven Modus gestartet wird, fragt sqsh nach
Geben Sie Ihr Passwort erneut ein, wenn die Anmeldung fehlgeschlagen ist. Wenn es auf „off“ gesetzt ist, wird sqsh sofort beendet.
Die Standardeinstellung ist aktiviert.
Prinzipal (Zeichenfolge)
Wird bei der Kerberos-Benutzerauthentifizierung als Server-Prinzipalname verwendet, wenn er davon abweicht
$DSQUERY Name. Entspricht dem -R Startoption.
Siehe auch die Diskussion zur Kerberos-Unterstützung.
Eingabeaufforderung (Zeichenfolge)
Diese Variable wird verwendet von sqsh um Ihre aktuelle Eingabeaufforderung zu erstellen. Alle enthaltenen Variablen
. $Eingabeaufforderung werden jedes Mal erweitert, wenn die Eingabeaufforderung angezeigt wird. Der Standardwert für
das ist '${lineno}> '. Siehe auch die Diskussion zur Farbunterstützung weiter unten.
prompt2 (Zeichenfolge)
Der Inhalt dieser Eingabeaufforderung wird bei der interaktiven Nutzung erweitert und angezeigt
sqsh erfordert zusätzliche Eingaben, beispielsweise während einer Zeilenfortsetzung. Der Standardwert
ist '--> '.
query_timeout (int)
Anzahl der Sekunden, die darauf gewartet wird, dass eine Abfrage Daten zurückgibt. Wenn das Timeout erreicht ist, wird die
Die Abfrage wird abgebrochen (storniert). Siehe auch $max_timeout und der -Q Befehlszeilenoption.
rcfile (Pfad)
Enthält eine durch Doppelpunkte (:) getrennte Liste von Sqsh-Ressourcendateien (sqshrc). Der Standard
Die Einstellung ist /etc/sqshrc gefolgt von $HOME/.sqshrc).
readline_history (Zeichenfolge)
Wenn Readline-Unterstützung kompiliert wurde sqsh, der Inhalt der Readline Zeile für Zeile
Der Zeilenverlauf wird in die von angegebene Datei geschrieben $readline_history variabel.
Die Standardeinstellung ist $HOME/.sqsh_readline.
readline_histsize (int)
Wenn Readline-Unterstützung kompiliert wurde sqsh, der Wert von $readline_histsize
Gibt die Anzahl der Zeilen an, die im zeilenweisen Verlauf von readline gespeichert werden.
Wenn Sie diesen Wert auf 0 setzen, wird jede Zeile gespeichert. Der Standardwert ist 100.
real (Float-Format)
Definiert das Anzeigeformat (die Genauigkeit und Skalierung) für alle realen Werte, die von angezeigt werden
sqsh. Der Standardwert ist „18.6“. Beachten Sie, dass dies bei Werten, die die definierte Genauigkeit überschreiten, nicht der Fall ist
abgeschnitten, daher kann eine zu niedrige Einstellung dieses Werts dazu führen, dass Spalten in einem Ergebnissatz fehlen.
ausgerichtet.
wiederholen_batch (boolean)
Wenn auf eingestellt On or Wahre herunter ,ein \gehen mit leerem ausgeführt SQL Puffer wird das dazu führen,
Der vorherige Stapel muss erneut ausgeführt werden.
secmech (Zeichenfolge)
Der Name des Sicherheitsmechanismus, der für die Benutzerauthentifizierung verwendet wird. Zum Beispiel csfkrb5.
Bei Verwendung der -Z Mit der Option kann der Name des Sicherheitsmechanismus angegeben werden, oder wann
Wenn kein secmech angegeben wird, verwendet der OpenClient die Standardeinstellung, also die erste Sicherheit
Eintrag aus der $SYBASE/$SYBASE_OCS/config/libtcl.cfg Datei. Beachten Sie, dass der Name verwendet wird
muss mit dem Namen des entsprechenden Secmech-Eintrags in der übereinstimmen objectid.dat Datei. Wann
Wenn die Verbindung zum Server aufgebaut ist, wird der tatsächliche Secmech-Name im gespeichert
$secmech variabel.
secure_options (Zeichenfolge)
Beschreiben Sie die Sicherheitsoptionen, die für Sicherheitsmechanismen zur Benutzerauthentifizierung verwendet werden.
Entspricht dem -V Startoption.
Siehe auch den Absatz zur Kerberos-Unterstützung.
Skript (Zeichenfolge)
If sqsh wird mit ausgeführt -i Flag, dann enthält diese Variable den Namen des Skripts
ausgeführt wird.
semicolon_cmd (Zeichenfolge)
Wann $semicolon_hack (siehe unten) aktiviert ist, wird der Inhalt dieser Variable ausgeführt
wenn in der ein Semikolon auftritt SQL Puffer. Diese Variable ist standardmäßig auf
Zeichenfolge '\gehen'.
semicolon_hack (boolean)
Schaltet die Möglichkeit ein, ein „;“ zu verwenden. als Inline-Befehlsabschlusszeichen. Diese Funktion ist
Nicht empfehlenswert und nur hier, weil sich genügend Benutzer beschwert haben. Siehe Sektion
BEFEHLE, In der Reihe Go.
Sitzung (Zeichenfolge)
Der Speicherort der Sitzungsdatei, die unmittelbar vor der Verbindung mit a verarbeitet wird
Server. Die Variable wird erweitert, sodass sie möglicherweise Umgebungsvariablen enthält.
SHELL (Zeichenfolge)
Der Name der Shell, die zum Ausführen von Pipes verwendet werden soll und von der verwendet werden soll \Hülse Befehl
(Standard '/ Bin / sh').
Statistiken (boolean)
Rahmen $statistics auf 1 bewirkt, dass bei Erfolg eine Timing-Statistik angezeigt wird
Ausführung jedes SQL-Batches. Diese Variable kann auch über eingestellt werden -t Befehlszeile
Flagge oder durch Bereitstellung -t zu den \gehen Befehl. $statistics standardmäßig auf 0.
Stil (Zeichenfolge)
Wählt den Anzeigestil für die Ergebnismenge aus. Derzeit werden acht Stile unterstützt. Der horizontal
(was auch definiert werden kann als hor or horizontal), ähnelt stark der Ausgabe von
isql, mit der traditionellen spaltenorientierten Ausgabe.
Das vert (oder vertikal)-Stil dreht die Ausgabe, sodass jede Zeile durch dargestellt wird
ein Spaltenname, gefolgt von einem Spaltenwert. Das ist besonders schön anzusehen
breite Ausgabe.
Das bcp Der Stil zeigt Ergebnisse in einem Format an, das für die BCP-Rücksetzung des Ergebnissatzes geeignet ist
in eine andere Tabelle. Das heißt, jeder Spaltenwert wird durch getrennt $bcp_colsep an. Nach der Installation können Sie HEIC-Dateien mit der
letzte Spalte getrennt durch $bcp_rowsep gefolgt von einem Zeilenumbruch (\n). Wenn $bcp_colsep or
$bcp_rowsep sind dann nicht definiert '|' wird als Standardtrennzeichen verwendet. Beachten Sie, dass dies
Die Ausgabe funktioniert nicht gut mit COMPUTE-Spalten und verwendet die Standardkonvertierung
Methoden für alle Datentypen (d. h. datetime Spalten können die Millisekunde abschneiden).
Das csv Der Anzeigestil gibt alle Ergebnismengen in Form eines Kommas getrennt aus
bauen. Dieser Modus ist ideal, um Ergebnismengen in Tabellenkalkulationsprogramme zu importieren, z
Beispiel.
Das html Der Anzeigestil gibt alle Ergebnismengen in Form eines HTML aus
bauen. Dieser Modus ist ideal für die Verwendung von sqsh als CGI-Anwendung.
Das Ziel Der Anzeigestil gibt nur die Metadateninformationen aus, die mit dem verknüpft sind
Ergebnis und verwirft die tatsächlichen Zeilenergebnisse. Dieser Modus ist nützlich zum Debuggen
Ergebnismengen, die von einem vollständigen Durchgangs-Open-Server-Gateway generiert wurden, oder für diese
interessiert, was wirklich vom Server zurückkommt.
Das ziemlich Der Anzeigestil generiert eine flauschige, tabellenartige Ausgabe mit regulärem ASCII
Zeichen für Grenzen. Dieser Modus führt keinen expliziten Spaltenumbruch durch
horizontal Anzeigemodus. Allerdings ist die $colwidth Variable kann zur Steuerung verwendet werden
maximale Breite einer bestimmten Spalte auf dem Bildschirm. Wenn die Spalte überschreitet $colwidth
Obwohl es viele Zeichen breit ist, ist es optisch relativ ansprechend verpackt. Beachten Sie, dass
$colwidth kann überschritten werden, wenn die Bildschirmbreite ausreicht, um die Spalten aufzunehmen
einwickeln.
Das keine Der Anzeigestil unterdrückt die Anzeige aller Ergebnisse (dies geschieht jedoch).
tatsächlich Ergebnisinformationen vom SQL Server abrufen). Dies ist besonders nützlich
bei Verwendung mit dem -p Flagge (oder die $statistics Variable) für die genaue Erfassung
Leistungsstatistiken.
term_title (Zeichenfolge)
Wenn diese Variable gesetzt ist, setzt sqsh den Namen des aktuellen Terminals (xterm) zurück.
Fenster, in dem es ausgeführt wird. Funktioniert für xterm-, rxvt-, putty- und MS-Windows CMD-Fenster. Der
Der Name besteht aus dem Sqsh-Startnamen, an den der erweiterte Wert angehängt wird
$term_title variabel.
thresh_display (int)
Legt den Mindestschweregrad des SQL Server-Fehlers fest, bei dem dem Benutzer eine Meldung angezeigt wird.
Der Standardwert ist 0 und die gültigen Bereiche liegen zwischen 0 und 22 (einschließlich).
thresh_exit (int)
Definiert die maximale Anzahl von Fehlern des Schweregrads $thresh_fail Das könnte sein
Angetroffen, bevor sqsh abbricht. Dies ist vor allem für nicht interaktive Skripte nützlich.
ist aber in einer interaktiven Sitzung erlaubt. Einstellung $thresh_exit auf einen Wert von 0
deaktiviert diese Funktion. Siehe Sektion EXIT STATUS .
thresh_fail (int)
Legt den Mindestschweregrad von SQL Server fest, der als fehlgeschlagener Batch betrachtet werden soll.
Der Mindestwert für diesen Wert ist 0 (d. h. jeder Fehler, der keine Information darstellt).
Nachricht), und das Maximum ist 22. Wann immer $thresh_fail gekreuzt ist, die Variable
$batch_failcount wird um 1 erhöht. Siehe Abschnitt EXIT STATUS .
Uhrzeit (Datumsangabe)
Diese Variable kann mit einem Zeitformat eingestellt werden (siehe Manpage für). Datum(1)), und das
Die Variable wird im angegebenen Format auf die aktuelle Zeit erweitert. Das Standardformat für
Diese Variable ist %H:%M:%S (z. B. 14:32:58).
tmp_dir (Pfad)
Dieses enthält das Verzeichnis, in das intern verwendete temporäre Dateien verschoben werden sqsh sollen sein
geschrieben. Diese Dateien werden entweder während der Pufferbearbeitung (die \buf-edit
Befehl) oder um Ausgabeverzögerungsdateien für Hintergrundjobs zu verwalten. Der Standardwert
für diese Variable ist /tmp.
Benutzername (Zeichenfolge)
Der Name des Benutzers, der derzeit mit der Datenbank verbunden ist.
Version (keine)
Diese schreibgeschützte Variable enthält die aktuelle Versionsnummer. (sqsh-2.1.7)
Breite (int)
Die aktuelle Breite der SQL-Ausgabe.
xgeom (string/int)
Wenn X11-Unterstützung kompiliert ist sqsh, dieser Wert wird zum Konfigurieren des Standardwerts verwendet
Fenstergröße (in Zeichen) der X-Anzeige. Diese Variable muss das Format haben BxH
oder einfach nur W, Wobei W ist die Breite des Fensters und H ist die Höhe des Fensters. Wenn
die Höhe des Fensters wird nicht angegeben, dann werden 25 Zeilen angenommen. Wenn $xgeom ist nicht
dann setzen $breite wird als Standardbreite verwendet und die Höhe wird mit 25 angenommen. Wenn
Wenn keines von beiden festgelegt ist, wird 80x25 angenommen.
xwin_title (Zeichenfolge)
Wenn X11-Unterstützung kompiliert ist sqsh und ein X11-Ergebnisfenster wird mit angefordert
-x Parameter der \gehen or \rpc Befehle, dann wird diese Variable zum Setzen verwendet
der Titelname des Fensters. Kann mit dem vorübergehend überschrieben werden -T Option der
\gehen und \rpc Befehle.
Skript Ausführung
Wie bei den meisten Muscheln, sqsh ermöglicht die Ausführung einer Datei, die SQL- und Skriptbefehle enthält
direkt über das magische UNIX #! Konvention. Auf den meisten UNIX-Plattformen, wenn der Betrieb
Das System trifft auf die Bytes #! als die ersten beiden Bytes einer ausführbaren Datei
leitet die Datei automatisch durch den unmittelbar nach dem angegebenen Interpreter weiter #!.
Zum Beispiel, um eine ausführbare Datei zu erstellen sqsh Skript zum Ausführen sp_who, müssen Sie nur noch erstellen
eine Datei wie diese:
#!/usr/bin/sqsh -i
sp_who
go
Also, wenn Ihr sp_who Wenn das Skript direkt ausgeführt wird, wird es automatisch gestartet
"/usr/bin/sqsh -i sp_who„Für Dich.
Und um es noch flexibler zu machen, sqsh unterstützt Positionsparameter, ähnlich wie
die meisten Muscheln der Form ${n} die sich auf die erweitern wird nth Argument zu Ihrem sqsh Skripte.
Beispielsweise:
#!/usr/bin/sqsh -i
sp_who ${1}
go
wird das dazu führen, sp_who gespeicherte Prozedur, die mit einem Argument des ersten ausgeführt werden soll
Befehlszeilenparameter, der dem bereitgestellt wird sp_who Shell-Skript.
Beachten Sie, dass Positionsparameter sollen in geschweifte Klammern eingeschlossen werden, um Konflikte mit zu vermeiden
das TSQL Geld Datentyp (ohne die geschweiften Klammern wird die Variable nicht erweitert).
EXIT STATUS
Eine der Hauptbeschwerden von isql ist, dass es keine Möglichkeit bietet, zu erkennen, wann ein
Während der Verarbeitung ist ein Fehler aufgetreten. sqsh bietet eher eine
komplexer, aber flexibler Mechanismus zur Rückgabe aussagekräftiger Informationen über den Grund
für den Exit in Form eines Exit-Status (vgl wunsch(3)).
Wann sqsh Beginnt die Ausführung, sind zwei Handler mit der aktuellen Verbindung zum verbunden
Einer davon ist ein Nachrichtenhandler, der für die Anzeige des Textes einer beliebigen SQL verantwortlich ist
Servernachrichten oder -fehler, und der andere ist ein Fehlerhandler, der dafür verantwortlich ist
Bestimmen, was mit einer Fehlerbedingung zu tun ist (haben Sie Geduld, diese sind nur lose).
Beschreibungen). Und jeder Meldung und jedem Fehlerzustand ist ein Schweregrad zugeordnet.
zwischen 0 und 22 (Informationsmeldung zum schwerwiegenden Zustand).
Diesen beiden Nachrichtenhandlern sind mehrere Variablen zugeordnet, die für beides verwendet werden
steuern ihr Verhalten oder werden vom Nachrichtenhandler als Indikatoren verwendet:
$thresh_display
Diese Variable wird vom Nachrichtenhandler verwendet, um die minimale Fehlerschwere zu bestimmen
Dadurch wird eine Meldung angezeigt. Standardmäßig ist dies 0, was angezeigt wird
alle Nachrichten (mit einigen Ausnahmen). Wenn Sie dies beispielsweise auf 1 setzen, wäre dies der Fall
Informationsmeldungen wie die Ausgabe von unterdrücken kompensieren Showplan on.
$thresh_fail
Diese Variable wird vom Fehlerhandler verwendet, um den Schweregrad des Fehlers zu bestimmen
betrachtet von sqsh ein Versager sein. Normalerweise ist der Standardwert 11, was darauf hinweist
Jeder Fehler, mit Ausnahme von Informationsmeldungen, ist ein Fehler. Die nächste Variable wird
Erklären Sie die Bedeutung dieses Wertes.
$batch_failcount
Diese Variable sollte als schreibgeschützt betrachtet werden und enthält die Gesamthäufigkeit
dass Chargen einen Fehler der Schwere verursacht haben $thresh_fail oder mehr. Der einzige Wert
der gültig ist, um diesen Wert explizit festzulegen, ist „“ (die leere Zeichenfolge), was der Fall ist
Setzen Sie diesen Wert auf 0 zurück. Jeder andere Wert kann zu unvorhersehbaren Ergebnissen führen.
$thresh_exit
Diese Variable wird verwendet, um die Grenze zu bestimmen, bei der $batch_failcount wird verursachen sqsh
beenden. Wenn $thresh_exit 0 ist, ist diese Funktion deaktiviert. Mit anderen Worten, wenn
$batch_failcount = $thresh_exit und $thresh_exit ist dann größer als 0 sqsh werden wir
Ausstieg, Rückkehr $batch_failcount als Exit-Status.
Beachten Sie das, es sei denn $exit_failcount ist auf 1 gesetzt sqsh wird mit 0 beendet, wenn die Summe erreicht ist
Anzahl der Ausfälle erreicht nicht $thresh_exit.
$exit_failcount
Diese Variable wird nur verwendet, wenn sqsh würde normalerweise mit einem Erfolgsstatus (0) beenden,
Dies führt dazu, dass es stattdessen mit einem Wert von beendet wird $batch_failcount (was selbst sein kann
0).
$exit_value
Wenn diese Variable ungleich Null ist, wird sie überschrieben $exit_failcount und
$batch_failcount Werte und verlassen Sie einfach den Wert von $exit_value. Diese Variable kann sein
explizit mit dem festgelegt \einstellen Befehl oder implizite Verwendung \Ausfahrt x und es ist ein Alias
Pendants.
Um es noch einmal zusammenzufassen: Hier ist eine Liste der Fehlercodes, die möglicherweise zurückgegeben werden sqsh beim Verlassen, und die
Grund, warum sie zurückgegeben werden könnten:
- 0 -
Es ist kein Fehler aufgetreten.
- 1...253 -
Zwischen 1 und 253 Batches sind fehlgeschlagen (wenn Sie mehr als 253 Batches ausführen, erfolgt der Exit
Der Status von sqsh ist unbestimmt ... Ich werde das möglicherweise in Zukunft beheben.
- 254 -
Eine explizite \abbrechen aufgerufen wurde oder ein SIGINT (^C) während einer nicht interaktiven Aktion ausgegeben wurde
Session.
- 255 -
Es ist eine allgemeine Fehlerbedingung aufgetreten, beispielsweise ein fehlerhaftes Befehlszeilenargument für sqsh.
Speicherzuordnungsfehler, Dateizugriffsfehler usw.
Die folgenden Abschnitte enthalten detaillierte Beispiele für Kombinationen von Variableneinstellungen und
die beim Beenden unter bestimmten Fehlerbedingungen erzeugten Ergebnisse. Es wird davon ausgegangen, dass
$exit_value Variable enthält in den nächsten Beispielen 0.
thresh_display=0, thresh_fail=0, thresh_exit=1
Mit dieser Kombination werden alle Fehlermeldungen angezeigt, sobald sie auftreten, und zwar alle
Ein Fehler wird als Fehlerbedingung betrachtet. Beim Erreichen des ersten Fehlers sqsh
wird mit dem Exit-Status 1 oder der Gesamtzahl der Fehler (die
$batch_failcount Variable). Wenn jedoch während des gesamten Vorgangs nichts schief geht, a
Null wird zurückgegeben.
thresh_display=0, thresh_fail=0, thresh_exit=3
Diese Kombination führt dazu, dass alle Fehlerbedingungen angezeigt werden
wird als Fehlerbedingung betrachtet. Wenn insgesamt drei Chargen fehlgeschlagen sind, sqsh werden wir
Beenden Sie den Vorgang mit dem Status 3. Wenn jedoch 0, 1 oder 2 Stapel fehlschlagen, wird 0 zurückgegeben.
thresh_display=22, thresh_fail=0, thresh_exit=3
Dies verhält sich genauso wie im vorherigen Beispiel, mit der Ausnahme, dass alle Fehler auftreten
Die Anzeige von Meldungen wird unterdrückt. Dies ist besonders nützlich, wenn Sie
Kümmere dich einfach mehr um den Exit-Wert als um den tatsächlichen Fehler.
thresh_display=0, thresh_fail=2, thresh_exit=1
Dadurch wird der erste Fehler mit Schweregrad 2 oder höher angezeigt und verursacht sqsh
mit der Fehlerbedingung 1 beenden.
thresh_display=0, thresh_fail=0, thresh_exit=3, exit_failcount=1
Dies ist jedoch identisch mit dem zweiten Beispiel oben sqsh gibt den Gesamtbetrag zurück
Anzahl der Chargen, die fehlgeschlagen sind, auch wenn $batch_failcount erreicht nicht 3.
exit_value=ungleich Null
Dadurch werden alle oben erläuterten Bedingungen außer Kraft gesetzt und nur der spezifische Wert verlassen.
Weitere Anwendungsbereiche
Kolorieren sqsh aufforderungen, usw.
Farbcodes werden als Zeichenfolge wie {1;2;3} dargestellt. Wenn sqsh auf ein { (geschweifte Klammer) stößt
In der Eingabeaufforderungszeichenfolge geht es davon aus, dass ein Farbcode angegeben ist, und verhält sich als solcher. NEIN
Die Gültigkeit der Farbcodedefinition selbst wird überprüft. Die Farbe
Die Definition besteht aus drei durch ein Semikolon getrennten Werten.
Der erste Code definiert den Farbattributcode mit möglichen Werten: 0=keine 1=fett
Der zweite Wert definiert den Textfarbcode: 30=Schwarz 31=Rot 32=Grün 33=Gelb 34=Blau
35=Magenta 36=Cyan 37=Weiß
Der dritte Wert definiert den Hintergrundfarbcode: 40=Schwarz 41=Rot 42=Grün 43=Gelb
44=blau 45=magenta 46=cyan 47=weiß Der letzte Farbcode für den Hintergrund kann weggelassen werden.
Abhängig von Ihren Anforderungen führen nicht alle Farb- und Attributkombinationen zu guten Ergebnissen
Terminaltyp und Farbschema. Aber die folgenden Werte funktionieren auf einem xterm mit cremigem Inhalt einwandfrei
weiße Hintergrundfarbe in Linux sowie rxvt in Cygwin mit schwarzem Hintergrundfenster:
Eingabeaufforderung: Blauer Text auf weißem Hintergrund „{0;34;47}“
Befehlstext: Gelber Text „{0;33}“
sqsh übersetzt die Farbcodes in eine tatsächliche Farbcodezeichenfolge, die angezeigt wird
readline: zum Beispiel „\001\033[0;36;47m\002“. Beachten Sie, dass Sie geschweifte Klammern verwenden möchten
In Ihrer Eingabeaufforderung müssen Sie die Einfärbung verhindern, indem Sie eine doppelte geschweifte Klammer angeben, z. B
{{...}}. Zum Beispiel:
\set prompt_color='{0;34;47}'
\set text_color='{0;33}'
\set prompt='$prompt_color{{$DSQUERY.$username.$database.$lineno}}>$text_color '
Farbunterstützung ist automatisch verfügbar, wenn sqsh kompiliert und mit readline verknüpft wird
Support aktiviert.
Verwenden Sie sqsh online über die Dienste von onworks.net