osql 유틸리티

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System(PDW)

osql 유틸리티를 사용하여 Transact-SQL 문, 시스템 프로시저 및 스크립트 파일을 입력할 수 있습니다. 이 유틸리티는 ODBC를 사용하여 서버와 통신합니다.

Important

이 기능은 이후 버전의 SQL Server에서 제거됩니다. 새 개발 작업에서 이 기능을 사용하지 말고 현재 이 기능을 사용하는 애플리케이션을 수정할 계획입니다. 대신 sqlcmd를 사용합니다. 자세한 내용은 sqlcmd 유틸리티를 참조 하세요.

구문

  
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]  
]  

인수

-?
osql 스위치의 구문 요약을 표시합니다.

-L
로컬로 구성된 서버와 네트워크에서 브로드캐스트하는 서버의 이름을 나열합니다.

참고 항목

네트워크에서 브로드캐스트의 특성으로 인해 osql 은 모든 서버에서 적시에 응답을 받지 못할 수 있습니다. 따라서 반환되는 서버 목록은 이 옵션의 호출마다 다를 수 있습니다.

-Ulogin_id
사용자 로그인 ID입니다. 로그인 ID는 대/소문자를 구분합니다.

-Ppassword
사용자가 지정한 암호입니다. -P 옵션을 사용하지 않으면 osql에서 암호를 묻는 메시지를 표시합니다. 암호를 입력하지 않고 명령 프롬프트의 마지막에 -P 옵션을 사용하면 osql 은 기본 암호인 NULL을 사용합니다.

Important

빈 암호를 사용하지 마세요. 강력한 암호를 사용하세요. 자세한 내용은 Strong Passwords을 참조하세요.

암호는 대소문자를 구분합니다.

OSQLPASSWORD 환경 변수를 사용하면 현재 세션에 대한 기본 암호를 설정할 수 있습니다. 따라서 암호를 일괄 처리 파일로 하드 코딩할 필요가 없습니다.

-P 옵션을 사용하여 암호를 지정하지 않으면 OSQLPASSWORD 변수에 대한 osql 첫 번째 검사. 값을 설정하지 않으면 osql 은 기본 암호인 NULL을 사용합니다. 다음 예제에서는 명령 프롬프트에서 OSQLPASSWORD 변수를 설정한 다음 osql 유틸리티에 액세스합니다.

C:\>SET OSQLPASSWORD=abracadabra  
C:\>osql   

Important

암호를 마스킹하려면 -U 옵션과 함께 -P 옵션을 지정하지 마세요. 대신 -U 옵션 및 기타 스위치(-P를 지정하지 않음)와 함께 osql을 지정한 후 Enter 키를 누르면 osql에서 암호를 묻는 메시지가 표시됩니다. 이 방법을 사용하면 암호 입력 시 암호가 마스킹됩니다.

-전자
암호를 요청하는 대신 신뢰할 수 있는 연결을 사용합니다.

-Sserver_name[ \instance_name]
연결할 SQL Server의 인스턴스를 지정합니다. 해당 서버에서 SQL Server의 기본 인스턴스에 연결할 server_name 지정합니다. 해당 서버에 있는 명명된 SQL Server 인스턴스에 연결하려면 server_name\instance_name을 지정합니다. 서버가 지정되지 않은 경우 osql 은 로컬 컴퓨터에서 SQL Server의 기본 인스턴스에 연결합니다. 이 옵션은 네트워크의 원격 컴퓨터에서 osql을 실행할 때 필요합니다.

-Hwksta_name
워크스테이션 이름입니다. 워크스테이션 이름은 sysprocesses.hostname 에 저장되고 sp_who에 의해 표시됩니다. 이 옵션을 지정하지 않으면 현재 컴퓨터 이름이 가정됩니다.

-ddb_name
osql 을 시작할 때 USE db_name문을 실행합니다.

-ltime_out
osql 로그인 시간이 초과되기 전의 시간(초)을 지정합니다. osql 로그인에 대한 기본 제한 시간은 8초입니다.

-ttime_out
명령 시간이 초과되기 전의 시간(초)을 지정합니다. time_out 값을 지정하지 않으면 명령 시간이 초과되지 않습니다.

-h헤더
열 머리글 사이에 인쇄할 행 수를 지정합니다. 기본적으로 각 쿼리 결과 집합마다 머리글을 한 번 출력합니다. 머리글을 출력하지 않으려면 -1을 사용합니다. -1을 사용하는 경우 매개 변수와 설정 사이에 공백이 없어야 합니다(-h-1, -h -1 아님).

