Megosztás:


osql segédprogram

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Az osql segédprogram lehetővé teszi Transact-SQL utasítások, rendszereljárások és szkriptfájlok megadását. Ez a segédprogram ODBC használatával kommunikál a kiszolgálóval.

Fontos

Ez a funkció az SQL Server egy későbbi verziójában lesz eltávolítva. Ne használja ezt a funkciót az új fejlesztési munkában, és tervezze meg a funkciót jelenleg használó alkalmazások módosítását. Használja inkább az sqlcmd parancsot . További információ: sqlcmd Utility.

Szemantika

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

Érvek

-?

Megjeleníti az osql-kapcsolók szintaxisának összegzését.

-L

Felsorolja a helyileg konfigurált kiszolgálókat és a hálózaton sugárzott kiszolgálók nevét.

Megjegyzés

Előfordulhat, hogy az osql nem kap időben választ a Windows-hálózat összes kiszolgálójától. A visszaadott kiszolgálók listája a beállítás minden egyes meghívása esetén eltérő lehet.

-U login_id

A felhasználói bejelentkezési azonosító. A bejelentkezési azonosítók megkülönböztetik a kis- és nagybetűket.

-P jelszó

Felhasználó által megadott jelszó. Ha a -P beállítás nincs használatban, az osql jelszót kér. Ha a -P parancssor végén jelszó nélkül használja a beállítást, az osql az alapértelmezett jelszót (NULL) használja.

Fontos

Ne használjon üres jelszót. Használjon erős jelszót. További információ: Erős jelszavak.

A jelszavak megkülönböztetik a kis- és nagybetűket.

A OSQLPASSWORD környezeti változó lehetővé teszi az aktuális munkamenet alapértelmezett jelszavának beállítását. Ezért nem kell a jelszót kötegelt fájlokba keménykódolnia.

Ha nem ad meg jelszót az -P opcióval, az osql először a OSQLPASSWORD változót ellenőrzi. Ha nincs beállítva érték, az osql az alapértelmezett jelszót használja. NULL Az alábbi példa egy parancssorban állítja be a OSQLPASSWORD változót, majd hozzáfér az osql segédprogramhoz:

SET OSQLPASSWORD=abracadabra
osql

Fontos

A jelszó maszkolásához ne adja meg a -P beállítást a -U beállítással együtt. Ehelyett, miután megadta az osql-t a -U beállítással és más kapcsolókkal együtt (ne adja meg -P), nyomja meg az Entert, és az osql kéri a jelszót. Ez a módszer biztosítja, hogy a jelszó maszkolt legyen, amikor be van írva.

-E

Jelszó kérése helyett megbízható kapcsolatot használ.

-S server_name[\instance_name]

Megadja az SQL Server azon példányát, amelyhez csatlakozni szeretne. Adja meg a server_name-t, hogy csatlakozzon az SQL Server alapértelmezett példányához azon a kiszolgálón. Adja meg a <server_name>\<instance_name> elemet egy névvel ellátott SQL Server példányhoz való csatlakozáshoz ezen a kiszolgálón. Ha nincs megadva kiszolgáló, az osql a helyi számítógépen az SQL Server alapértelmezett példányához csatlakozik. Erre a beállításra akkor van szükség, ha az osql-t távoli számítógépről hajtja végre a hálózaton.

-H wksta_name

Egy munkaállomás neve. A munkaállomás nevét a rendszer tároljasysprocesses.hostname, és a rendszer megjeleníti.sp_who Ha ez a beállítás nincs megadva, a számítógép jelenlegi neve lesz feltételezve.

-d db_name

Az osql indításakor kiad egy USE db_name utasítást.

-l time_out

Megadja az osql-bejelentkezés időtúllépése előtti másodpercek számát. Az osql-hez való csatlakozás alapértelmezett időtúllépése nyolc másodperc.

-t time_out

Adja meg, hány másodperc múlva jár le egy parancs végrehajtása. Ha nincs megadva időkorlát, a parancsok nem járnak le.

-h fejlécek

Megadja az oszlopfejlécek között nyomtatandó sorok számát. Az alapértelmezett beállítás a fejlécek nyomtatása minden lekérdezési eredménykészlethez. A -1 jelöli, hogy ne nyomtasson fejléceket. Ha a(z) -1 elemet használja, a paraméter és a beállítás között (-h-1, nem -h -1) nem szabad szóközt megadni.

-s col_separator

Megadja az oszlopelválasztó karaktert, amely alapértelmezés szerint üres terület. Ha olyan karaktereket szeretne használni, amelyek különleges jelentéssel bírnak az operációs rendszer számára (például | ; > <>), a karaktert idézőjelek közé () kell foglalnia.

