osql (Hilfsprogramm)osql Utility

Das Hilfsprogramm osql ermöglicht es Ihnen, Transact-SQLTransact-SQL -Anweisungen, Systemprozeduren und Skriptdateien einzugeben.The osql utility allows you to enter Transact-SQLTransact-SQL statements, system procedures, and script files. Dieses Hilfsprogramm verwendet ODBC, um Daten mit dem Server auszutauschen.This utility uses ODBC to communicate with the server.

Wichtig

Diese Funktion wird in einer zukünftigen Version von SQL ServerSQL Serverentfernt.This feature will be removed in a future version of SQL ServerSQL Server. Verwenden Sie diese Funktion beim Entwickeln neuer Anwendungen nicht, und planen Sie das Ändern von Anwendungen, in denen sie aktuell verwendet wird.Avoid using this feature in new development work, and plan to modify applications that currently use the feature. Verwenden Sie stattdessen sqlcmd .Use sqlcmd instead. Weitere Informationen finden Sie unter sqlcmd Utility.For more information, see sqlcmd Utility.

SyntaxSyntax


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]  
]  

ArgumenteArguments

-?-?
Zeigt eine Syntaxzusammenfassung der osql -Schalter an.Displays the syntax summary of osql switches.

-L-L
Listet die lokal konfigurierten Server sowie die Namen der Server auf, die Nachrichten über das Netzwerk senden.Lists the locally configured servers and the names of the servers broadcasting on the network.

Hinweis

Aufgrund der Übertragungsart in Netzwerken, ist es möglich, dass osql nicht zeitnah von allen Servern eine Antwort erhält.Due to the nature of broadcasting on networks, osql may not receive a timely response from all servers. Aus diesem Grund kann die Liste der zurückgegebenen Server mit jedem Aufruf dieser Option variieren.Therefore the list of servers returned may vary for each invocation of this option.

-U login_id-U login_id
Die Benutzeranmelde-ID.Is the user login ID. Bei Anmelde-IDs wird die Groß- und Kleinschreibung beachtet.Login IDs are case-sensitive.

-P password-P password
Ein vom Benutzer angegebenes Kennwort.Is a user-specified password. Falls die Option -P nicht verwendet wird, fordert osql zur Eingabe eines Kennworts auf.If the -P option is not used, osql prompts for a password. Falls die Option -P am Ende der Eingabeaufforderung ohne Angabe eines Kennworts verwendet wird, verwendet osql das Standardkennwort (NULL).If the -P option is used at the end of the command prompt without any password, osql uses the default password (NULL).

Wichtig

Verwenden Sie kein leeres Kennwort.Do not use a blank password. Verwenden Sie ein sicheres Kennwort.Use a strong password. Weitere Informationen finden Sie unter Strong Passwords.For more information, see Strong Passwords.

Bei Kennwörtern wird nach Groß- und Kleinschreibung unterschieden.Passwords are case-sensitive.

Über die OSQLPASSWORD-Umgebungsvariable können Sie ein Standardkennwort für die aktuelle Sitzung festlegen.The OSQLPASSWORD environment variable allows you to set a default password for the current session. Dadurch müssen Sie keine Kennwörter in Batchdateien hartcodieren.Therefore, you do not have to hard code a password into batch files.

Falls Sie kein Kennwort mit der Option -P angeben, überprüft osql zuerst die OSQLPASSWORD-Variable.If you do not specify a password with the -P option, osql first checks for the OSQLPASSWORD variable. Wurde kein Wert festgelegt, verwendet osql das Standardkennwort (NULL).If no value is set, osql uses the default password, NULL. Im folgenden Beispiel wird die OSQLPASSWORD-Variable an der Eingabeaufforderung festgelegt und greift dann auf das Hilfsprogramm osql zu:The following example sets the OSQLPASSWORD variable at a command prompt and then accesses the osql utility:

C:\>SET OSQLPASSWORD=abracadabra  
C:\>osql   

Wichtig

