Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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
A hálózatokon történő műsorszórás jellege miatt előfordulhat, hogy az osql nem kap időben választ az összes kiszolgálótól. Ezért a visszaadott kiszolgálók listája a beállítás minden egyes meghívása esetén eltérő lehet.
-Ulogin_id
A felhasználó bejelentkezési azonosítója. A bejelentkezési azonosítók megkülönböztetik a kis- és nagybetűket.
-Pjelszó
Felhasználó által megadott jelszó. Ha a -P beállítást nem használja, az osql jelszót kér. Ha a -P beállítást a parancssor végén jelszó nélkül használja, 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ókért lásd az erős jelszavak létrehozását ismertető cikket.
A jelszavak megkülönböztetik a kis- és nagybetűket.
Az OSQLPASSWORD környezeti változó lehetővé teszi egy alapértelmezett jelszó beállítását az aktuális munkamenethez. Ezért nem kell a jelszót batch fájlokba bekódolnia.
Ha nem ad meg jelszót a -P beállítással, az osql először az OSQLPASSWORD változót ellenőrzi. Ha nincs beállítva érték, az osql az alapértelmezett jelszót(NULL) használja. Az alábbi példa egy parancssorban állítja be az OSQLPASSWORD változót, majd hozzáfér az osql segédprogramhoz:
C:\>SET OSQLPASSWORD=abracadabra
C:\>osql
Fontos
A jelszó maszkolásához ne adja meg a -P lehetőséget a -U beállítással együtt. Ehelyett, miután megadta az osql-t az -U beállítással és más kapcsolókkal (ne adja meg a -P-t), nyomja le az ENTER billentyűt, és az osql kéri a jelszót. Ez a módszer biztosítja, hogy a jelszó maszkolt legyen a beíráskor.
-E
Jelszó kérése helyett megbízható kapcsolatot használ.
-Sserver_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 server_name\instance_name , hogy az adott kiszolgálón található SQL Server egy nevesített példányához csatlakozzon. 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.
-Hwksta_name
Ez egy munkaállomás neve. A munkaállomás nevét a sysprocesses.hostname tárolja, és sp_who jeleníti meg. Ha ez a beállítás nincs megadva, a számítógép jelenlegi neve lesz feltételezve.
-ddb_name
Az osql indításakor kiad egy USE db_name utasítást.
-ltime_out
Megadja az osql-bejelentkezés időtúllépése előtti másodpercek számát. Az osql-be való bejelentkezés alapértelmezett időtúllépése nyolc másodperc.
-ttime_out
A parancsok túllépésének másodperces számát adja meg. Ha nincs megadva time_out érték, a parancsok nem időtúllépést hajtanak végre.
-hfejlé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 használatával megadhatja, hogy a program ne nyomtatjon fejléceket. Ha -1 használ, nem lehet szóköz a paraméter és a beállítás között (-h-1, nem -h -1).
-soszlop_elválasztó
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.
-wcolumn_width
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. Ha egy kimeneti vonal elérte a maximális képernyőszélességét, az több sorra van bontva.
-acsomag_méret
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 GO-parancsok közötti SQL-utasítások mennyisége 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, ha a kérés nem adható meg.
-e
Visszhangot ad a bemenetnek.
-Én
Be van kapcsolva a QUOTED_IDENTIFIER kapcsolati beállítás.
-Ddata_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.
-ccmd_end
A parancs terminátorát adja meg. Alapértelmezés szerint a parancsokat a rendszer leállítja, és elküldi az SQL Servernek úgy, hogy a GO-t önmagában beírja egy sorba. A parancs terminátorának alaphelyzetbe állításakor ne használjon Transact-SQL fenntartott szavakat vagy karaktereket, amelyek különleges jelentéssel rendelkeznek az operációs rendszerre, 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 . (Vegye figyelembe, hogy a lekérdezési utasítás nem tartalmazhat GO-t). Ha kötegelt fájlból ad ki lekérdezést, használja %variablesvagy környezeti %variables%. 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"query"
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.
-mhiba_szint
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 használatával megadhatja, hogy az összes fejléc üzenetekkel, akár tájékoztató üzenetekkel legyen visszaadva.
Ha -1-et használ, a paraméter és a beállítás között nem lehet szóköz (-m-1, nem -m -1).
-r { 0| 1}
Átirányítja az üzenet kimenetét a képernyőre (stderr). Ha nem ad meg paramétert, vagy ha 0 értéket ad meg, csak a 11-es vagy annál magasabb súlyosságú hibaüzenetek lesznek átirányítva. Ha 1 értéket ad meg, az összes üzenetkimenet (beleértve a "nyomtatást") átirányításra kerül.
-iinput_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 használható az -i helyett.
-okimeneti_fájl
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 van megadva, a output_file Unicode formátumban lesz tárolva.
-p
Teljesítménystatisztikákat nyomtat.
-b
Megadja, hogy az osql hiba esetén kilépjen, és dos ERRORLEVEL értéket 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. A Microsoft MS-DOS kötegfá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őprogram az ügyfélbeállításokat használja 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
Emellett az alapértelmezett DOS ERRORLEVEL értéket is -1 értékre állítja.
Megjegyzés
Az -n, -O és -D beállításokat az osql már nem támogatja.
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). Az osql-ből való kilépéshez használja a QUIT vagy a EXIT parancsot.
Ha nem ad meg felhasználónevet az osql indításakor, az SQL Server ellenőrzi a környezeti változókat, és azokat használja, például osqluser=(felhasználó) vagy osqlserver=(kiszolgáló). 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 az -U , sem a -P beállítást nem használja, az SQL Server a Microsoft Windows hitelesítési móddal próbál csatlakozni. A hitelesítés az osql-t futtató felhasználó Microsoft 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ó: ANSI-beállítások hatásai.
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 |
---|---|
MENJ | Végrehajtja az utolsó GO után beírt összes utasítást. |
VISSZAÁLLÍTÁS | Törli azokat az állításokat, amelyeket megadott. |
KILÉPÉS vagy KILÉPÉS( ) | 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
A!! és az ED-parancsokat az osql már nem támogatja.
Az alapértelmezett GO, valamint a RESET EXIT, a QUIT és a CTRL+C parancsvégződések csak akkor lesznek felismerhetők, ha egy sor elején jelennek meg, közvetlenül az osql parancssor után.
A GO jelzi mind a köteg végét, mind a gyorsítótárban lévő 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 a GO beírása után lenyomja az ENTER billentyűt, 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 végrehajtott szkriptek végén automatikusan lenne egy GO, ezért a szkript összes utasítása lefut.
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 Windows parancsvisszahívási létesítményei osql-utasítások visszahívására és módosítására használhatók. A meglévő lekérdezési puffer a RESET beírásával törölhető.
Tárolt eljárások futtatásakor az osql üres vonalat nyomtat ki a kötegben lévő eredmények egyes készletei 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).
Az osql interaktív használata esetén egy operációsrendszer-fájlt olvashat a parancspufferbe a következő paranccsal : :rfile_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 használatakor az SQL Server szintaxishibaként kezeli a GO kötegelválasztót, ha az 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 /*...*/
.
Az EXIT használata az eredmények visszaadásához az osql-ben
A SELECT utasítás eredményét használhatja az osql visszatérési értékeként. 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)
Az EXIT paramétert kötegfájl részeként is megadhatja. 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 továbbí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. Az EXIT**()** utasítás végrehajt minden előtte álló utasítást a kötegben, majd visszatérési érték nélkül kilép.
Négy EXIT formátum létezik:
- KIJÁRAT
Megjegyzés
Nem hajtja végre a feladatsort; azonnal kilép, és nem ad vissza visszatérési értéket.
- KILÉPÉS**()**
Megjegyzés
Végrehajtja a feladatot, majd kilép, és nem ad vissza értéket.
- EXIT**(query)**
Megjegyzés
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 127-et tartalmazó állapottal
Megjegyzés
Ha a RAISERROR függvényt egy osql-szkriptben használják, és 127-et ad meg, az osql kilép, és visszaadja az üzenetazonosítót az ügyfélnek. Például:
RAISERROR(50001, 10, 127)
Ez a hiba az osql-szkript végét eredményezi, és az 50001-ös üzenetazonosító vissza lesz adva az ügyfélnek.
A -1-tól -99-ig terjedő visszaadott értékeket az SQL Server foglalja le; osql ezeknek az értékeknek a meghatározását végzi el.
-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 aprópénz 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.
Lásd még:
Megjegyzés (MDX)
-- (Megjegyzés) (MDX)
CAST és CONVERT (Transact-SQL)
RAISERROR (Transact-SQL)