Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytický platformní systém (PDW)
Nástroj osql umožňuje zadat Transact-SQL příkazy, systémové procedury a soubory skriptů. Tento nástroj používá rozhraní ODBC ke komunikaci se serverem.
Důležité
Tato funkce bude odebrána v budoucí verzi SQL Serveru. Nepoužívejte tuto funkci v nové vývojové práci a naplánujte úpravu aplikací, které tuto funkci aktuálně používají. Místo toho použijte sqlcmd . Další informace naleznete v nástroji sqlcmd.
Syntaxe
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]
]
Argumenty
-?
Zobrazí souhrn syntaxe přepínačů osql .
-L
Zobrazí seznam místně nakonfigurovaných serverů a názvů serverů, které v síti vysílají.
Poznámka:
Vzhledem k povaze vysílání v sítích nemusí osql přijímat včasnou odpověď ze všech serverů. Proto se seznam vrácených serverů může pro každé vyvolání této možnosti lišit.
-Ulogin_id
Je přihlašovací ID uživatele. V ID přihlášení se rozlišují malá a velká písmena.
-Pheslo
Je uživatelské heslo. Pokud se možnost -P nepoužívá, osql zobrazí výzvu k zadání hesla. Pokud se na konci příkazového řádku použije možnost -P bez hesla, použije osql výchozí heslo (NULL).
Důležité
Nepoužívejte prázdné heslo. Použijte silné heslo. Další informace najdete v tématu Silná hesla.
V heslech se rozlišují malá a velká písmena.
Proměnná prostředí OSQLPASSWORD umožňuje nastavit výchozí heslo pro aktuální relaci. Proto nemusíte pevně zakódovat heslo do dávkových souborů.
Pokud nezadáte heslo s parametrem -P , osql nejprve zkontroluje proměnnou OSQLPASSWORD. Pokud není nastavená žádná hodnota, osql použije výchozí heslo NULL. Následující příklad nastaví proměnnou OSQLPASSWORD na příkazovém řádku a pak přistupuje k nástroji osql :
C:\>SET OSQLPASSWORD=abracadabra
C:\>osql
Důležité
Pokud chcete heslo maskovat, nezadávejte možnost -P spolu s parametrem -U . Místo toho po zadání osql spolu s parametrem -U a dalšími přepínači (nezadávejte -P), stiskněte ENTER a osql zobrazí výzvu k zadání hesla. Tato metoda zajistí, že heslo bude při zadání maskováno.
-E
Místo vyžádání hesla používá důvěryhodné připojení.
-Sserver_name[ \instance_name]
Určuje instanci SQL Serveru, ke které se má připojit. Zadejte server_name pro připojení k výchozí instanci SQL Serveru na tomto serveru. Zadejte server_name instance_name\ pro připojení k pojmenované instanci SQL Serveru na tomto serveru. Pokud není zadaný žádný server, osql se připojí k výchozí instanci SQL Serveru na místním počítači. Tato možnost se vyžaduje při spouštění osql ze vzdáleného počítače v síti.
-Hwksta_name
Je název pracovní stanice. Název pracovní stanice je uložen v sysprocesses.hostname a je zobrazen sp_who. Pokud tato možnost není zadána, předpokládá se název aktuálního počítače.
-ddb_name
Vydá příkaz USE db_name při spuštění osql .
-lčasový_limit
Určuje počet sekund před časovým limitem přihlášení osql . Výchozí časový limit pro přihlášení k osql je osm sekund.
-tčasový_limit
Určuje počet sekund před vypršením limitu příkazu. Pokud není zadána hodnota time_out, příkazy nezpůsobí vypršení.
-hheaders
Určuje počet řádků, které se mají vytisknout mezi záhlavími sloupců. Ve výchozím nastavení se nadpisy vytisknou jednou pro každou sadu výsledků dotazu. Pomocí -1 určete, že se nebudou tisknout žádná záhlaví. Pokud se použije -1, nesmí být mezi parametrem a nastavením mezera (-h-1, ne -h -1).
-sodělovač_sloupců
Určuje znak oddělovače sloupců, což je ve výchozím nastavení prázdné místo. Chcete-li použít znaky, které mají zvláštní význam pro operační systém (například | ; & <>), uzavřete znak do uvozovek (").
-wcolumn_width
Umožňuje uživateli nastavit šířku obrazovky pro výstup. Výchozí hodnota je 80 znaků. Když výstupní řádek dosáhne maximální šířky obrazovky, rozdělí se na několik řádků.
-apacket_size
Umožňuje požadovat paket s jinou velikostí. Platné hodnoty pro packet_size jsou 512 až 65535. Výchozí hodnota osql je výchozí hodnota serveru. Zvýšená velikost paketů může zvýšit výkon při provádění větších skriptů, kdy množství příkazů SQL mezi příkazy GO je podstatné. Testování Microsoftu znamená, že 8192 je obvykle nejrychlejším nastavením pro operace hromadného kopírování. Je možné vyžádat větší velikost paketů, ale pokud požadavek nelze udělit, použije se výchozí nastavení osql na serveru.
-e
Ozvěna vstupu.
-Já
Nastaví možnost připojení QUOTED_IDENTIFIER zapnutou.
-Dnázev_zdroje_dat
Připojí se ke zdroji dat ODBC, který je definovaný pomocí ovladače ODBC pro SQL Server. Připojení osql používá možnosti zadané ve zdroji dat.
Poznámka:
Tato možnost nefunguje se zdroji dat definovanými pro jiné ovladače.
-ccmd_end
Určuje ukončovací znak příkazu. Ve výchozím nastavení se příkazy ukončují a odesílají sql Serveru zadáním go na řádek sám. Při resetování ukončujícího příkazu nepoužívejte Transact-SQL rezervovaná slova nebo znaky, které mají pro operační systém zvláštní význam, ať už před lomítkem, nebo ne.
-q "query"
Spustí dotaz při spuštění osql , ale po dokončení dotazu neodejde osql . (Všimněte si, že příkaz dotazu by neměl obsahovat go). Pokud vydáte dotaz z dávkového souboru, použijte %variablesnebo %variables%prostředí . Například:
SET table=sys.objects
osql -E -q "select name, object_id from %table%"
Kolem dotazu použijte dvojité uvozovky a jednoduché uvozovky kolem všeho, co je v dotazu vložené.
-Q"query"
Spustí dotaz a okamžitě ukončí osql. Kolem dotazu použijte dvojité uvozovky a jednoduché uvozovky kolem všeho, co je v dotazu vložené.
-n
Odebere číslování a symbol výzvy (>) ze vstupních řádků.
-múroveň_chyby
Přizpůsobí zobrazení chybových zpráv. U chyb zadané úrovně závažnosti nebo vyšší se zobrazí číslo zprávy, stav a úroveň chyby. V případě chyb úrovní nižších než zadaná úroveň se nezobrazuje nic. Pomocí parametru -1 určete, že se všechna záhlaví vrací se zprávami, a to i informačními zprávami. Pokud používáte -1, nesmí být mezi parametrem a nastavením mezera (-m-1, nikoli -m -1).
-r { 0| 1}
Přesměruje výstup zprávy na obrazovku (stderr). Pokud nezadáte parametr nebo zadáte hodnotu 0, přesměrují se pouze chybové zprávy s úrovní závažnosti 11 nebo vyšší. Pokud zadáte 1, přesměruje se veškerý výstup zpráv (včetně tisku).
-iinput_file
Identifikuje soubor, který obsahuje dávku příkazů SQL nebo uložených procedur. Operátor porovnání menší než (<) lze použít místo -i.
-ooutput_file
Identifikuje soubor, který přijímá výstup z osql. Operátor porovnání větší než (>) lze použít místo -o.
Pokud input_file není Unicode a parametr -u není zadaný, output_file se uloží ve formátu OEM. Pokud je zadaný input_file Unicode nebo -u , output_file se uloží ve formátu Unicode.
-p
Vytiskne statistiku výkonu.
-b
Určuje, že osql ukončí a vrátí hodnotu DOS ERRORLEVEL, když dojde k chybě. Hodnota vrácená proměnné DOS ERRORLEVEL je 1, pokud chybová zpráva SQL Serveru má závažnost 11 nebo vyšší; v opačném případě je vrácená hodnota 0. Dávkové soubory Microsoft MS-DOS mohou otestovat hodnotu DOS ERRORLEVEL a odpovídajícím způsobem zpracovat chybu.
-u
Určuje, že output_file je uložen ve formátu Unicode bez ohledu na formát input_file.
-R
Určuje, že ovladač ODBC systému SQL Server používá nastavení klienta při převodu dat měny, data a času na data znaků.
-O
Určuje, že se některé funkce osql deaktivují tak, aby odpovídaly chování starších verzí isql. Tyto funkce jsou deaktivované:
Dávkové zpracování EOF
Automatické škálování šířky konzoly
Široké zprávy
Nastaví také výchozí hodnotu DOS ERRORLEVEL na -1.
Poznámka:
Osql už nepodporuje možnosti -n, -O a -D.
Poznámky
Nástroj osql se spouští přímo z operačního systému s možnostmi citlivými na malá a velká písmena. Po spuštění osql přijme příkazy SQL a interaktivně je odešle na SQL Server. Výsledky jsou naformátované a zobrazené na obrazovce (stdout). K ukončení z osql použijte příkaz QUIT nebo EXIT.
Pokud při spuštění osql nezadáte uživatelské jméno, SQL Server vyhledá proměnné prostředí a použije je, například osqluser=(user) nebo osqlserver=(server). Pokud nejsou nastaveny žádné proměnné prostředí, použije se uživatelské jméno pracovní stanice. Pokud nezadáte server, použije se název pracovní stanice.
Pokud se nepoužívají žádné možnosti -U nebo -P , SQL Server se pokusí připojit pomocí režimu ověřování systému Microsoft Windows. Ověřování je založeno na účtu Systému Microsoft Windows uživatele, na kterém běží osql.
Nástroj osql používá rozhraní ODBC API. Nástroj používá výchozí nastavení ovladače ODBC systému SQL Server pro možnosti připojení ISO systému SQL Server. Další informace naleznete v tématu Účinky možností ANSI.
Poznámka:
Nástroj osql nepodporuje uživatelsky definované datové typy CLR. Ke zpracování těchto datových typů je nutné použít nástroj sqlcmd . Další informace naleznete v nástroji sqlcmd.
Příkazy OSQL
Kromě příkazů Transact-SQL v osql jsou k dispozici také tyto příkazy.
| Příkaz | Popis |
|---|---|
| POJĎ | Spustí všechny příkazy zadané po posledním go. |
| Restartovat | Vymaže jakékoliv zadané prohlášení. |
| QUIT (KONEC) nebo EXIT (VÝSTUP) | Ukončí osql. |
| CTRL+C | Ukončí dotaz bez ukončení osql. |
Poznámka:
Ten!! Příkazy ED již nejsou osql podporovány.
Ukončovací rutiny GO (ve výchozím nastavení), RESET EXIT, QUIT a CTRL+C jsou rozpoznány pouze v případě, že se zobrazí na začátku řádku bezprostředně za příkazem osql prompt.
Go signalizuje konec dávky i spuštění všech příkazů Transact-SQL uložených v mezipaměti. Když stisknete klávesu ENTER na konci každého vstupního řádku, osql ukládá příkazy do mezipaměti na daném řádku. Když po zadání GO stisknete klávesu ENTER, všechny aktuálně uložené příkazy v mezipaměti se odešlou jako dávka na SQL Server.
Aktuální nástroj osql funguje stejně, jako kdyby na konci jakéhokoli skriptu byl proveden implicitní go, a proto se spustí všechny příkazy ve skriptu.
Ukončete příkaz zadáním řádku začínajícího ukončovacím příkazem. Můžete postupovat podle ukončovacího příkazu s celým číslem a určit, kolikrát se má příkaz spustit. Pokud chcete například spustit tento příkaz 100krát, zadejte:
SELECT x = 1
GO 100
Výsledky se vytisknou jednou na konci provádění. Osql nepřijímá více než 1 000 znaků na řádek. Velké příkazy by se měly rozprostřít na více řádků.
K odvolání a úpravě příkazů osql lze použít funkce příkazového odvolání ve Windows. Existující vyrovnávací paměť dotazu je možné vymazat zadáním příkazu RESET.
Při spouštění uložených procedur osql vytiskne prázdný řádek mezi jednotlivými sadami výsledků v dávce. Zpráva "0 řádků ovlivněna" se navíc nezobrazí, pokud se nevztahuje na příkaz spuštěný.
Použití osql interaktivně
Pokud chcete použít osql interaktivně, zadejte příkaz osql (a kteroukoli z možností) na příkazovém řádku.
Soubor obsahující dotaz (například Stores.qry) můžete načíst pro spuštění zadáním příkazu podobného tomuto:
osql -E -i stores.qry
V souboru obsahujícím dotaz (například Titles.qry) můžete číst a výsledky směrovat do jiného souboru zadáním příkazu podobného tomuto:
osql -E -i titles.qry -o titles.res
Důležité
Pokud je to možné, použijte možnost -E (důvěryhodné připojení).
Při interaktivním používání osql můžete číst soubor operačního systému do příkazového bufferu pomocí :rfile_name. Tento příkaz odešle skript SQL v file_name přímo na server jako jednu dávku.
Poznámka:
Pokud používáte osql, SQL Server považuje oddělovač dávek GO, pokud se objeví v souboru skriptu SQL, za syntaktickou chybu.
Vkládání komentářů
Komentáře můžete zahrnout do příkazu Transact-SQL odeslaného do SQL Serveru osql. Jsou povoleny dva typy stylů komentářů: -- a /*...*/.
Použití funkce EXIT k vrácení výsledků v osql
Výsledek příkazu SELECT můžete použít jako návratovou hodnotu z osql. Pokud je číslo, poslední sloupec posledního řádku výsledku se převede na 4 bajtové celé číslo (dlouhé). MS-DOS předává nízký bajt do nadřazeného procesu nebo úrovně chyb operačního systému. Windows předá celé čtyřbajtové celé číslo. Syntaxe je:
EXIT ( < query > )
Například:
EXIT(SELECT @@ROWCOUNT)
Parametr EXIT můžete také zahrnout jako součást dávkového souboru. Například:
osql -E -Q "EXIT(SELECT COUNT(*) FROM '%1')"
Nástroj osql předává všechno mezi závorkami () na server přesně tak, jak bylo zadáno. Pokud uložená systémová procedura vybere sadu a vrátí hodnotu, vrátí se pouze výběr. Příkaz EXIT***()** bez závorek provede vše, co předchází v dávce, a potom ukončí bez návratové hodnoty.
Existují čtyři formáty EXIT:
- VÝCHOD
Poznámka:
Nespustí dávku; ihned ukončí činnost a nevrátí žádnou hodnotu.
- EXIT**()**
Poznámka:
Spustí dávkový proces, poté se ukončí a nevrátí žádnou hodnotu.
- EXIT***(dotaz)**
Poznámka:
Spustí dávku, která zahrnuje dotaz, a po vrácení výsledků se ukončí.
- RAISERROR se stavem 127
Poznámka:
Pokud se funkce RAISERROR používá ve skriptu osql a vyvolá se stav 127, osql se ukončí a vrátí ID zprávy zpět klientovi. Například:
RAISERROR(50001, 10, 127)
Tato chyba způsobí ukončení skriptu osql a klientovi se vrátí zpráva s ID 50001.
Vrácené hodnoty -1 k -99 jsou rezervovány SQL Serverem; Osql definuje tyto hodnoty:
-100
Před výběrem návratové hodnoty došlo k chybě.
-101
Při výběru návratové hodnoty nebyly nalezeny žádné řádky.
-102
Při výběru návratové hodnoty došlo k chybě převodu.
Zobrazení datových typů money a smallmoney
Osql zobrazí datové typy money a smallmoney se dvěma desetinnými místy, i když SQL Server ukládá hodnotu interně se čtyřmi desetinnými místy. Podívejte se na příklad:
SELECT CAST(CAST(10.3496 AS money) AS decimal(6, 4))
GO
Tento příkaz vytvoří výsledek 10.3496, který označuje, že hodnota je uložena se všemi desetinnými místy beze změny.
Viz také
Komentář (MDX)
-- (komentář) (MDX)
CAST a CONVERT (Transact-SQL)
RAISERROR (Transact-SQL)