OSQL 이란 도스나 콘솔상에서 SQL 문을 실행할수 있게 하는 프로그램이다. 주로 쿼리문 실행할라면 쿼리분석기, EM 을 이용하는데 어떤 경우에는 도스로 쿼리문을 실행해야 할 경우가 생긴다. 이때 이 OSQL 이란 프로그램을 사용한다.
참고로 나의 테스트 환경은 MS-SQL 7.0이다. SQL 2000도 물론 가능한데 6.5 버젼은 어떤지 모르겠다.그리고 OSQL은 MS-SQL 설치하면 자동으로 설치되는 프로그램이다. 환경변수로 잡혀있으므로 그냥 도스상 어느 디렉토리에서도 OSQL 실행 가능하다.(Copy가 명령어 어디서든지 가능한것 처럼)
자 그럼 사용해 보자. 사용법은 간단하다. 일단 도스창을 연 후 아래의 구문을 실행해 보자. 그럼 다음과 같은 결과가 보일것이다.
osql -Usa -P -Q "select * from Northwind..Region"
구문을 살펴보자 아래를 보면 색으로 구분을 줘서 더 살펴보기 쉬울꺼다.그래도 굳이 설명하자면 -U는 사용자, -P는 암호, -Q는 쿼리문이다. 따라서 아래 구문을 해석하면 'sa란 사용자로(암호는 없음) select * from Northwind..Region 쿼리문을 실행해라' 라고 볼 수 있다.
주의 : -U, -P 등 플래그들은 대소문자를 구분한다.!!
osql -Usa -P -Q "select * from Northwind..Region"
방금전 구문은 로컬 DB에 엑서스 했을 경우이다. 다른 네트워크 상의 DB 내용을 보려면 다음과 같이 하면 된다.
osql -Smungchung -Usa -P1234 -Q "select * from Northwind..Region"
위의 구문을 보면 -Smungchung 이 추가됨을 알 수 있다. -S는 서버 플래그를 나타내고 mungchung는 서버명을 나타낸다. 해석해 보자면 'mungchung란 서버에 아이디 sa 암호 1234로 로그인 한 후 select * from Northwind..Region 쿼리문을 실행시켜라' 이다.
지금까지는 아주 단순한 쿼리문을 실행했는데 쿼리문이 길어진다고 하면 어떻게 할까? 도스창에서 그 길고긴 쿼리들 다 적기는 무리일 것이다. -_-; (오타라도 하나 나면 -_-;; 수정하기 쉽지 않다.)여기 osql에 i라는 플래그가 있다. 입력 파일 플래그를 뜻하는데 이 플래그를 사용하면 파일의 내용을 실행한다.
메모장으로 다음 내용을 입력한 후 test.sql 이라는 파일명으로 저장한다. (확장자는 사실 아무거나 해도 상관없다.test.txt로 해도 아무 상관 없다. 하지만 sql 확장자가 쿼리분석기에서 사용되므로 확장자를 sql로 하였다.)
USE NorthWind SELECT a.ProductID, b.SupplierID, a.ProductName, b.CompanyName FROM Products a JOIN Suppliers b ON a.SupplierID = b.SupplierID WHERE a.ProductID < 4
도스나, 콘솔창을 연 후 다음 구문을 실행한다.
osql -Usa -P -i d:\test.sql
osql은 단순히 도스상에서 sql명령어 이용하라고 만들어진것은 아니다. 요새 도스 이용하는 사람도 없는데 왜 이 osql이 MS-SQL 버젼이 높아져도 없어지지 않을까? 솔직히 나도 100%로 왜 그런지는 모르지만 어디서 유용하게 쓰이는지는 안다.얄팍한 경험으로 비춰보면 osql은 다른 시스템간에 인터페이스 할때 이용되거나 백업할때 이용된다. 이 osql을 이용할경우 도스로 배치스크립트 작성해서 매일 매일 해야하는 작업이나 주단위 작업등을 간편하고 빠르게 해결 할수 있다. 나중에 기회가 된다면 이 osql을 좀더 멋지게 이용하는 방법을 적어보겠다.
다음은 osql 에서 사용되는 구문이다. 몇가지 빠진 플래그들이 있지만 다음에 나온는 플래그들만 해도 충분할것이다. ( [] 로 묶여진 플래그들은 생략 가능한 플래그다.) 좀더 자세하게 osql 에 대해서 알고자 한다면 도움말을 참고하기 바란다.
osql -U<로그인ID> [-d] [-Q"쿼리문"] [-q"쿼리문"] [-c<명령종료자"] [-h<헤더들>] [-w<열너비>] [-s<열구분기호>] [-t<제한시간>] [-m<오류수준>] [-H<워크스테이션이름>] [-P<암호>] [-S<서버이름>] [-i<입력파일>] [-o<출력파일>] [-a<패킷크기>] [-l<제한시간>]
*) 참고도서 : Professional SQL Server 2000 Programming (Wrox.) 437p
'데이터베이스 > SQL Server' 카테고리의 다른 글
SET NOCOUNT (0) | 2012.06.26 |
---|---|
MS-SQL Server 2008 부터 지원되는 데이터 압축 기능 (0) | 2012.04.26 |
[MSSQL2008] 테이블을 다시 만들어야 하는 변경 내용 저장 사용 안 함 (0) | 2012.04.20 |
DB 테이블 ROW갯수 한번에 보기 (0) | 2010.08.16 |
테이블의 컬럼의 설명정보 보기 (0) | 2010.08.16 |