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을 삭제한다.
매우 간단히 끝이다. ㅋㅋ
-
; 설치할 디렉토리
-
InstallDir “C:\_Dir_”
-
SetOverwrite on
-
-
; sql script를 설치할 디렉토리에 복사
-
SetOutPath “$INSTDIR”
-
File “C:\xx.sql”
-
-
; sql script 실행
-
; 2005 \90\, 20000 \80\
-
ReadRegStr $R1 HKLM “SOFTWARE\Microsoft\Microsoft SQL Server\90\Tools\ClientSetup” “SQLPath”
-
GetTempFileName $R0
-
; 2005: osql.exe, 2000: isql.exe
-
ExecWait ‘"$R1\Binn\osql.exe" -U "sa" -P "pwd" -S "servername" -d dbname -i "$INSTDIR\xx.sql" -o "$R0" -b’
-
-
ClearErrors
-
; this dumps the logfile to the detail window
-
FileOpen $R1 $R0 “r”
-
IfErrors FileOpenFailed
-
MoreMessages:
-
ClearErrors
-
FileRead $R1 $R0
-
IfErrors NoMoreMessages
-
StrCpy $R0 $R0 -2 ; remove newline
-
DetailPrint $R0
-
Goto MoreMessages
-
FileOpenFailed:
-
DetailPrint “Can’t read from $R0″
-
NoMoreMessages:
-
FileClose $R1
-
ClearErrors
-
-
; sql script 파일 삭제
-
Delete “$INSTDIR\xx.sql”
via Execute SQL Server scripts
이 방법에는 SQL Server 가 설치되 있어야 하는 단점이 있다. 원격 연결 후 SQL script 를 실행하려면 어떻게 해야 할까?
댓글 2개
트랙백 URL: http://reric.com/wp/2007/05/23/495/trackback
저도 서버 설치 프로그램 같은데서 많이 활용해먹은 방법입니다.. 아직까지 이 보다 더 좋은 방법은 없는 것 같다라니.. ㅎㅎㅎ
미친병아리 #
ㅎㅎ 그렇군요..역시 원격 연결은 안되는것이군요;;ㅋ
reric #