我有兩個問題來訪問SQL Server數據庫時設置架構和處理屬性名稱的情況下:如何使用JRuby,ActiveRecord的,和JDBC訪問MS的SQLserver
- 如何設置模式
我需要訪問的表格在'general'模式下,而不是'dbo'。除非我用set_table_name,我會像「無效的對象」錯誤
class Role < ActiveRecord::Base
set_table_name "general.Role"
end
是否有另一種方式來設置模式在JDBC URL的屬性。我檢查了MS jdbc驅動程序和jtds驅動程序,但無法找到這樣的屬性。
- 如何處理屬性名
當訪問DB2,所有的屬性名稱是小寫。但對於mssql,屬性名稱與數據庫中定義的大小相同,例如「RoleID」。我想知道是否只有db2驅動程序強制屬性名稱爲小寫。
是的。你是對的。大部分時間我都使用oracle/db2/mysql。但我仍然是對的,在我的例子IS SCHEMA中是「一般」。 SQL Server 2005及更高版本具有「用戶架構分離」。當我在「Microsoft SQL Server Management Studio」中打開表格的屬性時,它被稱爲「Schema」。如果我運行以下sqls: select * from sys.schemas; select * from sys.database_principals; 它確實顯示general是一個模式,其中pricipal_id = 1,即「dbo」。 我知道我們可以使用set_table_name,但它意味着你的代碼在SQL服務器上是固定的,你不能移動到另一個數據庫沒有改變。 – Bewang 2011-04-15 05:30:59