관리 메뉴

ㄴrㅎnㅂrㄹrㄱi

NSIS 에서 SQL Server Script 실행 방법 본문

프로그래밍/NSIS

NSIS 에서 SQL Server Script 실행 방법

님투 2007. 11. 3. 21:15
반응형

NSIS (Nullsoft Scriptable Install System) 에서 SQL Server Script 를 실행하는 방법이다. 사실 방법이라기보단 1원짜리 팁 정도일까?

SQL Script 를 실행할 수 있는 MSSQL OLEDB plug-in 이라는 플러그인이 있긴 하다. 하지만, 수십 수백 개의 프로시저 또는 사용자 정의 함수들은 실행할 수는 없다.컴파일 자체가 안 되는 버그까지 생기는 걸 봐서는 아직 쓸만하다 할 순 없고, 간단한 QUERY 를 날려서 결과를 확인해야 한다거나 하면 쓸만하다 하겠다.

어쨌든 방법은 이렇다.

1) SQL script(xx.sql) 파일을 일반 설치 파일처럼 복사한다.
2) osql.exe을 이용해서 스크립트를 실행한다.
3) 복사된 xx.sql을 삭제한다.

매우 간단히 끝이다. ㅋㅋ

  1. ; 설치할 디렉토리
  2.   InstallDir “C:\_Dir_”
  3.   SetOverwrite on
  4.  
  5.   ; sql script를 설치할 디렉토리에 복사
  6.   SetOutPath “$INSTDIR”
  7.   File “C:\xx.sql”
  8.   ; sql script 실행
  9.   ; 2005 \90\, 20000 \80\
  10.   ReadRegStr $R1 HKLM “SOFTWARE\Microsoft\Microsoft SQL Server\90\Tools\ClientSetup” “SQLPath”
  11.   GetTempFileName $R0
  12.   ; 2005: osql.exe, 2000: isql.exe
  13.   ExecWait ‘"$R1\Binn\osql.exe" -U "sa" -P "pwd" -S  "servername" -d dbname -i "$INSTDIR\xx.sql" -o "$R0" -b’
  14.  
  15.   ClearErrors
  16.   ; this dumps the logfile to the detail window
  17.   FileOpen $R1 $R0 “r”
  18.   IfErrors FileOpenFailed
  19.   MoreMessages:
  20.     ClearErrors
  21.     FileRead $R1 $R0
  22.     IfErrors NoMoreMessages
  23.         StrCpy $R0 $R0 -2 ; remove newline
  24.         DetailPrint $R0
  25.     Goto MoreMessages
  26.   FileOpenFailed:
  27.   DetailPrint “Can’t read from $R0″
  28.   NoMoreMessages:
  29.   FileClose $R1
  30.   ClearErrors
  31.   ; sql script 파일 삭제
  32.   Delete “$INSTDIR\xx.sql”

via Execute SQL Server scripts

이 방법에는 SQL Server 가 설치되 있어야 하는 단점이 있다. 원격 연결 후 SQL script 를 실행하려면 어떻게 해야 할까?

반응형
Comments