-w oszlopszélesség

Lehetővé teszi a felhasználó számára a képernyő szélességének beállítását a kimenethez. Az alapértelmezett érték 80 karakter. Amikor egy kimeneti sor eléri a maximális képernyőszélességét, több sorra van bontva.

-a packet_size

Lehetővé teszi a különböző méretű csomagok kérését. A packet_size érvényes értékei 512–65535. Az alapértelmezett osql érték a kiszolgáló alapértelmezett értéke. A nagyobb csomagméret növelheti a nagyobb szkriptvégrehajtás teljesítményét, ha a parancsok közötti GO Transact-SQL utasítások száma jelentős. A Microsoft tesztelése szerint a tömeges másolási műveletekhez általában a 8192 a leggyorsabb beállítás. Nagyobb csomagméret kérhető, de az osql alapértelmezés szerint a kiszolgáló alapértelmezett értékére áll be, ha a kérés nem teljesíthető.

-e

Visszhangot ad a bemenetnek.

-I

Beállítja a QUOTED_IDENTIFIER kapcsolati opciót.

-D data_source_name

Olyan ODBC-adatforráshoz csatlakozik, amely az SQL Server ODBC-illesztőprogramjának használatával van definiálva. Az osql-kapcsolat az adatforrásban megadott beállításokat használja.

Megjegyzés

Ez a beállítás nem működik más illesztőprogramokhoz definiált adatforrásokkal.

-c cmd_end

A parancs terminátorát adja meg. Alapértelmezés szerint a parancsok leállnak, és egy sor önmagában való beírásával GO küldik el az SQL Servernek. A parancsvégződés alaphelyzetbe állításakor ne használjon Transact-SQL fenntartott szavakat vagy olyan karaktereket, amelyek különleges jelentéssel rendelkeznek az operációs rendszer számára, akár fordított perjel előzi meg, akár nem.

-q "query"

Lekérdezést hajt végre az osql indításakor, de a lekérdezés befejezésekor nem lép ki az osql-ből . (A lekérdezési utasítás nem tartalmazhat GO). Ha kötegelt fájlból kiad lekérdezést, használja a %<variable> vagy a környezet %<variable>%. Például:

SET table=sys.objects
osql -E -q "select name, object_id from %table%"

Használjon dupla idézőjeleket a lekérdezés körül, és szimpla idézőjeleket a lekérdezésbe ágyazott elemek köré.

-Q" lekérdezés "

Végrehajt egy lekérdezést, és azonnal kilép az osql-ből. Használjon dupla idézőjeleket a lekérdezés körül, és szimpla idézőjeleket a lekérdezésbe ágyazott elemek köré.

-n

Eltávolítja a számozást és a parancssori szimbólumot (>) a beviteli sorokból.

-m error_level

Testre szabja a hibaüzenetek megjelenítését. Az üzenetszám, az állapot és a hibaszint a megadott súlyossági szint vagy magasabb szintű hibák esetén jelenik meg. A megadott szintnél alacsonyabb szintek hibái nem jelennek meg. A -1 segítségével adhatja meg, hogy minden fejléc vissza legyen adva az üzenetekkel, beleértve az információs üzeneteket is. Ha a -1 használata mellett dönt, akkor a paraméter és a beállítás (-m-1, nem -m -1) között nem lehet szóköz.

-r { 0| 1}

Átirányítja az üzenet kimenetét a képernyőre (stderr). Ha nem ad meg paramétert, vagy ha megadja 0, csak a 11-es vagy annál magasabb súlyosságú hibaüzenetek lesznek átirányítva. Ha megadja 1, a rendszer az összes üzenetkimenetet (beleértve a "nyomtatást") átirányítja.

-i input_file

Azonosítja azt a fájlt, amely SQL-utasítások vagy tárolt eljárások kötegét tartalmazza. A kisebb mint (<) összehasonlító operátor a < helyett -i használható.

-o output_file

Azonosítja az osql-ből kimenetet fogadó fájlt. A nagyobb mint (>) összehasonlító operátor használható a -o helyett.

Ha input_file nem Unicode, és -u nincs megadva, output_file OEM formátumban lesz tárolva. Ha input_file Unicode vagy -u meg van adva, a output_file Unicode formátumban lesz tárolva.

-p

Teljesítménystatisztikákat nyomtat.

-b