-scol_separator
기본적으로 빈 공간인 열 구분 기호 문자를 지정합니다. 운영 체제에 특별한 의미가 있는 문자(예: | ; & <>)를 사용하려면 문자를 큰따옴표(")로 묶습니다.

-wcolumn_width
사용자가 출력에 대한 화면 너비를 설정할 수 있습니다. 기본값은 80자입니다. 출력 줄이 최대 화면 너비에 도달하면 여러 줄로 구분됩니다.

-apacket_size
다른 크기의 패킷을 요청할 수 있습니다. packet_size 유효한 값은 512~65535입니다. 기본값 osql 은 서버 기본값입니다. 패킷 크기가 증가하면 GO 명령 간의 SQL 문 양이 상당할 경우 더 큰 스크립트 실행에 대한 성능이 향상될 수 있습니다. Microsoft 테스트는 8192가 일반적으로 대량 복사 작업에 가장 빠른 설정임을 나타냅니다. 더 큰 패킷 크기를 요청할 수 있지만 요청한 크기를 허용하지 않으면 osql 이 서버 기본값을 사용합니다.

-e
입력을 에코합니다.

-나
QUOTED_IDENTIFIER 연결 옵션을 설정합니다.

-Ddata_source_name
SQL Server용 ODBC 드라이버를 사용하여 정의된 ODBC 데이터 원본에 커넥트. osql 연결은 데이터 원본에 지정된 옵션을 사용합니다.

참고 항목

이 옵션은 다른 드라이버에 대해 정의된 데이터 원본에서는 작동하지 않습니다.

-ccmd_end
명령 종결자를 지정합니다. 기본적으로 명령은 한 줄에 GO를 입력하여 종료되고 SQL Server로 전송됩니다. 명령 종료 문자를 다시 설정할 때는 앞에 백슬래시를 지정하는지 여부에 상관없이 Transact-SQL 예약어 또는 운영 체제와 연관된 특별한 의미를 가진 문자를 사용하지 마세요.

-q "query"
osql이 시작될 때 쿼리를 실행하지만 쿼리가 완료되면 osql을 종료하지 않습니다. 쿼리 문에는 GO가 포함되어서는 안 됩니다. 일괄 처리 파일에서 쿼리를 실행한 경우 %variables 또는 환경 %variables%를 사용합니다. 예시:

SET table=sys.objects  
osql -E -q "select name, object_id from %table%"  

쿼리는 큰따옴표로 묶고 쿼리 안에 포함되는 모든 것은 작은따옴표로 묶습니다.

-Q"query"
쿼리를 실행하고 osql을 즉시 종료합니다. 쿼리는 큰따옴표로 묶고 쿼리 안에 포함되는 모든 것은 작은따옴표로 묶습니다.

-n
입력 줄에서 번호 및 프롬프트 기호(>)를 제거합니다.

-merror_level
오류 메시지 표시를 사용자 지정합니다. 지정된 심각도 수준 이상의 오류에 대한 메시지 번호, 상태 및 오류 수준이 표시됩니다. 지정한 수준보다 낮은 심각도의 오류에 대해서는 표시되지 않습니다. -1 을 사용하여 모든 머리글을 메시지(정보 메시지도 포함)와 함께 반환합니다. -1을 사용하는 경우에는-m -1이 아니라 -m-1과 같이 매개 변수와 설정 사이에 공백이 없어야 합니다.

-r { 0| 1}
메시지 출력을 화면(stderr)으로 리디렉션합니다. 매개 변수를 지정하지 않거나 0을 지정하는 경우 심각도 수준이 11 이상인 오류 메시지만 리디렉션됩니다. 1을 지정하면 모든 메시지 출력("인쇄"포함)이 리디렉션됩니다.

-iinput_file
SQL 문 또는 저장 프로시저의 일괄 처리가 포함된 파일을 식별합니다. <-i 대신 보다 작음() 비교 연산자를 사용할 수 있습니다.

-ooutput_file
osql에서 출력을 받는 파일을 식별합니다. 보다 큼(>) 비교 연산자는 -o 대신 사용할 수 있습니다.

input_file 유니코드가 아니고 -u가 지정되지 않은 경우 output_file OEM 형식으로 저장됩니다. input_file 유니코드이거나 -u가 지정된 경우 output_file 유니코드 형식으로 저장됩니다.

-p
성능 통계를 인쇄합니다.

-b
오류가 발생할 때 osql종료되고 DOS ERRORLEVEL 값을 반환되도록 지정합니다. SQL Server 오류 메시지의 심각도가 11 이상인 경우 DOS ERRORLEVEL 변수에 반환되는 값은 1입니다. 그렇지 않으면 반환되는 값은 0입니다. Microsoft MS-DOS 일괄 처리 파일은 DOS ERRORLEVEL의 값을 테스트하고 오류를 적절하게 처리할 수 있습니다.

-u
input_file 형식에 관계없이 output_file 유니코드 형식으로 저장되도록 지정합니다.

-R
통화, 날짜 및 시간 데이터를 문자 데이터로 변환할 때 SQL Server ODBC 드라이버에서 클라이언트 설정을 사용하도록 지정합니다.

-O
이전 버전의 osql 동작과 일치하도록 특정 isql기능을 비활성화합니다. 이러한 기능은 비활성화됩니다.

  • EOF 일괄 처리

  • 자동 콘솔 너비 크기 조정

  • 와이드 메시지

또한 기본 DOS ERRORLEVEL 값을 -1로 설정합니다.

참고 항목

-n, -O-D 옵션은 더 이상 osql에서 지원되지 않습니다.

설명

osql 유틸리티는 여기에 나열된 대/소문자 구분 옵션을 사용하여 운영 체제에서 직접 시작됩니다. osql이 시작되면 SQL 문을 수락하고 대화형으로 SQL Server로 보냅니다. 결과는 서식이 지정되고 화면에 표시됩니다(stdout). QUIT 또는 EXIT를 사용하여 osql에서 종료합니다.

osql을 시작할 때 사용자 이름을 지정하지 않으면 SQL Server는 환경 변수에 대해 검사 osqluser=(user) 또는 osqlserver=(server)와 같은 변수를 사용합니다. 환경 변수를 설정하지 않으면 워크스테이션 사용자 이름이 사용됩니다. 서버를 지정하지 않으면 워크스테이션 이름이 사용됩니다.

-U 또는 -P 옵션을 모두 사용하지 않는 경우 SQL Server는 Microsoft Windows 인증 모드를 사용하여 연결을 시도합니다. 인증은 osql을 실행하는 사용자의 Microsoft Windows 계정을 기반으로 합니다.

osql 유틸리티는 ODBC API를 사용합니다. 이 유틸리티는 SQL Server ISO 연결 옵션에 SQL Server ODBC 드라이버 기본 설정을 사용합니다. 자세한 내용은 ANSI 옵션의 효과를 참조하세요.

참고 항목

osql 유틸리티는 CLR 사용자 정의 데이터 형식을 지원하지 않습니다. 이 데이터 형식을 처리하려면 sqlcmd 유틸리티를 사용해야 합니다. 자세한 내용은 sqlcmd 유틸리티를 참조 하세요.

OSQL 명령

osql 내에서 Transact-SQL 문 외에 다음 명령을 사용할 수 있습니다.

명령 설명
이동 마지막 GO 이후에 입력한 모든 문을 실행합니다.
다시 설정 입력한 문을 지웁니다.
QUIT 또는 EXIT( ) osql에서 종료합니다.
Ctrl+C osql에서 종료하지 않고 쿼리를 종료합니다.

참고 항목

Tthe!! 및 ED 명령은 더 이상 osql에서 지원되지 않습니다.

명령 종료 문자인 GO(기본 문자), RESET EXIT, QUIT 및 Ctrl+C는 osql 프롬프트 바로 뒤의 줄 시작 부분에 나올 때만 인식합니다.

GO는 일괄 처리의 끝과 캐시된 Transact-SQL 문의 실행을 모두 알 수 있습니다. 각 입력 줄 의 끝에서 Enter 키를 누르면 osql 은 해당 줄에 문을 캐시합니다. GO를 입력한 후 Enter 키를 누르면 현재 캐시된 모든 문이 SQL Server에 일괄 처리로 전송됩니다.

현재 osql 유틸리티는 실행된 스크립트의 끝에 암시적 GO가 있는 것처럼 작동하므로 스크립트의 모든 문이 실행됩니다.

명령 종결자로 시작하는 줄을 입력하여 명령을 종료합니다. 명령 종결자를 정수로 따라 명령을 실행할 횟수를 지정할 수 있습니다. 예를 들어 이 명령을 100번 실행하려면 다음을 입력합니다.

SELECT x = 1  
GO 100  

결과는 실행이 끝날 때 한 번 인쇄됩니다. osql 은 줄당 1,000자 이상을 허용하지 않습니다. 큰 문은 여러 줄에 분산되어야 합니다.

Windows의 명령 회수 기능을 사용하여 osql 문을 회수하고 수정할 수 있습니다. RESET을 입력하여 기존 쿼리 버퍼를 지울 수 있습니다.

저장 프로시저를 실행할 때 osql 은 각 결과 집합 사이에 빈 줄을 일괄 처리로 인쇄합니다. 또한 "영향을 받는 행 0개" 메시지는 실행된 문에 적용되지 않을 때 표시되지 않습니다.

대화형으로 osql 사용

osql을 대화형으로 사용하려면 명령 프롬프트에 osql 명령(및 옵션)을 입력합니다.

다음과 유사한 명령을 입력하여 osql실행할 쿼리(예: Stores.qry)가 포함된 파일에서 읽을 수 있습니다.

osql -E -i stores.qry  

쿼리(예: Titles.qry)가 포함된 파일에서 읽고 다음과 유사한 명령을 입력하여 결과를 다른 파일로 보낼 수 있습니다.

osql -E -i titles.qry -o titles.res  

Important

가능하면 -E옵션(신뢰할 수 있는 연결)을 사용합니다.

osql 을 대화형으로 사용하면 :rfile_name을 지정하여 운영 체제 파일을 명령 버퍼로 읽을 수 있습니다. 이렇게 하면 file_name SQL 스크립트를 단일 일괄 처리로 서버에 직접 보냅니다.

참고 항목

osql을 사용하는 경우 SQL Server는 SQL 스크립트 파일에 표시되는 경우 일괄 처리 구분 기호 GO를 구문 오류로 처리합니다.

메모 삽입

osql을 통해 SQL Server에 제출된 Transact-SQL 문에 주석을 포함할 수 있습니다. 다음과 같은 두 가지 유형의 주석 처리 스타일이 허용 --/*...*/됩니다.

EXIT를 사용하여 osql에서 결과 반환

SELECT 문의 결과를 osql의 반환 값으로 사용할 수 있습니다. 숫자인 경우 마지막 결과 행의 마지막 열은 4 바이트 정수(long)로 변환됩니다. MS-DOS는 하위 바이트를 부모 프로세스 또는 운영 체제 오류 수준으로 전달합니다. Windows가 전체 4 바이트 정수로 전달합니다. 구문은 다음과 같습니다.

EXIT ( < query > )  

예시:

EXIT(SELECT @@ROWCOUNT)  

EXIT 매개 변수를 일괄 처리 파일의 일부로 포함할 수도 있습니다. 예시:

osql -E -Q "EXIT(SELECT COUNT(*) FROM '%1')"  

osql 유틸리티는 입력한 대로 괄호()의 모든 것을 서버에 전달합니다. 저장 시스템 프로시저가 집합을 선택하고 값을 반환하는 경우 선택 항목만 반환됩니다. EXIT**()** 문의 괄호 사이에 아무 것도 없으면 이 문 앞에 나오는 모든 문을 실행한 다음 값을 반환하지 않고 종료합니다.

4개의 EXIT 형식이 있습니다.

  • EXIT

참고 항목

일괄 처리를 실행하지 않고 즉시 종료하며 값을 반환하지 않습니다.

  • EXIT**()**

참고 항목

일괄 처리를 실행한 다음 종료하고 값을 반환하지 않습니다.

  • EXIT**(query)**

참고 항목

쿼리를 포함하여 일괄 처리를 실행한 다음 쿼리 결과를 반환한 후 종료합니다.

  • 상태가 127인 RAISERROR

참고 항목

RAISERROR가 osql 스크립트 내에서 사용되고 상태가 127인 경우 osql종료되고 메시지 ID를 클라이언트에 다시 반환합니다. 예시:

RAISERROR(50001, 10, 127)  

이 오류로 인해 osql 스크립트가 종료되고 메시지 ID 50001이 클라이언트에 반환됩니다.

반환 값 -1 ~ -99는 SQL Server에서 예약합니다. osql 은 다음 값을 정의합니다.

  • 100-

    반환 값을 선택하기 전에 오류가 발생했습니다.

  • -101

    반환 값을 선택할 때 행을 찾을 수 없습니다.

  • -102

    반환 값을 선택할 때 변환 오류가 발생했습니다.

money 및 smallmoney 데이터 형식 표시

osql10진수 두 자리가 있는 moneysmallmoney 데이터 형식을 표시하지만 SQL Server는 4개의 소수 자릿수로 내부적으로 값을 저장합니다. 예를 들어, 다음과 같습니다.

SELECT CAST(CAST(10.3496 AS money) AS decimal(6, 4))  
GO  

이 문은 값이 모든 소수 자릿수 그대로 저장됨을 나타내는 결과를 10.3496생성합니다.

참고 항목

주석(MDX)
-- (주석)(MDX)
CAST 및 CONVERT(Transact-SQL)
RAISERROR(Transact-SQL)