跳到主要內容

在Rails使用SQLServer

因為敝公司只有一台MS SQL Server,所以我沒得選擇,要讀人事資料肯定要連線到SQLServer。


比較不需要編譯的方式就是使用 jRuby,但我卻吃了不少苦頭,重點如下:
  1. 最新版的jRuby要JDK 1.7,也就是Java 7,到Oracle下載就好。
  2. 在Windows版裝完Rails沒有自動產生對應的bat檔,所以要自己寫,像是 rails.bat和rake.exe與 rawr.bat等等,得自己加,例如rails.bat:
    "%~dp0jruby.exe" -S rails %*
  3. 好不容易更新完gem等等,rails server時卻有JCE的錯誤,就是要使用高強度的JCE啦。
  4. 現在內建的ActiveRecord JDBC Adapter就支援MS SQL Server (activerecord-jdbcmssql-adapter),但它也有寫uses the OSS jTDS driver by default which might have issues with the latest SQLServer (but should work using the Microsoft JDBC Driver for SQL Server - we recommend using 4.0)。所以得下載新版的Microsoft JDBC Driver 4.0 for SQL Server,只要下載tar.gz版本,取出其中的sqljdbc4.jar放在jRuby\lib底下,或是jre\lib,要注意另一個sqljdbc.jar不能用...。
  5. 接下來設定database.yml 就好,例如:
    development:
      adapter: jdbcmssql
      driver: com.microsoft.sqlserver.jdbc.SQLServerDriver
      url: 'jdbc:sqlserver://servername\SQLExpress;databaseName=databasename'
      username: db_username
      password: db_password
    若是SQLExpress要記得打開TCP/IP才能連線。

若使用C寫的正常版Ruby,需要的是Rails SQL Server,除了activerecord-sqlserver-adapter還需要tiny_tds,由於需要Native Extension,所以在Windows上別忘了安裝Ruby Development Kit
gem install tiny_tds activerecord-sqlserver-adapter

說實在,在Windows寫Rails真是自找麻煩,尤其是x64的Ruby問題更多。因此在Windows環境我才會改用jRuby,其他類unix平台就直接用RVM安裝Ruby即可。

留言

這個網誌中的熱門文章

自然人憑證讀卡機驅動程式

鳥毅用的是第一代的自然人憑證讀卡機,EZ100PU(後來有同事買EZmini可以讀SIM卡似乎更好),每年報稅時用一次。 本來只是要申請些政府業務,一時之間找不到光碟,沒想到在 驅動程式下載 居然看到Linux和Mac的驅動程式,剩下的就是政府單位的網頁和程式應該改版了吧!!!

DBeaver 介面語言

DBeaver是我個人頗常用的一套跨平台Database管理工具,最近升級後發現Windows版本居然變成簡體中文,而且無法切換為英文。

如何將較高版本SQL Server複製到低版本SQL Server (降級為舊版)並保留權限及資料庫圖表

一般若是要將SQL Server裡的Database轉往其他Server時,最簡單的方式就是備份(Backup)後再還原(Restore),或者是䣃離(detach)後附加(attach)。 但是很不幸地,若是由較低版本(e.g. 2008)到較高版本(e.g. 2012)要怎麼辦呢?