2009-03-04 7 views
2

은 어쩌면 내가 여기에 그것을 던져 그 이유는, 단지 바보 같은 생각이다 : 나는 응용 프로그램을 만드는 오전MSDTC를 피하는 방법?

를베이스와 현재의 데이터를 하나의 데이터베이스를 사용하여, (고객, 제품, 재고, 공개 청구서, ...) 아카이브 데이터 (예전 인보이스, 재고 이동, ...)에 대한 연간 데이터베이스 1 개.

작은 문제가 하나뿐입니다. MSDTC. 대부분의 트랜잭션은 하나의 데이터베이스 만 다루지 만, 일부는 현재 데이터베이스 및 한 아카이브 연도를 처리합니다. 모든 데이터베이스가 동일한 서버에서 사직하기 때문에 두 데이터베이스에서 간단한 트랜잭션이 될 수 있습니다.

그러나 엔티티에 대한 Linq는 각 데이터베이스에 대해 별도의 연결을 만들도록 강요합니다. 여기서는 MSDTC가 시작되어 a) 설치가 필요하며 b) 전체 작업이 느려집니다.

성가신!

두 개의 ADO.Net 엔터티 프레임 워크 모델에서 동일한 연결을 사용하는 방법이 있습니까? 둘 다 현재 데이터베이스가 있습니까?

는 이미 specify the database in the EF Schema, but EF does not like this and blocks it.

매우 성가신로했습니다. 어쩌면 모든 테이블을 하나의 데이터베이스로 옮겨야하지만, 나중에 백업 및 속도 향상을 위해 데이터를 분리하려고 할 때 고통이 따른다.

+0

몇 년에 걸쳐 쿼리를 수행해야하는 경우 1 년에 1 데이터베이스만으로는 좋은 방법이 아닙니다. 하나의 데이터베이스에서 별도의 테이블을 사용하는 방법, 또는 단순히 파티션을 사용하는 방법은 어떻습니까? http://msdn.microsoft.com/en-us/library/ms345146.aspx – bobince

+1

아직 사용하지 않는 경우 프로세서 구성에 따라 $ 30- $ 50K를 추가 할 수있는 SQL Server Enterprise Edition이 필요하므로 분할하는 데 많은 비용이 소요될 수 있습니다. 그것. –

답변

2

연결시 ChangeDatabase를 호출 해보십시오. 둘 이상의 연결을 사용하면 MSDTC가 항상 관련됩니다. 심지어 하나의 데이터베이스. 그래서 항상 하나의 연결을 유지하고이 방법을 통해 데이터베이스를 변경할 것을 제안 할 수 있습니다.

희망이 도움이됩니다.

관련 문제