Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Narzędzie osql umożliwia wprowadzanie instrukcji Transact-SQL, procedur systemowych i plików skryptów. To narzędzie używa odBC do komunikowania się z serwerem.
Ważne
Ta funkcja zostanie usunięta w przyszłej wersji programu SQL Server. Unikaj używania tej funkcji w nowych pracach programistycznych i zaplanuj modyfikowanie aplikacji, które obecnie korzystają z tej funkcji. Zamiast tego użyj polecenia sqlcmd . Aby uzyskać więcej informacji, zobacz sqlcmd Utility (Narzędzie sqlcmd).
Składnia
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 (w programowaniu)
-?
Wyświetla podsumowanie składni przełączników osql .
-L
Wyświetla listę lokalnie skonfigurowanych serwerów i nazw serwerów nadających w sieci.
Uwaga / Notatka
Program osql może nie otrzymywać terminowej odpowiedzi ze wszystkich serwerów w sieci systemu Windows. Lista zwracanych serwerów może się różnić w przypadku każdego wywołania tej opcji.
-U identyfikator_logowania
Identyfikator logowania użytkownika. W identyfikatorach logowania jest rozróżniana wielkość liter.
-P hasło
Hasło określone przez użytkownika.
-P Jeśli opcja nie jest używana, osql monituje o hasło.
-P Jeśli opcja jest używana na końcu wiersza polecenia bez żadnego hasła, osql używa domyślnego hasła (NULL).
Ważne
Nie używaj pustego hasła. Użyj silnego hasła. Aby uzyskać więcej informacji, zobacz Silne hasła.
W hasłach jest rozróżniana wielkość liter.
Zmienna OSQLPASSWORD środowiskowa umożliwia ustawienie domyślnego hasła dla bieżącej sesji. W związku z tym nie trzeba kodować hasła w plikach wsadowych.
Jeśli nie określisz hasła z opcją -P, osql najpierw sprawdza zmienną OSQLPASSWORD. Jeśli żadna wartość nie jest ustawiona, osql używa hasła domyślnego, NULL. Poniższy przykład ustawia zmienną OSQLPASSWORD w wierszu polecenia, a następnie uzyskuje dostęp do narzędzia osql :
SET OSQLPASSWORD=abracadabra
osql
Ważne
Aby zamaskować hasło, nie należy określać -P opcji wraz z opcją -U . Zamiast tego, po określeniu osql wraz z opcją -U i innymi przełącznikami (nie określaj -P), naciśnij Enter, a osql poprosi Cię o hasło. Ta metoda gwarantuje, że hasło jest maskowane po wprowadzeniu.
-E
Używa zaufanego połączenia zamiast żądania hasła.
-S server_name[\instance_name]
Określa wystąpienie programu SQL Server do nawiązania połączenia. Określ server_name , aby nawiązać połączenie z domyślnym wystąpieniem programu SQL Server na tym serwerze. Określ <server_name>\<instance_name> aby nawiązać połączenie z nazwanym wystąpieniem programu SQL Server na tym serwerze. Jeśli serwer nie zostanie określony, program osql łączy się z domyślnym wystąpieniem programu SQL Server na komputerze lokalnym. Ta opcja jest wymagana podczas wykonywania bazy danych osql z komputera zdalnego w sieci.
-H wksta_name
Nazwa stacji roboczej. Nazwa stacji roboczej jest przechowywana w sysprocesses.hostname pliku i jest wyświetlana przez sp_who. Jeśli ta opcja nie zostanie określona, przyjmuje się bieżącą nazwę komputera.
-d db_name
Wydaje instrukcję USE db_name po uruchomieniu osql.
-l time_out
Określa liczbę sekund przed upływem limitu czasu logowania osql . Domyślny limit czasu nawiązywania połączenia z bazą danych osql wynosi osiem sekund.
-t time_out
Określa liczbę sekund przed upływem limitu czasu polecenia. Jeśli nie określono wartości limitu czasu, polecenia nie wygasają.
-h nagłówki
Określa liczbę wierszy do wydrukowania między nagłówkami kolumn. Wartość domyślna to drukowanie nagłówków jednorazowo dla każdego zestawu wyników zapytania. Użyj -1, aby określić, że żadne nagłówki nie powinny być drukowane. Jeśli -1 jest używany, nie może istnieć spacja między parametrem a ustawieniem (-h-1a nie -h -1).
-s col_separator
Określa znak separatora kolumny, który jest domyślnie pustym miejscem. Aby użyć znaków, które mają specjalne znaczenie dla systemu operacyjnego (na przykład | ; i <>), należy ująć znak w znaki podwójnego cudzysłowu (").
-w szerokość_kolumny
Umożliwia użytkownikowi ustawienie szerokości ekranu dla danych wyjściowych. Wartość domyślna to 80 znaków. Gdy linia wyjściowa osiągnie maksymalną szerokość ekranu, jest podzielona na wiele wierszy.
-a packet_size
Umożliwia zażądanie innego pakietu o różnym rozmiarze. Prawidłowe wartości dla packet_size to od 512 do 65535. Wartość domyślna osql jest wartością domyślną serwera. Zwiększony rozmiar pakietu może zwiększyć wydajność w przypadku większego wykonywania skryptu, w którym liczba instrukcji Transact-SQL między poleceniami GO jest znacząca. Testowanie firmy Microsoft wskazuje, że 8192 jest zwykle najszybszym ustawieniem operacji kopiowania zbiorczego. Można zażądać większego rozmiaru pakietu, ale gdy żądanie nie może zostać spełnione, osql ustawia domyślny rozmiar pakietu serwera.
-e
Powtarza wejście.
-I
Ustawia opcję połączenia QUOTED_IDENTIFIER na włączoną.
-D data_source_name
Nawiązuje połączenie ze źródłem danych ODBC zdefiniowanym przy użyciu sterownika ODBC dla programu SQL Server. Połączenie osql używa opcji określonych w źródle danych.
Uwaga / Notatka
Ta opcja nie działa ze źródłami danych zdefiniowanymi dla innych sterowników.
-c cmd_end
Określa końcówkę polecenia. Domyślnie polecenia są kończone i wysyłane do SQL Server poprzez wprowadzenie GO na oddzielnej linii. Podczas resetowania terminatora poleceń nie należy używać Transact-SQL zastrzeżonych słów lub znaków, które mają specjalne znaczenie dla systemu operacyjnego, niezależnie od tego, czy poprzedzone są backslash'em, czy nie.
-q "zapytanie"
Wykonuje zapytanie po uruchomieniu bazy danych osql , ale nie zamyka bazy danych osql po zakończeniu zapytania. (Instrukcja zapytania nie powinna zawierać GO). Jeśli wysyłasz zapytanie z pliku wsadowego, użyj polecenia %<variable>lub środowiska %<variable>%. Przykład:
SET table=sys.objects
osql -E -q "select name, object_id from %table%"
Użyj podwójnych cudzysłowów wokół zapytania i pojedynczych cudzysłowów wokół wszystkich elementów osadzonych w zapytaniu.
-Q" zapytanie "
Wykonuje zapytanie i natychmiast kończy działanie bazy danych osql. Użyj podwójnych cudzysłowów wokół zapytania i pojedynczych cudzysłowów wokół wszystkich elementów osadzonych w zapytaniu.
-n
Usuwa numerowanie i symbol monitu (>) z wierszy wejściowych.
-m error_level
Dostosowuje wyświetlanie komunikatów o błędach. Numer komunikatu, stan i poziom błędu są wyświetlane dla błędów określonego poziomu ważności lub wyższego. Nic nie jest wyświetlane dla błędów poziomów niższych niż określony poziom. Użyj -1 do określenia, że wszystkie nagłówki są zwracane z komunikatami, w tym komunikaty informacyjne. W przypadku używania parametru -1nie musi istnieć spacja między parametrem a ustawieniem (-m-1a nie -m -1).
-r { 0| 1}
Przekierowuje dane wyjściowe komunikatu do ekranu (stderr). Jeśli nie określisz parametru lub jeśli określisz 0, przekierowywane są tylko komunikaty o błędach z poziomem ważności 11 lub wyższym. Jeśli określisz wartość 1, wszystkie dane wyjściowe komunikatów (w tym "print") będą przekierowywane.
-i input_file
Identyfikuje plik zawierający partię instrukcji SQL lub procedur składowanych. Operator porównania mniejszy niż (<) może być używany zamiast -i.
-o plik_wyjsciowy
Identyfikuje plik odbierający dane wyjściowe z bazy danych osql. Operator porównania większy niż (>) może być używany zamiast -o.
Jeśli input_file nie jest unicode i -u nie jest określony, output_file jest przechowywany w formacie OEM. Jeśli input_file jest unicode lub -u jest określony, output_file jest przechowywany w formacie Unicode.
-p
Drukuje statystyki wydajności.
-b
Określa, że osql kończy działanie i zwraca wartość systemu DOS ERRORLEVEL w przypadku wystąpienia błędu. Wartość zwrócona do zmiennej DOS ERRORLEVEL wynosi 1, gdy komunikat o błędzie SQL Server ma poziom ważności 11 lub wyższy; w przeciwnym razie zwracana wartość to 0. Pliki wsadowe MS-DOS mogą testować wartość DOS ERRORLEVEL i odpowiednio obsługiwać błąd.
-u
Określa, że output_file jest przechowywany w formacie Unicode, niezależnie od formatu input_file.
-R
Określa, że sterownik ODBC programu SQL Server powinien używać ustawień klienta podczas konwertowania danych waluty, daty i godziny na dane znaków.
-O
Określa, że niektóre funkcje osql mają być dezaktywowane w celu dopasowania do zachowania wcześniejszych wersji isql. Te funkcje są dezaktywowane:
- Przetwarzanie wsadowe EOF
- Automatyczne skalowanie szerokości konsoli
- Szerokie komunikaty
Ustawia również domyślną wartość DOS ERRORLEVEL na -1.
Uwaga / Notatka
Opcje -n, -Oi -D nie są obsługiwane przez program osql.
Uwagi
Narzędzie osql jest uruchamiane bezpośrednio z systemu operacyjnego z opcjami wrażliwymi na wielkość liter wymienione tutaj. Po uruchomieniu programu osql akceptuje instrukcje SQL i wysyła je interaktywnie do programu SQL Server. Wyniki są formatowane i wyświetlane na ekranie (stdout). Użyj polecenia QUIT lub EXIT , aby zamknąć program osql.
Jeśli nie określisz nazwy użytkownika podczas uruchamiania bazy danych osql, program SQL Server sprawdza zmienne środowiskowe i używa tych, na przykład osqluser=(<user>) lub osqlserver=(<server>). Jeśli nie ustawiono żadnych zmiennych środowiskowych, używana jest nazwa użytkownika stacji roboczej. Jeśli nie określisz serwera, zostanie użyta nazwa stacji roboczej.
Jeśli ani opcje -U, ani -P nie są używane, podejmowana jest próba nawiązania połączenia przy użyciu trybu uwierzytelniania systemu Windows. Uwierzytelnianie jest oparte na koncie systemu Windows użytkownika z uruchomionym programem osql.
Narzędzie osql używa interfejsu API ODBC. Narzędzie używa domyślnych ustawień sterownika ODBC programu SQL Server dla opcji połączenia ISO programu SQL Server. Aby uzyskać dalsze informacje, zobacz Zagadnienia dotyczące korzystania z instrukcji SET.
Uwaga / Notatka
Narzędzie osql nie obsługuje typów danych zdefiniowanych przez użytkownika CLR. Aby przetworzyć te typy danych, należy użyć narzędzia sqlcmd . Aby uzyskać więcej informacji, zobacz sqlcmd Utility (Narzędzie sqlcmd).
Polecenia OSQL
Oprócz instrukcji Transact-SQL w programie osql te polecenia są również dostępne.
| Komenda | Opis |
|---|---|
GO |
Wykonuje wszystkie instrukcje wprowadzone po ostatnim GO. |
RESET |
Czyści wszystkie wprowadzone polecenia. |
QUIT lub EXIT() |
Kończy działanie z bazy danych osql. |
| Ctrl+C | Kończy zapytanie bez wychodzenia z osql. |
Uwaga / Notatka
Polecenia !! i ED nie są obsługiwane przez program osql.
Terminatory GO poleceń (domyślnie), RESET, EXIT, QUITi Ctrl+C są rozpoznawane tylko wtedy, gdy pojawiają się na początku wiersza, bezpośrednio po wierszu polecenia osql .
GO sygnalizuje zarówno koniec partii, jak i wykonywanie wszelkich buforowanych instrukcji Transact-SQL. Po naciśnięciu Enter na końcu każdego wiersza wejściowego osql buforuje instrukcje w tym wierszu. Po naciśnięciu Enter po wpisaniu GOwszystkie aktualnie buforowane instrukcje są wysyłane jako partia do programu SQL Server.
Bieżące narzędzie osql działa tak, jakby na końcu każdego skryptu było niewidoczne GO, co powoduje wykonanie wszystkich instrukcji w skrypcie.
Zakończ polecenie, wpisując wiersz rozpoczynający się od terminatora polecenia. Możesz postępować zgodnie z terminatorem polecenia z liczbą całkowitą, aby określić, ile razy polecenie ma być uruchamiane. Aby na przykład wykonać to polecenie 100 razy, wpisz:
SELECT x = 1
GO 100
Wyniki są drukowane raz na końcu wykonywania. Narzędzie osql nie akceptuje więcej niż 1000 znaków w wierszu. Duże instrukcje powinny być rozłożone na wiele wierszy.
Możesz użyć funkcji odwołań poleceń w systemie Windows, aby odwołać i zmodyfikować instrukcje osql . Istniejący bufor zapytania można wyczyścić, wpisując .RESET
Gdy osql uruchamia procedury składowane, wyświetla pusty wiersz między każdym zestawem wyników w partii. Ponadto komunikat "0 wierszy dotkniętych" nie jest wyświetlany, gdy nie ma zastosowania do wykonanej instrukcji.
Interakcyjne używanie bazy danych osql
Aby użyć osql interaktywnie, wpisz polecenie osql (i dowolną z opcji) w wierszu polecenia.
Możesz odczytać w pliku zawierającym zapytanie (na przykład Stores.qry) do wykonania przez osql , wpisując polecenie podobne do następującego:
osql -E -i stores.qry
Możesz odczytać w pliku zawierającym zapytanie (na przykład Titles.qry) i kierować wyniki do innego pliku, wpisując polecenie podobne do następującego:
osql -E -i titles.qry -o titles.res
Ważne
Jeśli to możliwe, użyj opcji -E (zaufane połączenie).
Gdy używasz osql interaktywnie, możesz odczytać plik systemu operacyjnego do buforu poleceń za pomocą polecenia :r<file_name>. Spowoduje to wysłanie skryptu SQL w file_name bezpośrednio do serwera jako pojedynczej partii.
Uwaga / Notatka
Osql traktuje separator GO wsadowy jako błąd składniowy, jeśli występuje w pliku skryptu SQL.
Wstaw komentarze
Komentarze można uwzględnić w instrukcji Transact-SQL przesłanej do programu SQL Server przez narzędzie osql. Dozwolone są dwa typy stylów komentowania: -- i /*...*/.
Użyj polecenia exit, aby zwrócić wyniki w osql
Możesz użyć wyniku instrukcji SELECT jako wartości zwracanej z bazy danych osql. Jeśli jest to liczba, ostatnia kolumna ostatniego wiersza wyników jest konwertowana na liczbę całkowitą 4-bajtową (długą). MS-DOS przekazuje niski bajt do poziomu błędu procesu nadrzędnego lub systemu operacyjnego. System Windows przekazuje całą liczbę całkowitą 4-bajtową. Składnia jest następująca:
EXIT ( <query> )
Przykład:
EXIT(SELECT @@ROWCOUNT)
Można również dołączyć parametr EXIT w ramach pliku wsadowego. Przykład:
osql -E -Q "EXIT(SELECT COUNT(*) FROM '%1')"
Narzędzie osql przekazuje wszystko, co znajduje się między nawiasami (), do serwera dokładnie w takiej formie, w jakiej zostało wprowadzone. Jeśli procedura systemu składowanego wybiera zestaw i zwraca wartość, zwracany jest tylko wybór. Instrukcja EXIT() bez żadnych elementów między nawiasami wykonuje wszystko, co poprzedza ją w partii, a następnie kończy działanie bez zwracanej wartości.
Istnieją cztery EXIT formaty:
| Format | Szczegóły |
|---|---|
EXIT |
Nie wykonuje zadania wsadowego; natychmiast kończy działanie i nie zwraca żadnej wartości. |
EXIT() |
Wykonuje zadanie, a następnie zakończa i nie zwraca żadnej wartości. |
EXIT(<query>) |
Wykonuje partię, w tym zapytanie, a następnie kończy działanie po powrocie wyników zapytania. |
RAISERROR ze stanem 127 |
Jeśli RAISERROR jest używany w skrypsie osql i jest zgłaszany stan 127, osql kończy działanie i zwraca identyfikator komunikatu z powrotem do klienta. |
W poniższym przykładzie pokazano, jak wpływać na zachowanie bazy danych osql za pomocą polecenia RAISERROR:
RAISERROR (50001, 10, 127);
Ten błąd powoduje zakończenie skryptu osql i zwraca do klienta komunikat o identyfikatorze 50001.
Zwracane wartości od -1 do -99 są zarezerwowane.
Osql definiuje następujące wartości:
-
-100: Wystąpił błąd przed wybraniem wartości zwracanej. -
-101: nie znaleziono wierszy podczas wybierania wartości zwracanej. -
-102: Wystąpił błąd konwersji podczas wybierania wartości zwracanej.
Wyświetlanie danych typu money i smallmoney
Osql wyświetla typy danych money i smallmoney z dwoma miejscami dziesiętnymi, chociaż program SQL Server przechowuje wartość wewnętrznie z czterema miejscami dziesiętnymi. Rozważmy przykład:
SELECT CAST (CAST (10.3496 AS MONEY) AS DECIMAL (6, 4));
GO
Ta instrukcja generuje wynik 10.3496, co wskazuje, że wartość jest przechowywana z wszystkimi miejscami dziesiętnymi w pełni zachowanymi.