Zum Maskieren des Kennworts sollten Sie die Option -P nicht in Verbindung mit der Option -U angeben.To mask your password, do not specify the -P option along with the -U option. Drücken Sie stattdessen nach der Angabe von osql mit der Option -U und anderen Schaltern (geben Sie -Pnicht an) die EINGABETASTE. Sie werden daraufhin von osql zur Eingabe eines Kennworts aufgefordert.Instead, after specifying osql along with the -U option and other switches (do not specify -P), press ENTER, and osql will prompt you for a password. Durch diese Methode wird sichergestellt, dass das Kennwort bei der Eingabe maskiert wird.This method ensures that your password will be masked when it is entered.

-E-E
Verwendet eine vertrauenswürdige Verbindung, statt ein Kennwort anzufordern.Uses a trusted connection instead of requesting a password.

-S server_name[ \instance_name]-S server_name[ \instance_name]
Gibt die SQL ServerSQL Server -Instanz an, mit der eine Verbindung hergestellt wird.Specifies the instance of SQL ServerSQL Server to connect to. Geben Sie server_name an, um eine Verbindung mit der Standardinstanz von SQL ServerSQL Server auf diesem Server herzustellen.Specify server_name to connect to the default instance of SQL ServerSQL Server on that server. Geben Sie server_name\instance_name an, um eine Verbindung mit der Standardinstanz von SQL ServerSQL Server auf diesem Server herzustellen.Specify server_name\instance_name to connect to a named instance of SQL ServerSQL Server on that server. Falls kein Server angegeben ist, stellt osql eine Verbindung mit der Standardinstanz von SQL ServerSQL Server auf dem lokalen Computer her.If no server is specified, osql connects to the default instance of SQL ServerSQL Server on the local computer. Diese Option ist erforderlich, wenn osql von einem Remotecomputer im Netzwerk ausgeführt wird.This option is required when executing osql from a remote computer on the network.

-H wksta_name-H wksta_name
Der Name einer Arbeitsstation.Is a workstation name. Dieser Name ist in sysprocesses.hostname gespeichert und wird mithilfe von sp_whoangezeigt.The workstation name is stored in sysprocesses.hostname and is displayed by sp_who. Wenn diese Option nicht angegeben ist, wird der Name des aktuellen Computers angenommen.If this option is not specified, the current computer name is assumed.

-d db_name-d db_name
Gibt die USE db_name -Anweisung aus, wenn osqlgestartet wird.Issues a USE db_name statement when osqlis started.

-l time_out-l time_out
Gibt an, nach wie vielen Sekunden ein Timeout bei der osql -Anmeldung auftritt.Specifies the number of seconds before an osql login times out. Der Standardwert für das Timeout bei einer osql -Anmeldung ist acht Sekunden.The default time-out for login to osql is eight seconds.

-t time_out-t time_out
Gibt an, nach wie vielen Sekunden ein Befehl wegen eines Timeout abgebrochen wird.Specifies the number of seconds before a command times out. Wenn für time_out kein Wert angegeben wird, tritt für die Befehle kein Timeout ein.If a time_out value is not specified, commands do not time out.

-h headers-h headers
Gibt die Anzahl der Zeilen an, die zwischen den Spaltenüberschriften gedruckt werden.Specifies the number of rows to print between column headings. Standardmäßig werden die Überschriften für jedes Resultset der Abfrage einmal gedruckt.The default is to print headings one time for each set of query results. Mit -1 können Sie angeben, dass keine Überschriften gedruckt werden sollen.Use -1 to specify that no headers will be printed. Falls -1 verwendet wird, darf zwischen dem Parameter und der Einstellung kein Leerzeichen stehen (-h-1und nicht -h -1).If –1 is used, there must be no space between the parameter and the setting (-h-1, not -h -1).

