OSQL

Aus InfoAgent Dokumentation
Wechseln zu: Navigation, Suche

Das Dienstprogramm OSQL ermöglicht es Ihnen, Transact-SQL-Anweisungen, Systemprozeduren und Skriptdateien einzugeben. Dieses Dienstprogramm verwendet ODBC, um Daten mit dem Server auszutauschen.

Dieses Feature wird in zukünftigen Versionen von Microsoft SQL Server nicht mehr bereitgestellt. Vermeiden Sie die Verwendung dieses Features bei neuen Entwicklungsarbeiten, und planen Sie die Änderung von Anwendungen, die dieses Feature zur Zeit verwenden. Verwenden Sie stattdessen SQLCMD.


Syntax

 osql
 [-?] |
 [-L] |
 [
   {
      {-Ulogin_id [-Ppassword]} | –E }
      [-Sserver_name[\instance_name]] [-Hwksta_name] [-ddb_name]
      [-ltime_out] [-ttime_out] [-hheaders]
      [-scol_separator] [-wcolumn_width] [-apacket_size]
      [-e] [-I] [-D data_source_name]
      [-ccmd_end] [-q "query"] [-Q"query"]
      [-n] [-merror_level] [-r {0 | 1}]
      [-iinput_file] [-ooutput_file] [-p]
      [-b] [-u] [-R] [-O]
 ]

Argumente

-?

Zeigt eine Syntaxzusammenfassung der osql-Schalter an.

-L

Listet die lokal konfigurierten Server sowie die Namen der Server auf, die Nachrichten über das Netzwerk senden.
Hinweis
Aufgrund der Eigenarten des Broadcastings in Netzwerken ist es möglich, dass sqlcmd nicht von allen Servern rechtzeitig eine Antwort empfängt. Aus diesem Grund kann die Liste der zurückgegebenen Server mit jedem Aufruf dieser Option variieren.

-U login_id

Die Benutzeranmelde-ID. Bei Anmelde-IDs wird nach Groß- und Kleinschreibung unterschieden.

-P password

Ein vom Benutzer angegebenes Kennwort. Wenn die Option -P nicht verwendet wird, fordert osql zur Eingabe eines Kennwortes auf. Wenn die Option -P am Ende der Befehlszeile ohne Angabe eines Kennwortes verwendet wird, verwendet osql das Standardkennwort (NULL).
Sicherheitshinweis
Verwenden Sie kein leeres Kennwort. Verwenden Sie ein sicheres Kennwort.
Bei Kennwörtern wird nach Groß- und Kleinschreibung unterschieden.
Über die OSQLPASSWORD-Umgebungsvariable können Sie ein Standardkennwort für die aktuelle Sitzung festlegen. Dadurch müssen Sie keine Kennwörter in Batchdateien hartcodieren.
Wenn Sie kein Kennwort mit der Option -P angeben, überprüft osql zuerst die OSQLPASSWORD-Variable. Wurde kein Wert festgelegt, verwendet osql das Standardkennwort (NULL). Im folgenden Beispiel wird die OSQLPASSWORD-Variable an der Eingabeaufforderung festgelegt und dann auf das Dienstprogramm osql zugegriffen:
   C:\>SET OSQLPASSWORD=abracadabra
   C:\>osql 
Sicherheitshinweis
Zum Maskieren des Kennwortes sollten Sie die Option -P nicht in Verbindung mit der Option -U verwenden. Drücken Sie stattdessen nach der Angabe von osql mit der Option -U und anderen Schaltern (geben Sie -P nicht an) die EINGABETASTE. Sie werden daraufhin von osql zur Angabe eines Kennwortes aufgefordert. Durch diese Methode ist sichergestellt, dass das Kennwort bei der Eingabe maskiert wird.

-E

Verwendet eine vertrauenswürdige Verbindung, statt ein Kennwort anzufordern.

-S server_name[ \instance_name]

