2012-03-14 4 views
1

익숙한 게시물을 확인한 결과 이전에 다뤄지지 않았기를 바랍니다.TSQL DB 이름 및 스키마 추상화

현재 위치가 아닌 다른 데이터베이스에서 저장 프로 시저를 호출 할 때 DB 이름과 스키마를 추상화하는 방법을 찾고 있습니다. 다음과 같은 방법으로 뭔가 :..

은 [데이터베이스 이름] 실행 [스키마] [storedProcedureName]

는 생각은 DB 스키마는 런타임 요구에 따라 제공 될 수 있도록하는 것입니다. 이 작업을 수행하는 확실한 방법은 동적 SQL을 사용하는 것이지만 시스템에서는 큰 문제가없는 것입니다. 누구든지 어쨌든이 경우 DB 이름과 스키마를 추상화한다는 것을 알고 있습니까? 내가 생각할 수있는 유일한 옵션은 변수에 이름 등을 저장하는 방법과 실행 호출에 통합하는 방법 또는 DB의 인스턴스를 저장할 수있는 방법 중 하나일지도 모른다.

모든 의견이 유용 할 것입니다. 감사합니다. 당신이 (? 매개 변수 또는 뭔가처럼) 기술로

답변

0

나는 그것을 추상화에 대해 잘 모르겠지만, 하나 개의 아이디어는 다음과 같이 할 수 있습니다 :

IF @db = 'dababase1' 
BEGIN 
    IF @schema = 'schema1' 
    BEGIN 
     EXECUTE database1.schema1.procedure 
    END 
    IF @schema = 'schema2' 
    BEGIN 
     EXECUTE database1.schema2.procedure 
    END 
    ... 
END 
IF @db = 'database2' 
BEGIN 
... 

당신은 디자인을 알아야 것 무엇이 가능한 데이터베이스와 스키마가 모두 있었는지 시간. ...

0

이유를 이해하기가 약간 어렵습니다.이 접근법은입니다. 저장 프로 시저를 호출하는 것은 무엇입니까? 그것은 다른 연결 문자열을 사용하여 데이터베이스를 변경하는 더 좋은 장소 일 수 있습니까?

당신이 TSQL 문 내부 DB를 전환하려면 다음 USE 명령을보고 난 당신이 아마 같은 구조를 찾고 생각 EXECUTE AS