2012年11月8日 星期四

TeamCity Migrate To SQL Server

首先淮備好資料庫,例如一個名稱為TeamCity的DB

建一個登入帳號,這裡帳號用bar,密碼用foo當範例

給予db_owner的權限

再來下載Database Driver,官網的文件中有介紹兩種Driver
但我試了半天都不行用,後來爬文找到更改連線字串的寫法就可以了
所以在這裡以Microsoft JDBC Driver來介紹
先去Microsoft Download Center 下載Driver

下載後解壓縮,把sqljdbc4.jar複製到這個神秘的地方

再來編輯database.mssql.properties.dist這一個範本檔

官網的文件是把帳密打在後面,但試了半天就是不行
爬文的結果把帳密改寫在連線字串中就成功了,JAVA真是一種神秘的語言

TeamCity升級到7.1.2後,JDBC的設定不能用了,只好再試了一下另一種連線方式jtds-1.2.2
我下載最新的版本,會有java.lang.UnsupportedClassVersionError的錯誤,換成1.2.2就好了...
一樣把jtds-1.2.2.jar複製到lib/jdbc的資料夾
連線字串就可以照著範本的格式打了

connectionUrl=jdbc:jtds:sqlserver://<hostname>:1433/<dbname>
connectionProperties.user=<username>
connectionProperties.password=<password>

參考資料


到此淮備工作就完成了,要開始轉移資料之前,要先把服務停下來

然後打開一個cmd,輸入以下指令
set path=%path%;c:\TeamCity\jre\bin
這行是和設定JAVA_HOME這個神秘的全域變數同樣的效果
用來把Java Run Time的路徑包含進系統的path
因為我沒安裝JAVA環境,所以要指向到TeamCity自帶的jre路徑
但如果在執行過程中會發生無法開啟jvm.cfg這個錯誤訊息的話
把System32下面的Java.exe、Javaw.exe、Javaws.exe都砍掉就行了

maintainDB.cmd migrate -T c:\ProgramData\JetBrains\TeamCity\config\database.mssql.properties.dist
 maintainDB.cmd是TeamCity自帶的資料庫維護工具,可以用來備份、還原、和搬移資料
這邊用的是migrate,把剛設定資料庫的設定檔用-T參考傳進去就行了


順利的話,就會開始搬移資料進SQL Server,並且也會把剛剛的資料庫連線範本
複制成正式用的檔案database.properties

資料庫的物件也都建好了,重啟服務就完成囉

參考資料