Azt adja meg, hogy az osql hiba esetén kilépjen, és DOS-értéket ERRORLEVEL adjon vissza. A DOS ERRORLEVEL változónak visszaadott érték 1, ha az SQL Server hibaüzenetének súlyossága 11 vagy nagyobb; ellenkező esetben a visszaadott érték 0. MS-DOS kötegelt fájlok tesztelhetik a DOS ERRORLEVEL értékét, és megfelelően kezelhetik a hibát.

-u

Megadja, hogy a output_file Unicode formátumban legyen tárolva, a input_file formátumától függetlenül.

-R

Megadja, hogy az SQL Server ODBC-illesztőnek ügyfélbeállításokat kell használnia a pénznem, a dátum és az idő adatok karakteradatokká alakításakor.

-O

Megadja, hogy egyes osql-funkciók inaktiválva legyenek az isql korábbi verzióinak viselkedéséhez igazodva. Ezek a funkciók inaktiválva vannak:

  • EOF-kötegfeldolgozás
  • Automatikus konzolszélesség-skálázás
  • Széles körben terjesztett üzenetek

Az alapértelmezett DOS-értéket is ERRORLEVEL értékre állítja -1.

Megjegyzés

Az -n, -O és -D beállításokat nem támogatja az osql.

Megjegyzések

Az osql segédprogram közvetlenül az operációs rendszerből indul el az itt felsorolt kis- és nagybetűérzékeny opciókkal. Az osql elindítása után elfogadja az SQL-utasításokat, és interaktívan elküldi őket az SQL Servernek. Az eredmények formázása és megjelenítése a képernyőn (stdout). Használja a QUIT vagy a EXIT kilépéshez az osql programból.

Ha nem ad meg felhasználónevet az osql indításakor, az SQL Server ellenőrzi a környezeti változókat, és ezeket használja például. osqluser=(<user>)osqlserver=(<server>) Ha nincsenek beállítva környezeti változók, a rendszer a munkaállomás felhasználónevet használja. Ha nem ad meg kiszolgálót, a rendszer a munkaállomás nevét használja.

Ha sem a -U, sem a -P opciókat nem használja, az SQL Server Windows-hitelesítési módban próbál csatlakozni. A hitelesítés az osql-t futtató felhasználó Windows-fiókján alapul.

Az osql segédprogram az ODBC API-t használja. A segédprogram az SQL Server ODBC-illesztő alapértelmezett beállításait használja az SQL Server ISO-kapcsolati beállításaihoz. További információ: Megfontolandó szempontok a SET utasítások használatakor.

Megjegyzés

Az osql segédprogram nem támogatja a CLR felhasználó által definiált adattípusokat. Ezeknek az adattípusoknak a feldolgozásához az sqlcmd segédprogramot kell használnia. További információ: sqlcmd Utility.

OSQL-parancsok

Az osql-Transact-SQL utasítások mellett ezek a parancsok is elérhetők.

Parancs Leírás
GO Végrehajtja az utolsó GOután beírt összes utasítást.
RESET Törli azokat az állításokat, amelyeket megadott.
QUIT vagy EXIT() Kilépés az osql-ből.
Ctrl+C A lekérdezés befejezése az osql-ből való kilépés nélkül.

Megjegyzés

!! és ED parancsokat nem támogatja az osql.

A parancskifejezések GO (alapértelmezés szerint) RESETEXITQUITés a Ctrl+C csak akkor lesznek felismerve, ha egy sor elején jelennek meg, közvetlenül az osql-parancssort követve.

GO jelzi mind a tétel végét, mind a gyorsítótárazott Transact-SQL utasítások végrehajtását. Amikor az Enter billentyűt lenyomja az egyes bemeneti sorok végén, az osql gyorsítótárazza az adott sorban lévő utasításokat. Amikor gépelés után lenyomja az GO, a rendszer az összes jelenleg gyorsítótárazott utasítást kötegként küldi el az SQL Servernek.

A jelenlegi osql-segédprogram úgy működik, mintha a szkript végén egy implicit GO futna, ezért a szkript összes utasítása végrehajtásra kerül.

A parancs befejezéséhez írjon be egy sort, amely parancslezáróval kezdődik. A parancs terminátorát egész számmal követve megadhatja, hogy hányszor kell futtatni a parancsot. Ha például 100 alkalommal szeretné végrehajtani ezt a parancsot, írja be a következőt:

SELECT x = 1
GO 100

Az eredmények nyomtatása a végrehajtás végén egyszer megtörténik. Az osql legfeljebb 1000 karaktert fogad el soronként. A nagy utasításokat több sorban kell elosztani.