Gibt die Microsoft SQL Server-Instanz an, mit der eine Verbindung hergestellt wird. Geben Sie server_name an, um eine Verbindung mit der Standardinstanz von SQL Server auf diesem Server herzustellen. Geben Sie server_name\instance_name an, um eine Verbindung mit einer benannten Instanz von SQL Server auf diesem Server herzustellen. Wenn kein Server angegeben wird, stellt osql eine Verbindung mit der Standardinstanz von SQL Server auf dem lokalen Computer her. Diese Option ist erforderlich, wenn osql von einem Remotecomputer im Netzwerk ausgeführt wird.

-H wksta_name

Der Name einer Arbeitsstation. Dieser Name ist in sysprocesses.hostname gespeichert und wird mithilfe von sp_who angezeigt. Wenn diese Option nicht angegeben ist, wird der Name des aktuellen Computers angenommen.

-d db_name

Gibt die USE db_name-Anweisung aus, wenn osql gestartet wird.

-l time_out

Gibt an, nach wie vielen Sekunden ein Timeout bei der osql-Anmeldung auftritt. Der Standardwert für das Timeout eines osql-Anmeldevorgangs ist acht Sekunden.

-t time_out

Gibt an, nach wie vielen Sekunden der Befehl wegen eines Timeout abgebrochen wird. Wenn time_out nicht angegeben wird, tritt für den Befehl kein Timeout auf.

-h headers

Gibt die Anzahl der Zeilen an, die zwischen den Spaltenüberschriften gedruckt werden. Standardmäßig werden die Überschriften für jedes Resultset der Abfrage einmal gedruckt. Mit -1 können Sie angeben, dass keine Überschriften gedruckt werden sollen. Wenn -1 verwendet wird, darf zwischen dem Parameter und der Einstellung kein Leerzeichen stehen (d. h. -h-1 und nicht -h -1).

-s col_separator