-s col_separator-s col_separator
Gibt das Spaltentrennzeichen an. Standardmäßig wird ein Leerzeichen verwendet.Specifies the column-separator character, which is a blank space by default. 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.To use characters that have special meaning to the operating system (for example, | ; & < >), enclose the character in double quotation marks (").

-w column_width-w column_width
Ermöglicht dem Benutzer, die Bildschirmbreite für die Ausgabe festzulegen.Allows the user to set the screen width for output. Die Standardeinstellung ist 80 Zeichen.The default is 80 characters. Wenn eine Ausgabezeile die maximale Bildschirmbreite erreicht hat, wird die Zeile umbrochen.When an output line has reached its maximum screen width, it is broken into multiple lines.

-a packet_size-a packet_size
Ermöglicht es Ihnen, Pakete mit einer anderen Größe anzufordern.Allows you to request a different-sized packet. Gültige Werte für packet_size sind 512 bis 65535.The valid values for packet_size are 512 through 65535. Der Standardwert osql ist der Serverstandard.The default value osql is the server default. Die gestiegene Paketgröße kann die Ausführung größerer Skripts verbessern, bei denen zwischen den GO-Befehlen eine erhebliche Menge an SQL-Anweisungen vorhanden ist.Increased packet size can enhance performance on larger script execution where the amount of SQL statements between GO commands is substantial. MicrosoftMicrosoft-Tests geben an, dass 8192 in der Regel die schnellste Einstellung für Massenkopiervorgänge ist. testing indicates that 8192 is typically the fastest setting for bulk copy operations. Eine größere Paketgröße kann angefordert werden; osql verwendet jedoch standardmäßig den Standardwert des Servers, wenn die Anforderung nicht gewährt werden kann.A larger packet size can be requested, but osql defaults to the server default if the request cannot be granted.

-e-e
Bewirkt, dass die Eingabe auf dem Bildschirm angezeigt wird.Echoes input.

-I-I
Aktiviert die QUOTED_IDENTIFIER-Verbindungsoption.Sets the QUOTED_IDENTIFIER connection option on.

-D data_source_name-D data_source_name
Stellt eine Verbindung mit einer ODBC-Datenquelle her, die so definiert ist, dass sie den ODBC-Treiber für SQL ServerSQL Serververwendet.Connects to an ODBC data source that is defined using the ODBC driver for SQL ServerSQL Server. Die osql -Verbindung verwendet die Optionen, die in der Datenquelle angegeben sind.The osql connection uses the options specified in the data source.

Hinweis

Diese Option kann nicht mit Datenquellen verwendet werden, die für andere Treiber definiert sind.This option does not work with data sources defined for other drivers.

-c cmd_end-c cmd_end
Gibt das Befehlsabschlusszeichen an.Specifies the command terminator. Standardmäßig werden Befehle abgeschlossen und an SQL ServerSQL Server gesendet, indem Sie GO in eine eigene Zeile eingeben.By default, commands are terminated and sent to SQL ServerSQL Server by entering GO on a line by itself. Wenn Sie das Befehlsabschlusszeichen neu festlegen, dürfen Sie keine für Transact-SQLTransact-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.When you reset the command terminator, do not use Transact-SQLTransact-SQL reserved words or characters that have special meaning to the operating system, whether preceded by a backslash or not.

-q " query "-q " query "
Führt eine Abfrage aus, wenn osql startet, beendet osql aber nicht, nachdem die Abfrage abgeschlossen ist.Executes a query when osql starts, but does not exit osql when the query completes. (Beachten Sie, dass die Abfrageanweisung keinen GO-Befehl enthalten darf.)(Note that the query statement should not include GO). Wenn Sie eine Abfrage aus einer Batchdatei ausgeben, können Sie Variablen (%Variable) oder Umgebungsvariablen (%Umgebungsvariable%) verwenden.If you issue a query from a batch file, use %variables, or environment %variables%. Beispiel:For example:

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.Use double quotation marks around the query and single quotation marks around anything embedded in the query.

-Q" query "-Q" query "
Führt eine Abfrage aus und beendet osqlsofort.Executes a query and immediately exits osql. Schließen Sie die Abfrage in doppelte Anführungszeichen und alle Elemente, die in die Abfrage eingebettet sind, in einfache Anführungszeichen ein.Use double quotation marks around the query and single quotation marks around anything embedded in the query.

-n
Entfernt die Nummerierung und das Symbol für die Eingabeaufforderung (>) aus den Eingabezeilen.Removes numbering and the prompt symbol (>) from input lines.

-m error_level-m error_level
Passt die Anzeige der Fehlermeldungen an.Customizes the display of error messages. Für jeden Fehler mit dem angegebenen oder einem höheren Schweregrad wird die Meldungsnummer, der Status und der Fehlergrad angezeigt.The message number, state, and error level are displayed for errors of the specified severity level or higher. Für Fehler mit einem niedrigeren ist als dem angegebenen Schweregrad wird nichts angezeigt.Nothing is displayed for errors of levels lower than the specified level. Mit -1 können Sie angeben, dass alle Header mit Meldungen zurückgegeben werden. Dies gilt auch für Informationsmeldungen.Use -1 to specify that all headers are returned with messages, even informational messages. Falls Sie -1verwenden, darf kein Leerzeichen zwischen dem Parameter und der Einstellung stehen (-m-1und nicht -m -1).If using -1, there must be no space between the parameter and the setting (-m-1, not -m -1).

-r { 0| 1}-r { 0| 1}
Leitet die Meldungsausgabe auf den Bildschirm um (stderr).Redirects message output to the screen (stderr). Wenn Sie keinen Parameter oder 0angeben, werden nur Fehlermeldungen umgeleitet, deren Schweregrad 11 oder höher ist.If you do not specify a parameter, or if you specify 0, only error messages with a severity level 11 or higher are redirected. Wenn Sie 1angeben, werden alle Meldungsausgaben (einschließlich der Ausgabe von "print") umgeleitet.If you specify 1, all message output (including "print") is redirected.

-i input_file-i input_file
Identifiziert die Datei, die einen Batch mit SQL-Anweisungen oder gespeicherten Prozeduren enthält.Identifies the file that contains a batch of SQL statements or stored procedures. Anstelle von<-i kann der Kleiner-als-Vergleichsoperator () verwendet werden.The less than (<) comparison operator can be used in place of -i.

-o output_file-o output_file
Identifiziert die Datei, die die Ausgabe von osqlerhält.Identifies the file that receives output from osql. Anstelle von>-o kann der Größer-als-Vergleichsoperator () verwendet werden.The greater than (>) comparison operator can be used in place of -o.

Falls input_file nicht im Unicode-Format vorliegt und -u nicht angegeben ist, wird output_file im OEM-Format gespeichert.If input_file is not Unicode and -u is not specified, output_file is stored in OEM format. Falls input_file im Unicode-Format vorliegt oder -u angegeben ist, wird output_file im Unicode-Format gespeichert.If input_file is Unicode or -u is specified, output_file is stored in Unicode format.

-p-p
Druckt die Leistungsstatistik.Prints performance statistics.

-b-b
Gibt an, dass osql beendet und ein DOS ERRORLEVEL-Wert zurückgegeben wird, wenn ein Fehler auftritt.Specifies that osql exits and returns a DOS ERRORLEVEL value when an error occurs. Für die DOS ERRORLEVEL-Variable wird der Wert 1 zurückgegeben, wenn der Schweregrad der SQL ServerSQL Server -Fehlermeldung 11 oder größer ist. Andernfalls wird der Wert 0 zurückgegeben.The value returned to the DOS ERRORLEVEL variable is 1 when the SQL ServerSQL Server error message has a severity of 11 or greater; otherwise, the value returned is 0. MicrosoftMicrosoftMS-DOS-Batchdateien können der Wert von DOS ERRORLEVEL getestet und die Fehler entsprechend behandelt werden. MS-DOS batch files can test the value of DOS ERRORLEVEL and handle the error appropriately.

-u-u
Gibt an, dass output_file unabhängig vom Format von input_fileim Unicode-Format gespeichert wird.Specifies that output_file is stored in Unicode format, regardless of the format of the input_file.

-R-R
Gibt an, dass der SQL ServerSQL Server -ODBC-Treiber Clienteinstellungen verwendet, wenn Währungs-, Datums- oder Zeitdaten in Zeichendaten konvertiert werden.Specifies that the SQL ServerSQL Server ODBC driver use client settings when converting currency, date, and time data to character data.

-O-O
Gibt an, dass bestimmte osql -Funktionen deaktiviert werden, um eine Übereinstimmung mit dem Verhalten früherer isql-Versionen zu erzielen.Specifies that certain osql features be deactivated to match the behavior of earlier versions of isql. Die folgenden Funktionen werden deaktiviert:These features are deactivated:

  • EOF-BatchverarbeitungEOF batch processing

  • Automatisches Skalieren der KonsolenbreiteAutomatic console width scaling

  • Ausführliche MeldungenWide messages

    Außerdem wird der Standardwert von DOS ERRORLEVEL auf -1 festgelegt.It also sets the default DOS ERRORLEVEL value to -1.

Hinweis

Die -n , - O und -D Optionen werden nicht mehr unterstützt, indem Osql.The -n, -O and -D options are no longer supported by osql.

HinweiseRemarks

Das Hilfsprogramm osql wird direkt vom Betriebssystem aus mit den hier aufgelisteten Optionen gestartet, wobei bei den Optionen zwischen Groß- und Kleinschreibung unterschieden wird.The osql utility is started directly from the operating system with the case-sensitive options listed here. Nachdem osqlgestartet wurde, akzeptiert das Hilfsprogramm SQL-Anweisungen und sendet diese interaktiv an SQL ServerSQL Server .After osqlstarts, it accepts SQL statements and sends them to SQL ServerSQL Server interactively. Die Ergebnisse werden formatiert und auf dem Bildschirm angezeigt (stdout).The results are formatted and displayed on the screen (stdout). Verwenden Sie QUIT oder EXIT zum Beenden von osql.Use QUIT or EXIT to exit from osql.

Falls Sie beim Starten von osqlkeinen Benutzernamen angeben, überprüft SQL ServerSQL Server die Umgebungsvariablen und verwendet diese, z.B. osqluser=(user) oder osqlserver=(server).If you do not specify a user name when you start osql, SQL ServerSQL Server checks for the environment variables and uses those, for example, osqluser=(user) or osqlserver=(server). Wenn keine Umgebungsvariablen festgelegt sind, wird der Benutzername der Arbeitsstation verwendet.If no environment variables are set, the workstation user name is used. Wenn Sie keinen Server angeben, wird der Name der Arbeitsstation verwendet.If you do not specify a server, the name of the workstation is used.

Falls weder die Option -U noch die Option -P verwendet wird, versucht SQL ServerSQL Server , die Verbindung mithilfe des MicrosoftMicrosoft Windows-Authentifizierungsmodus herzustellen.If neither the -U or -P options are used, SQL ServerSQL Server attempts to connect using MicrosoftMicrosoft Windows Authentication Mode. Die Authentifizierung basiert auf dem MicrosoftMicrosoft -Windows-Konto des Benutzers, der osqlausführt.Authentication is based on the MicrosoftMicrosoft Windows account of the user running osql.

Das Hilfsprogramm osql verwendet die ODBC-API.The osql utility uses the ODBC API. Das Hilfsprogramm verwendet die Standardeinstellungen des SQL ServerSQL Server -ODBC-Treibers für die ISO-Verbindungsoptionen in SQL ServerSQL Server .The utility uses the SQL ServerSQL Server ODBC driver default settings for the SQL ServerSQL Server ISO connection options. Weitere Informationen finden Sie im Thema zu den Effekten der ANSI-Optionen.For more information, see Effects of ANSI Options.

Hinweis

Das Hilfsprogramm osql bietet keine Unterstützung für benutzerdefinierte CLR-Datentypen.The osql utility does not support CLR user-defined data types. Zum Verarbeiten dieser Datentypen müssen Sie das Hilfsprogramm sqlcmd verwenden.To process these data types, you must use the sqlcmd utility. Weitere Informationen finden Sie unter sqlcmd Utility.For more information, see sqlcmd Utility.

OSQL-BefehleOSQL Commands

Zusätzlich zu den Transact-SQLTransact-SQL -Anweisungen in osql, sind auch die folgenden Befehle verfügbar.In addition to Transact-SQLTransact-SQL statements within osql, these commands are also available.

BefehlCommand BeschreibungDescription
GOGO Führt alle Anweisungen aus, die nach dem letzten GO-Befehl eingegeben wurden.Executes all statements entered after the last GO.
RESETRESET Löscht alle Anweisungen, die Sie eingegeben haben.Clears any statements you have entered.
QUIT oder EXIT( )QUIT or EXIT( ) Beendet osql.Exits from osql.
STRG+CCTRL+C Beendet eine Abfrage, ohne osqlzu beenden.Ends a query without exiting from osql.

Hinweis

Die Befehle !!The !! und ED werden von osqlnicht mehr unterstützt.and ED commands are no longer supported by osql.

Die Befehlsabschlusszeichen GO (Standard), RESET EXIT, QUIT und STRG+C werden nur erkannt, wenn sie am Anfang einer Zeile unmittelbar hinter der osql -Eingabeaufforderung verwendet werden.The command terminators GO (by default), RESET EXIT, QUIT, and CTRL+C, are recognized only if they appear at the beginning of a line, immediately following the osql prompt.

GO signalisiert sowohl das Ende eines Batches als auch die Ausführung aller zwischengespeicherten Transact-SQLTransact-SQL -Anweisungen.GO signals both the end of a batch and the execution of any cached Transact-SQLTransact-SQL statements. Sobald Sie am Ende einer Eingabezeile die EINGABETASTE drücken, werden die Anweisungen in dieser Zeile von osql zwischengespeichert.When you press ENTER at the end of each input line, osql caches the statements on that line. Wenn Sie nach dem Eingeben von GO die EINGABETASTE drücken, werden alle zurzeit zwischengespeicherten Anweisungen als Batch an SQL ServerSQL Servergesendet.When you press ENTER after typing GO, all of the currently cached statements are sent as a batch to SQL ServerSQL Server.

Die aktuelle Version des Hilfsprogramms osql arbeitet so, als würde sich am Ende jedes ausgeführten Skripts ein impliziter GO-Befehl befinden. Daher werden alle Anweisungen im Skript ausgeführt.The current osql utility works as if there is an implied GO at the end of any script executed, therefore all statements in the script execute.

Beenden Sie einen Befehl, indem Sie eine Zeile eingeben, die mit einem Befehlsabschlusszeichen beginnt.End a command by typing a line beginning with a command terminator. Durch das Eingeben einer ganzen Zahl hinter einem Befehlsabschlusszeichen können Sie angeben, wie oft der Befehl ausgeführt werden soll.You can follow the command terminator with an integer to specify how many times the command should be run. Wenn Sie diesen Befehl z. B. 100-mal ausführen möchten, geben Sie Folgendes ein:For example, to execute this command 100 times, type:

SELECT x = 1  
GO 100  

Die Ergebnisse werden einmal am Ende der Ausführung ausgegeben.The results are printed once at the end of execution. osql akzeptiert nicht mehr als 1.000 Zeichen pro Zeile.osql does not accept more than 1,000 characters per line. Umfangreiche Anweisungen sollten auf mehrere Zeilen verteilt werden.Large statements should be spread across multiple lines.

Mithilfe der Befehlsrückruffunktionen von Windows können osql -Anweisungen zurückgerufen und geändert werden.The command recall facilities of Windows can be used to recall and modify osql statements. Der vorhandene Abfragepuffer kann durch das Eingeben von RESET geleert werden.The existing query buffer can be cleared by typing RESET.

Wenn gespeicherte Prozeduren ausgeführt werden, gibt osql eine Leerzeile zwischen den einzelnen Resultsets in einem Batch aus.When running stored procedures, osql prints a blank line between each set of results in a batch. Außerdem wird die Meldung "0 Zeilen betroffen" nicht angezeigt, wenn sie für die ausgeführte Anweisung nicht gilt.In addition, the "0 rows affected" message does not appear when it does not apply to the statement executed.

Interaktives Verwenden von osqlUsing osql Interactively

Wenn Sie osql interaktiv verwenden möchten, geben Sie an der Eingabeaufforderung den Befehl osql (und alle darüber hinaus gewünschten Optionen) ein.To use osql interactively, type the osql command (and any of the options) at a command prompt.

Sie können eine Datei einlesen, die eine Abfrage enthält (wie z.B. „Stores.qry“), die von osql ausgeführt werden soll, indem Sie in etwa folgenden Befehl eingeben:You can read in a file containing a query (such as Stores.qry) for execution by osql by typing a command similar to this:

osql -E -i stores.qry  

Sie können eine Datei mit einer Abfrage (z. B. Titles.qry) einlesen und die Ergebnisse in eine andere Datei umleiten, indem Sie einen Befehl eingeben, der in etwa wie folgt aussieht:You can read in a file containing a query (such as Titles.qry) and direct the results to another file by typing a command similar to this:

osql -E -i titles.qry -o titles.res  

Wichtig

Verwenden Sie, sofern möglich, die Option -E(vertrauenswürdige Verbindung).When possible, use the -Eoption (trusted connection).

Wenn Sie osql interaktiv verwenden, können Sie mithilfe von :rfile_nameeine Betriebssystemdatei in den Befehlspuffer einlesen.When using osql interactively, you can read an operating-system file into the command buffer with :rfile_name. Hierdurch wird das in file_name angegebene SQL-Skript direkt als ein einziger Batch an den Server gesendet.This sends the SQL script in file_name directly to the server as a single batch.

Hinweis

Wenn Sie osqlverwenden, behandelt SQL ServerSQL Server das Batchtrennzeichen GO als Syntaxfehler, falls es in einer SQL-Skriptdatei verwendet wird.When using osql, SQL ServerSQL Server treats the batch separator GO, if it appears in a SQL script file, as a syntax error.

Einfügen von KommentarenInserting Comments

Sie können Kommentare in eine Transact-SQL-Anweisung einschließen, die von SQL ServerSQL Server osql angesendet wird.You can include comments in a Transact-SQL statement submitted to SQL ServerSQL Server by osql. Für Kommentare sind die beiden folgenden Formate zulässig: -- und /...\/.Two types of commenting styles are allowed: -- and /...\/.

Verwenden von EXIT zum Zurückgeben von Ergebnissen in "osql"Using EXIT to Return Results in osql

Sie können das Ergebnis einer SELECT-Anweisung als Rückgabewert von osqlverwenden.You can use the result of a SELECT statement as the return value from osql. Wenn numerisch, wird die letzte Spalte der letzten Ergebniszeile in eine 4 Byte lange ganze Zahl (Long) konvertiert.If it is numeric, the last column of the last result row is converted to a 4-byte integer (long). MS-DOS übergibt das niedrige Byte an den übergeordneten Prozess oder an die Fehlerebene des Betriebssystems.MS-DOS passes the low byte to the parent process or operating system error level. Windows übergibt die gesamte 4 Byte lange ganze Zahl.Windows passes the entire 4-byte integer. Die Syntax ist:The syntax is:

EXIT ( < query > )  

Beispiel:For example:

EXIT(SELECT @@ROWCOUNT)  

Sie können den EXIT-Parameter auch als Teil einer Batchdatei einschließen.You can also include the EXIT parameter as part of a batch file. Beispiel:For example:

osql -E -Q "EXIT(SELECT COUNT(*) FROM '%1')"  

Das Hilfsprogramm osql übergibt alle zwischen den Klammern ( ) stehenden Zeichen exakt so an den Server, wie sie eingegeben wurden.The osql utility passes everything between the parentheses () to the server exactly as entered. Wenn eine gespeicherte Systemprozedur eine Menge auswählt und einen Wert zurückgibt, wird nur die Auswahl zurückgegeben.If a stored system procedure selects a set and returns a value, only the selection is returned. Eine EXIT() -Anweisung ohne Angabe zwischen den Klammern führt alle im Batch vorhergehenden Anweisungen aus und beendet das Hilfsprogramm dann ohne Rückgabewert.The EXIT() statement with nothing between the parentheses executes everything preceding it in the batch and then exits with no return value.

Es gibt vier EXIT-Formate:There are four EXIT formats:

  • EXITEXIT

Hinweis

Führt den Batch nicht aus, beendet das Hilfsprogramm sofort und gibt keinen Wert zurück.Does not execute the batch; quits immediately and returns no value.

  • EXIT()EXIT()

Hinweis

Führt den Batch aus, beendet dann das Hilfsprogramm und gibt keinen Wert zurück.Executes the batch, and then quits and returns no value.

  • EXIT(query)EXIT(query)

Hinweis

Führt den Batch einschließlich der Abfrage aus und beendet dann das Hilfsprogramm, nachdem die Ergebnisse der Abfrage zurückgegeben wurden.Executes the batch, including the query, and then quits after returning the results of the query.

  • RAISERROR mit einem Status von 127RAISERROR with a state of 127

Hinweis

Falls RAISERROR in einem osql -Skript verwendet wird, und der Status 127 ausgelöst wird, wird osql beendet und gibt die Meldungs-ID an den Client zurück.If RAISERROR is used within an osql script and a state of 127 is raised, osql will quit and return the message ID back to the client. Beispiel:For example:

RAISERROR(50001, 10, 127)  

Dieser Fehler bewirkt, dass das osql -Skript beendet und die Meldungs-ID 50001 an den Client zurückgegeben wird.This error will cause the osql script to end and the message ID 50001 will be returned to the client.

Die Rückgabewerte -1 bis -99 sind von SQL ServerSQL Serverreserviert; osql definiert die folgenden Werte:The return values -1 to -99 are reserved by SQL ServerSQL Server; osql defines these values:

  • -100-100

    Vor dem Auswählen des Rückgabewerts ist ein Fehler aufgetreten.Error encountered prior to selecting return value.

  • -101-101

    Beim Auswählen eines Rückgabewerts wurden keine Zeilen gefunden.No rows found when selecting return value.

  • -102-102

    Beim Auswählen des Rückgabewerts ist ein Konvertierungsfehler aufgetreten.Conversion error occurred when selecting return value.

Anzeigen der Datentypen money und smallmoneyDisplaying money and smallmoney Data Types

osql zeigt einen Wert des Datentyps money oder smallmoney mit zwei Dezimalstellen an, obwohl SQL ServerSQL Server den Wert intern mit vier Dezimalstellen speichert.osql displays the money and smallmoney data types with two decimal places although SQL ServerSQL Server stores the value internally with four decimal places. Beachten Sie folgendes Beispiel:Consider the example:

SELECT CAST(CAST(10.3496 AS money) AS decimal(6, 4))  
GO  

Diese Anweisung gibt als Ergebnis 10.3496zurück. Dieses Ergebnis zeigt an, dass der Wert mit allen unveränderten Dezimalstellen gespeichert wird.This statement produces a result of 10.3496, which indicates that the value is stored with all decimal places intact.

Siehe auchSee Also

Kommentar ( MDX ) Comment (MDX)
--( Kommentar ) ( MDX ) -- (Comment) (MDX)
CAST und CONVERT ( Transact-SQL ) CAST and CONVERT (Transact-SQL)
RAISERROR ( Transact-SQL )RAISERROR (Transact-SQL)