Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics 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.