Gibt das Spaltentrennzeichen an. Standardmäßig wird ein Leerzeichen verwendet. Um Zeichen verwenden zu können, die für das Betriebssystem eine besondere Bedeutung haben (z. B. | ; & < >), müssen Sie das Zeichen in doppelte Anführungszeichen (") setzen.

-w column_width

Ermöglicht dem Benutzer, die Bildschirmbreite für die Ausgabe festzulegen. Die Standardeinstellung ist 80 Zeichen. Wenn eine Ausgabezeile die maximale Bildschirmbreite erreicht hat, wird die Zeile umbrochen.

-a packet_size

Ermöglicht es Ihnen, Pakete mit einer anderen Größe anzufordern. Die gültigen Werte für packet_size reichen von 512 bis 65535. Der Standardwert für osql ist der Standardwert des Servers. Ein höherer Wert für die Paketgröße kann das Leistungsverhalten beim Ausführen von größeren Skripts verbessern, die eine große Anzahl von SQL-Anweisungen zwischen GO-Befehlen aufweisen. Von Microsoft durchgeführte Tests zeigen an, dass 8192 in der Regel die schnellste Einstellung für Massenkopiervorgänge ist. Ein höherer Wert für die Paketgröße kann angefordert werden; osql verwendet jedoch standardmäßig den Standardwert des Servers, wenn der Anforderung nicht entsprochen werden kann.

-e

Bewirkt, dass die Eingabe auf dem Bildschirm angezeigt wird.

-I

Aktiviert die QUOTED_IDENTIFIER-Verbindungsoption.

-D data_source_name

Stellt eine Verbindung mit einer ODBC-Datenquelle her, die so definiert ist, dass sie den ODBC-Treiber für Microsoft SQL Server verwendet. Die osql-Verbindung verwendet die Optionen, die in der Datenquelle angegeben sind.
Hinweis
Diese Option kann nicht mit Datenquellen verwendet werden, die für andere Treiber definiert sind.

-c cmd_end

Gibt das Befehlsabschlusszeichen an. Standardmäßig werden Befehle abgeschlossen und an SQL Server gesendet, indem Sie GO in eine eigene Zeile eingeben. Wenn Sie das Befehlsabschlusszeichen neu festlegen, dürfen Sie keine für Transact-SQL reservierten Wörter oder Zeichen verwenden, die eine spezielle Bedeutung für das Betriebssystem haben, unabhängig davon, ob vor einem Wort bzw. Zeichen ein umgekehrter Schrägstrich steht.

-q " query "

Führt eine Abfrage aus, wenn osql startet, beendet osql aber nicht, nachdem die Abfrage abgeschlossen ist. (Beachten Sie, dass die Abfrageanweisung keinen GO-Befehl enthalten darf.) Wenn Sie eine Abfrage aus einer Batchdatei ausgeben, können Sie Variablen (%Variable) oder Umgebungsvariablen (%Umgebungsvariable%) verwenden. Beispiel:
   SET table=sys.objects
   osql -E -q "select name, object_id from %table%"
Schließen Sie die Abfrage in doppelte Anführungszeichen und alle Elemente, die in die Abfrage eingebettet sind, in einfache Anführungszeichen ein.

-Q " query "

Führt eine Abfrage aus und beendet osql sofort. Schließen Sie die Abfrage in doppelte Anführungszeichen und alle Elemente, die in die Abfrage eingebettet sind, in einfache Anführungszeichen ein.

-n

Entfernt die Nummerierung und das Symbol für die Eingabeaufforderung (>) aus den Eingabezeilen.

-m error_level

Passt die Anzeige der Fehlermeldungen an. Für jeden Fehler mit dem angegebenen oder einem höheren Schweregrad wird die Meldungsnummer, der Status und der Fehlergrad angezeigt. Für Fehler mit einem niedrigeren ist als dem angegebenen Schweregrad wird nichts angezeigt. Mit -1 können Sie angeben, dass alle Header mit Meldungen zurückgegeben werden. Dies gilt auch für Informationsmeldungen. Wenn Sie -1 verwenden, darf kein Leerzeichen zwischen dem Parameter und der Einstellung stehen (d. h. -m-1 und nicht -m -1).

-r { 0| 1}

Leitet die Meldungsausgabe auf den Bildschirm um (stderr). Wenn Sie keinen Parameter oder 0 angeben, werden nur Fehlermeldungen umgeleitet, deren Schweregrad 11 oder höher ist. Wenn Sie 1 angeben, werden alle Meldungsausgaben (einschließlich der Ausgabe von "print") umgeleitet.

-i input_file

Identifiziert die Datei, die einen Batch mit SQL-Anweisungen oder gespeicherten Prozeduren enthält. Anstelle von -i kann der Kleiner-als-Vergleichsoperator (<) verwendet werden.

-o output_file

Identifiziert die Datei, in die die Ausgabe von osql geschrieben wird. Anstelle von -o kann das Größer-als-Zeichen (>) verwendet werden.
Wenn input_file nicht das Unicode-Format aufweist und -u nicht angegeben ist, wird output_file im OEM-Format gespeichert. Wenn input_file das Unicode-Format aufweist oder -u angegeben ist, wird output_file im Unicode-Format gespeichert.

-p

Druckt die Leistungsstatistik.

-b

Gibt an, dass osql beendet und ein DOS ERRORLEVEL-Wert zurückgegeben wird, wenn ein Fehler auftritt. Für die DOS ERRORLEVEL-Variable wird der Wert 1 zurückgegeben, wenn die SQL Server-Fehlermeldung einen Schweregrad von 11 oder höher hat. Andernfalls wird der Wert 0 zurückgegeben. Microsoft MS-DOS-Batchdateien können den Wert von DOS ERRORLEVEL testen und den Fehler entsprechend behandeln.

-u

Gibt an, dass output_file unabhängig vom Format von input_file im Unicode-Format gespeichert wird.

-R

Gibt an, dass der SQL Server-ODBC-Treiber Clienteinstellungen verwendet, wenn Währungs-, Datums- oder Zeitdaten in Zeichendaten konvertiert werden.

-O

Gibt an, dass bestimmte osql-Funktionen deaktiviert werden, damit osql mit dem Verhalten früherer isql-Versionen übereinstimmt. Die folgenden Funktionen werden deaktiviert:
  • EOF-Batchverarbeitung
  • Automatisches Skalieren der Konsolenbreite
  • Ausführliche Meldungen
Außerdem wird der Standardwert von DOS ERRORLEVEL auf -1 festgelegt.
Hinweis

Die Optionen -n, -O und -D werden von osql nicht mehr unterstützt.