Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
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
Ze względu na charakter emisji w sieciach osql może nie odbierać terminowej odpowiedzi ze wszystkich serwerów. W związku z tym lista zwracanych serwerów może się różnić w przypadku każdego wywołania tej opcji.
-Ulogin_id
Jest identyfikatorem logowania użytkownika. W identyfikatorach logowania jest rozróżniana wielkość liter.
-Phasło
To hasło określone przez użytkownika. Jeśli opcja -P nie jest używana, osql monituje o hasło. Jeśli opcja -P 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 artykuł Silne hasła.
W hasłach jest rozróżniana wielkość liter.
Zmienna środowiskowa OSQLPASSWORD umożliwia ustawienie domyślnego hasła dla bieżącej sesji. W związku z tym nie trzeba zakodować 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 o wartości NULL. Poniższy przykład ustawia zmienną OSQLPASSWORD w wierszu polecenia, a następnie uzyskuje dostęp do narzędzia osql :
C:\>SET OSQLPASSWORD=abracadabra
C:\>osql
Ważne
Aby zamaskować hasło, nie należy określać opcji -P wraz z opcją -U . Zamiast tego po określeniu bazy danych osql wraz z opcją -U i innymi przełącznikami (nie określaj -P), naciśnij ENTER i osql wyświetli monit o podanie hasła. Ta metoda gwarantuje, że hasło zostanie zamaskowane po wprowadzeniu.
-E
Używa zaufanego połączenia zamiast żądania hasła.
-Sserver_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 wspomnianym 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.
-Hwksta_name
To nazwa stacji roboczej. Nazwa stacji roboczej jest przechowywana w pliku sysprocesses.hostname i jest wyświetlana przez sp_who. Jeśli ta opcja nie zostanie określona, przyjmuje się bieżącą nazwę komputera.
-ddb_name
Wydaje instrukcję USE db_name po uruchomieniu osql.
-ltime_out
Określa liczbę sekund przed upływem limitu czasu logowania osql . Domyślny limit czasu logowania do bazy danych osql wynosi osiem sekund.
-ttime_out
Określa liczbę sekund przed upływem limitu czasu polecenia. Jeśli nie określono wartości time_out , polecenia nie upłynął limit czasu.
-hnagłó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 zostaną wydrukowane. Jeśli -1 jest używana, nie musi istnieć spacja między parametrem a ustawieniem (-h-1, a nie -h -1).
-scol_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 (").
-wcolumn_width
Umożliwia użytkownikowi ustawienie szerokości ekranu dla danych wyjściowych. Wartość domyślna to 80 znaków. Gdy linia wyjściowa osiągnęła maksymalną szerokość ekranu, jest podzielona na wiele wierszy.
-awielkość_pakietu
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 ilość instrukcji SQL między poleceniami JĘZYKA 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 ustawienie domyślne serwera osql jest domyślne, jeśli nie można udzielić żądania.
-e
Powtarza wejście.
-Ja
Ustawia opcję połączenia QUOTED_IDENTIFIER na włączoną.
-Ddata_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.
-ccmd_end
Określa końcówkę polecenia. Domyślnie polecenia są przerywane i wysyłane do programu SQL Server przez wprowadzenie go w wierszu. Podczas resetowania terminatora polecenia 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 ukośnikiem odwrotnym, czy nie.
-q "zapytanie"
Wykonuje zapytanie po uruchomieniu bazy danych osql , ale nie zamyka bazy danych osql po zakończeniu zapytania. (Należy pamiętać, że instrukcja zapytania nie powinna zawierać polecenia GO). Jeśli wysyłasz zapytanie z pliku wsadowego, użyj %variableslub środowiska %variables%. Przykład:
SET table=sys.objects
osql -E -q "select name, object_id from %table%"
Use double quotation marks around the query and single quotation marks around anything embedded in the query.
-Q"query"
Wykonuje zapytanie i natychmiast kończy działanie bazy danych osql. Użyj cudzysłowów wokół zapytania i apostrofów wokół czegokolwiek osadzonego w zapytaniu.
-n
Usuwa numerowanie i symbol monitu (>) z wierszy wejściowych.
-mpoziom_błędu
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 , aby określić, że wszystkie nagłówki są zwracane z komunikatami, nawet komunikatami informacyjnymi. W przypadku użycia -1 nie może istnieć spacja między parametrem a ustawieniem (-m-1, a nie -m -1).
-r { 0| 1}
Przekierowuje komunikat na ekran (stderr). Jeśli nie określisz parametru lub jeśli określisz wartość 0, przekierowywane są tylko komunikaty o błędach o poziomie ważności 11 lub wyższym. W przypadku określenia wartości 1 wszystkie dane wyjściowe komunikatu (w tym "print") są przekierowywane.
-iinput_file
Identyfikuje plik zawierający partię instrukcji SQL lub procedur składowanych. Operator porównania 'mniejszy niż' (<) może być używany zamiast -i.
-ooutput_file
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 w formacie Unicode lub jeśli określono -u, output_file jest przechowywany w formacie Unicode.
-p
Drukuje statystyki wydajności.
-b
Określa, że osql kończy działanie i zwraca wartość DOS ERRORLEVEL, gdy wystąpi błąd. Wartość zwrócona do zmiennej DOS ERRORLEVEL wynosi 1, gdy komunikat o błędzie serwera SQL ma stopień istotności 11 lub wyższy; w przeciwnym razie zwracana wartość wynosi 0. Pliki wsadowe Microsoft MS-DOS mogą testować wartość DOS ERRORLEVEL i obsługiwać błędy w odpowiedni sposób.
-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 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, -O i -D nie są już obsługiwane przez osql.
Uwagi
Narzędzie osql jest uruchamiane bezpośrednio z systemu operacyjnego z opcjami wrażliwymi na wielkość liter wymienione tutaj. Po uruchomieniu programu osqlakceptuje 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 ich, 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 nie są używane żadne opcje -U lub -P , program SQL Server próbuje nawiązać połączenie przy użyciu trybu uwierzytelniania systemu Microsoft Windows. Uwierzytelnianie jest oparte na koncie systemu Microsoft 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ć więcej informacji, zobacz Efekty opcji ANSI.
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 |
---|---|
IDŹ | Wykonuje wszystkie instrukcje wydane po ostatnim GO. |
RESET | Czyści wszystkie wprowadzone polecenia. |
ZAMKNIJ lub WYJDŹ( ) | Kończy działanie z bazy danych osql. |
CTRL+C | Kończy zapytanie bez wychodzenia z osql. |
Uwaga / Notatka
Ten!! i polecenia ED nie są już obsługiwane przez osql.
Terminatory poleceń GO (domyślnie), RESET EXIT, QUIT i CTRL+C, są rozpoznawane tylko wtedy, gdy pojawiają się na początku wiersza, bezpośrednio po wierszu osql .
Go sygnalizuje zarówno koniec partii, jak i wykonywanie wszystkich 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 języka GO wszystkie aktualnie buforowane instrukcje są wysyłane jako partia do programu SQL Server.
Bieżące narzędzie osql działa tak, jakby na końcu dowolnego skryptu zostało wykonane dorozumiane go, dlatego wszystkie instrukcje wykonywane 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. Osql nie akceptuje więcej niż 1000 znaków w wierszu. Duże instrukcje powinny być rozłożone na wiele wierszy.
Za pomocą odwołań poleceń systemu Windows można odwołać i zmodyfikować instrukcje osql . Istniejący bufor zapytania można wyczyścić, wpisując polecenie RESET.
Podczas uruchamiania procedur składowanych osql drukuje pusty wiersz między każdym zestawem wyników w partii. Ponadto komunikat "0 wierszy, których dotyczy problem", nie jest wyświetlany, gdy nie ma zastosowania do wykonanej instrukcji.
Korzystanie z programu osql Interactively
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).
W przypadku korzystania z programu osql interaktywnie można odczytać plik systemu operacyjnego do buforu poleceń za pomocą polecenia :rfile_name. Spowoduje to wysłanie skryptu SQL w file_name bezpośrednio do serwera jako pojedynczej partii.
Uwaga / Notatka
W przypadku korzystania z programu osql program SQL Server traktuje separator wsadowy GO, jeśli występuje w pliku skryptu SQL, jako błąd składniowy.
Wstawianie komentarzy
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żywanie polecenia EXIT do zwracania wyników w narzędziu osql
Możesz użyć wyniku instrukcji SELECT jako wartości zwracanej z bazy danych osql. Jeśli jest to liczbowa, 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 jako część pliku wsadowego. Przykład:
osql -E -Q "EXIT(SELECT COUNT(*) FROM '%1')"
Narzędzie osql przekazuje wszystkie elementy między nawiasami () do serwera dokładnie tak, jak wprowadzono. Jeśli procedura systemu składowanego wybiera zestaw i zwraca wartość, zwracany jest tylko wybór. Instrukcja EXIT**()** z niczym między nawiasami wykonuje wszystko poprzedzające je w partii, a następnie kończy bez zwracanej wartości.
Istnieją cztery formaty EXIT:
- WYJŚCIE
Uwaga / Notatka
Nie wykonuje partii zadań; kończy działanie natychmiast i nie zwraca żadnej wartości.
- WYJŚCIE**()**
Uwaga / Notatka
Wykonuje zadanie, a następnie zakończa i nie zwraca żadnej wartości.
- EXIT**(query)**
Uwaga / Notatka
Wykonuje partię, w tym zapytanie, a następnie kończy działanie po powrocie wyników zapytania.
- RAISERROR z kodem stanu 127
Uwaga / Notatka
Jeśli RAISERROR jest używany w skrypcie osql i zostanie zgłoszony stan 127, osql zakończy i zwróci identyfikator komunikatu do klienta. Przykład:
RAISERROR(50001, 10, 127)
Ten błąd spowoduje zakończenie skryptu osql , a do klienta zostanie zwrócony komunikat o identyfikatorze 50001.
Zwracane wartości -1 do -99 są zarezerwowane przez program SQL Server; Osql definiuje następujące wartości:
-100
Wystąpił błąd przed wybraniem wartości zwracanej.
-101
Podczas wybierania wartości zwracanej nie znaleziono wierszy.
-102
Wystąpił błąd konwersji podczas wybierania wartości zwracanej.
Wyświetlanie pieniędzy i małych typów danych
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.
Zobacz też
Komentarz (MDX)
-- (Komentarz) (MDX)
RZUTOWANIE i konwertowanie (Transact-SQL)
RAISERROR (Transact-SQL)