在使用JRuby,ActiveRecord和JDBC访问MS SQLserver时,如何设置架构和处理属性名称的大小写

问题描述

| 我在访问sql Server数据库时遇到两个问题: 如何设置架构 我需要访问的表位于模式\'general \'下,而不是\'dbo \'下。除非我使用set_table_name,否则我会收到类似“无效对象”的错误信息
class Role < ActiveRecord::Base
  set_table_name \"general.Role\"
end
还有另一种方法可以在jdbc url的属性中设置架构。我检查了MS jdbc驱动程序和jtds驱动程序,但是找不到这样的属性。 如何处理属性名称 访问db2时,所有属性名称均为小写。但是对于mssql属性名称保持与数据库中定义的大小写相同,例如\“ RoleID \”。我想知道是否只有db2驱动程序将属性名称强制为小写。     

解决方法

在T-SQL中,完全限定的对象名称为
<database>.<owner>.<objectname>
。请注意,您要问的是所有者而不是模式(我想您来自Oracle?)。 鉴于它是对象所有者,而不是“您连接到的架构”(在Oracle范例中),所以我认为“连接到所有者”没有任何意义,这就是您要问的。 您描述的使用
set_table_name
方法在这种情况下是完全有效的。即使您的
Role
表由dbo拥有,您仍然必须使用set_table_name,因为默认情况下ActiveRecord会查找\“ role \”(并且区分大小写)。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...