A parancsvisszahívási lehetőségeket a Windowsban használhatja az osql-utasítások visszahívására és módosítására. A meglévő lekérdezési puffer törölhető a következő beírásával RESET: .

Amikor az osql tárolt eljárásokat futtat, egy üres sort nyomtat ki egy kötegben lévő eredményhalmaz között. Ezenkívül a "0 érintett sor érintett" üzenet nem jelenik meg, ha az nem vonatkozik a végrehajtott utasításra.

Az osql interaktív használata

Az osql interaktív használatához írja be az osql parancsot (és a lehetőségek bármelyikét) egy parancssorba.

Egy lekérdezést (például Stores.qry) tartalmazó fájlban olvashat az osql általi végrehajtáshoz egy ehhez hasonló parancs beírásával:

osql -E -i stores.qry

Egy lekérdezést tartalmazó fájlban (például Titles.qry) elolvashatja az eredményeket, és egy ehhez hasonló parancs beírásával átirányíthatja az eredményeket egy másik fájlba:

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

Fontos

Ha lehetséges, használja az -E lehetőséget (megbízható kapcsolat).

Ha interaktívan használja az osql-t , beolvashat egy operációsrendszer-fájlt a parancspufferbe a következő paranccsal :r<file_name>: . Ezzel közvetlenül a kiszolgálóra küldi az file_name nevű SQL-szkriptet egyetlen kötegként.

Megjegyzés

Az osql szintaxishibaként kezeli a kötegelválasztót GO , ha egy SQL-szkriptfájlban jelenik meg.

Megjegyzések beszúrása

Megjegyzéseket is felvehet egy Transact-SQL utasításba, amelyet az osql küldött az SQL Servernek. Kétféle megjegyzésstílus engedélyezett: -- és /*...*/.

Eredmények visszaadása az osql-ben a kilépés használatával

Az SELECT utasítás eredményét az osql visszatérési értékeként használhatja fel. Ha numerikus, az utolsó eredménysor utolsó oszlopa 4 bájtos egész számmá (hosszú) lesz konvertálva. MS-DOS átadja az alacsony bájtot a szülőfolyamatnak vagy az operációs rendszer hibaszintjének. A Windows a teljes 4 bájtos egész számot átadja. A szintaxis a következő:

EXIT ( <query> )

Például:

EXIT(SELECT @@ROWCOUNT)

A EXIT paramétert kötegfájl részeként is felveheti. Például:

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

Az osql segédprogram a zárójelek () között mindent pontosan a megadott módon ad át a kiszolgálónak. Ha egy tárolt rendszer eljárás kiválaszt egy halmazt, és értéket ad vissza, csak a kijelölés lesz visszaadva. A EXIT() zárójelek között semmit nem tartalmazó utasítás végrehajtja a kötegben előtte lévő összes műveletet, majd visszatérési érték nélkül kilép.

Négy EXIT formátum létezik:

Formátum Részletek
EXIT Nem hajtja végre a batch parancsot; azonnal kilép, és nem ad vissza értéket.
EXIT() Végrehajtja a feladatot, majd kilép, és nem ad vissza értéket.
EXIT(<query>) Végrehajtja a kötegelt folyamatot, beleértve a lekérdezést, majd a lekérdezés eredményeinek visszaadása után kilép.
RAISERROR állapotú 127 Ha RAISERROR egy osql-szkriptben használatos, és egy 127-es állapotot idéz elő, az osql kilép, és visszaadja az üzenetazonosítót az ügyfélnek.

Az alábbi példa bemutatja, hogyan befolyásolhatja az osql viselkedését a következőkkel RAISERROR:

RAISERROR (50001, 10, 127);

Ez a hiba az osql-szkript végét okozza, és az 50001-ös üzenetazonosítót adja vissza az ügyfélnek.

Az -1 és -99 közötti visszatérési értékek fenntartottak. Az osql a következő értékeket határozza meg:

  • -100: Hiba történt a visszatérési érték kiválasztása előtt.
  • -101: Nem található sor a visszatérési érték kiválasztásakor.
  • -102: Konvertálási hiba történt a visszatérési érték kiválasztásakor.

Pénz és kisösszeg adattípusok megjelenítése

Az osql a pénz és kis pénz adattípusokat két tizedesjeggyel jeleníti meg, bár az SQL Server belsőleg négy tizedesjeggyel tárolja az értéket. Vegyük a példát:

SELECT CAST (CAST (10.3496 AS MONEY) AS DECIMAL (6, 4));
GO

Ez az utasítás a következő eredményt 10.3496 hozza létre, amely azt jelzi, hogy az érték az összes tizedesjeggyel együtt van tárolva.