2009-12-10 2 views
0

우리는 개별 고객을 위해 즉석에서 생성되는 자체 3 개의 테이블로 새로운 스키마를 작성하려고합니다.특정 스키마 컨텍스트에서 SQL 쿼리를 실행하십시오.

프로 시저의 해당 테이블에 대해 특정 쿼리를 실행하려면 다음과 같이해야합니다. 이 시나리오에서는

declare @sName nvarchar(200); 
select @sName =Schema_Name from schema where Schema_Id = passed_id_from_code 
ALTER USER UserName WITH DEFAULT_SCHEMA = @sName 

-- Run the statements here -- 
... 



-- After finishing executing statements 
ALTER USER UserName WITH DEFAULT_SCHEMA = db; 

는 다양한 스키마에서 동시 고객은 자신의 스키마 테이블을 업데이트 할 수 있거나 충돌합니다.

귀하의 제안을 환영합니다. Anil

답변

0

대부분의 SQL 데이터베이스는 각 테이블을 해당 데이터베이스에서 고유 한 엔터티로 만듭니다. 즉, 각 테이블은 다른 테이블과 관련없이 개별적으로 수정 및 변경 될 수 있습니다. CUSTOMERA.TABLE_ONE은 CUSTOMERB.TABLE_ONE과 다른 데이터베이스 개체입니다. 그들은 같은 이름을 공유하지만 서로 다른 레이아웃을 가진 동일한 객체는 아닙니다 (서로 다른 스키마를 가짐).

RDBMS에 대한 제한이없는 한이 작업을 수행 할 수 있습니다. 이제는 각 사용자별로 다른 스키마가있는 것이 좋지 않을 수 있습니다. 여러 고객을 처리하기 위해 동일한 앱을 개발하는 경우 모든 스키마 및 모든 고객 지원 담당자와 함께 작동하는지 확인해야합니다. 잠재적으로 다른 버전의 스키마.

멀티 테넌트 아키텍처를 사용하려는 경우 테이블에 대한 확장 기능을 사용하는 것이 현명 할 수 있습니다. 그래서 하나의 DB.TABLE_ONE과 CUSTOMER_DATA 컬럼을 가지고 있습니다. 여기에 데이터를 알기 쉽고 유연한 형식으로 저장합니다 (JSON 또는 XML). 일부 RDBMS에는 고유 기능 (DB2가 그 중 하나임)이 있습니다.

희망이 도움이됩니다.

관련 문제