2013-07-23 2 views
2

나는 응용 프로그램에 대한 스키마는 최근에 업데이트 된이jboss 데이터 소스 URL에서 SQL Server의 현재 스키마를 어떻게 지정합니까?

select user_id from 
table_user where lower(email_address)=? and password=? 

같은 일부 SQL 쿼리를 가지고하지만 난 정말 응용 프로그램의 모든 SQL 쿼리를 업데이트하지 않습니다. JBOSS 연결 종료에서 현재 스키마를 지정하는 방법이 있습니까?

올드 연결 : 시도 jdbc:sqlserver://myserver:1433;DatabaseName=db : (나는 이러한 DBO에서 찾고있는 가정 때문에) 내가 쿼리를 실행할 때 jdbc:sqlserver://myserver:1433;DatabaseName=db;currentSchema=abc

내가 currentSchema를 사용하려하지만 도움이되지 않았다, 나는 누락 된 개체 예외를 얻을. 모든 쿼리가 스키마에서 실행된다는 것을 알고 있기 때문에 쿼리를 업데이트하는 방법이 있습니까? abc?

+0

두 개의 데이터 소스를 생성하고 시나리오에 따라 필요한 데이터 소스를 사용해야합니다. SQL 쿼리 실행시 Connection 정보를 변경하는 것은 표준/권장 관행이 아닙니다. – Phani

+0

@Phani이 애플리케이션은 항상 그 스키마를 사용할 것이기 때문에 필자는 단지 1 개의 데이터 소스 만 필요합니다. 그러나 드라이버 속성에 따라 연결 문자열을 통해 스키마를 지정하는 방법이없는 것처럼 보입니다. – Rondel

+0

그런 경우 DBA는 사용자를 구성하여 스키마에 연결하고 해당 자격 증명을 사용하면 올바른 스키마를 참조합니다. 스키마 이름을 하드 코딩하는 것이 적합하지 않으므로 표준/권장 방법입니다 SQL에서. – Phani

답변

2

These are the available connection properties (Microsoft JDBC 4.0 드라이버 용) 이 목록에 currentSchema이 표시되지 않고 연결 문자열에 특정 스키마를 지정할 수있는 드라이버가 없습니다.

스키마로 SQL을 업데이트하지 않으므로 각 개체에 대해 기본 (dbo) 스키마로 synonyms을 생성 할 수 있습니다. 예 :

USE tempdb; 
GO 
-- create test schema 
CREATE SCHEMA test AUTHORIZATION dbo; 
GO 

-- create table in test schema 
CREATE TABLE test.tablename (columnname int null); 

-- select from tablename in default schema will fail 
SELECT * FROM tablename; 
GO 

-- create synonym mapping test.tablename to dbo.tablename 
CREATE SYNONYM [dbo].[tablename] FOR [server].[tempdb].[test].[tablename] 

-- -- select from tablename synonym will succeed 
SELECT * FROM tablename; 

-- cleanup 
DROP SYNONYM [dbo].[tablename]; 
DROP TABLE [test].[tablename]; 
DROP SCHEMA [test]; 

다음 코드를 사용하여 사용자 개체에 대해 CREATE SYNONYM 문을 생성 할 수 있습니다. 그것을 사용한다면, 실행하기 전에 변수 값과 검토 문을 업데이트해야합니다. 명시 적 또는 묵시적 보증 안 함 :

+0

링크 및 제안에 감사드립니다. 이것은 흥미로운 접근 방법이지만 일단 다른 스키마가 추가되면 문제가 발생할 가능성이 높습니다. 충돌하는 객체 이름이 있습니다. 스키마를 지정할 수있는 드라이버가 없으므로 SQL 업데이트로 해결할 것입니다. 그래도 고마워. – Rondel

+0

@Rondel SQL을 업데이트하면 내 첫 번째 선택이 될 것입니다. 만약 당신이 항상'스키마'를 쓰는 습관을 갖게된다면,'객체'는 너무 성가 시게되지 않습니다. – Bryan

관련 문제