2012-06-25 1 views
3

푸시 버튼 야간 배포를위한 db 스크립트 배포를 자동화하고 있습니다. 내 첫 번째 접근 방식은 Windows 터미널에서 sqlcmd를 사용하여 결과를 txt 파일에 저장하고 구문 분석하여 스크립트가 성공했는지 확인하는 것이 었습니다. 파일을 파싱하고 리턴 코드를 찾는 것은 문제가있어서 TinyTds를 사용했습니다.TinyTds Ruby Gem을 사용하여 .sql 스크립트 구문 분석 및 실행

 client = TinyTds::Client.new(:username => DB_USER, :password => DB_PASSWORD, :dataserver => DB_SERVERNAME, :timeout => 1200) 
     result = client.execute(IO.read(filename)) 
     puts result.return_code 

run_sql.rb:24:in `execute': Attempt to initiate a new Adaptive Server operation with results pending (TinyTds::Error) 

합니다 (.SQL 스크립트의 내용에 따라) 전무 또는 다음과 같은 오류 중 하나를 얻을 수

result = client.execute(IO.read(filename)) 

result = client.execute(IO.read(filename)).do 
변경 : 여기 내 코드입니다

수율

run_sql.rb:26:in `do': Incorrect syntax near 'go'. (TinyTds::Error) 
+0

나는 이것도 역시 얻고있다 ... 복잡한 뷰를 만들기 위해 db-migrate를 시도하고있다 ... 레일스에서 ​​DB 변경을 유지하기 위해 ... 그러나 이것을 고치는 방법을 생각할 수 없다. –

답변

1

당신의 대답은 TinyTDS에 먹이를주고 자하는 SQL에 달려 있다고 생각합니다. 아마도 배치가 올바르게 배치되지 않았을 수 있습니다. result = client.execute(data).each도 할 수 있습니다.