2009-07-23 2 views
1

서버에 새 db를 추가하여 새로운 그룹의 데이터가 설정된이 저조한 설계된 db에서 작업해야합니다. 그래서 다중 DB에서 데이터를 가져와야합니다. 하나의 연결을 통해 그룹 데이터를 모두 얻을 수있는 방법이 있습니까? 나는 C#을 사용하고있다.하나의 연결 요청을 통해 다중 DB에서 데이터를 가져올 수 있습니다.

+0

DB를 지정할 수 있습니까? 새로운 그룹은 얼마나 자주 추가됩니까? –

+0

어떤 데이터베이스 서버를 사용하고 있습니까? SQL Server와 Oracle (및 대부분의 데이터베이스 엔진)의 데이터베이스에서 데이터베이스 서버간에 연결을 설정할 수 있지만 설정은 각각 다릅니다. –

+0

SQL Server를 사용하면 새 그룹은 저장 프로 시저를 호출하여 추가되고 새 레코드를 테이블에 삽입하여 새 db 이름을 추적합니다. –

답변

1

은 : 그것은 database.schema.object 표기법을 사용하여 SQL Server에 (예를 들어, 때로는 수

(제외?는 디자인에 영향을 미칠 수 있습니다 이것은 ...을 위해 설계되었습니다 어떤 데이터베이스 스키마 이름과 같은 부분에 소리) 심지어는 server.database.schema.object), 같은 접근 방식이 모든 유스 케이스에 맞지는 않을 것이므로 권장하지 않으며 많은 모범 사례 지침을 위반합니다. DbConnectionStringBuilder을 사용하거나 SqlConnectionStringBuilder과 같은 특정 변형을 사용하여 데이터베이스 당 연결 문자열을 생성하는 것이 좋습니다.

개방형 (풀링 된) 연결이 너무 많을 경우 걱정하지 않으면 동적 연결에서 풀링을 사용하지 않도록 설정할 수 있습니다 (연결 관리는 직접 처리해야하지만 개인적으로 풀링을 사용 가능하게 설정할 때까지 사용할 수 있습니다. 문제가 있음을 증명하십시오).

+0

각 DB에 대한 연결 문자열을 생성하는 경우, DB 수만큼 연결을 만들어야한다는 의미입니까? 나에게는 비효율적이라고 들리지만 수백 개의 그룹이있을 수 있습니다. –

+0

와우; 수백 dbs? 그렇습니다 ... 거기에는 비효율적 인 부분이 있습니다. 그러나 나는 그것이 디자인에 있다고 생각합니다. ** ** database.schema.name 접근을 시도 할 수는 있지만 자신의 위험은 ... –

+0

이것을 정리해 주셔서 감사합니다. –

0

모든 데이터베이스가 동일한 서버에있는 경우 기본 데이터베이스가 무엇이든 연결의 전체 이름을 사용하여 쿼리 할 수 ​​있습니다. 연결하려는 데이터베이스를 미리 알지 못해도이 설계로 모든 코드를 동적으로 작성해야 할 수도 있습니다.

select * from database1.dbo.mytable m 
join database2.dbo.mytable m2 on m.id = m2.id 
관련 문제