2010-04-30 3 views
0

다른 데이터베이스에서 동시에 내 레코드에 액세스하는 방법에 대한 좋은 구현 (C#/ASP.NET)이 있는지 알고 싶습니다. 나는이 데이터베이스를 검색하고 특정 키워드가 일치하면 레코드를 표시한다고 가정하는이 간단한 응용 프로그램을 가지고 있습니다.동시에 여러 데이터베이스에 액세스 할 좋은 구현을 찾고

나는 (현재 MySQL을 사용하고있는) 5 개의 데이터베이스를 모두 갖고 있으며 향후 SQL Server로 변경 될 것입니다. 단일 데이터베이스에서 검색하는 방법을 완전히 알고 있지만 여러 데이터베이스에서이를 수행하는 방법을 여전히 배우고 있습니다.

팁, 의견 또는 제안 사항이 있으십니까?

+1

옵션 1 : MySQL의 연결된 서버. 나는 그것을 추천하지 않을 것이다. 하지만 확실히 Microsoft 데이터 응용 프로그램 블록을 시도하고 다중 연결에 MSDTC를 사용하고 내 C# 코드에서 결과를 병합합니다. –

답변

1

MySQL에서는 말할 수 없지만 SQL 서버에서는 연결할 사용자가 올바른 권한을 가지고있는 한 여러 데이터베이스 중에서 선택할 수 있습니다. 테이블이 모든 데이터베이스에서 유사한 경우 결과를 함께 UNIONING하여 하나의 쿼리에서이 작업을 수행 할 수 있습니다. 당신의 서버 또는 클라이언트 측에 쿼리를 수행 여부에 따라

SELECT * FROM DB1.dbo.Records WHERE Name Like '%searchterm%' 
UNION 
SELECT * FROM DB2.dbo.Records WHERE Name Like '%searchterm%' 
UNION 
SELECT * FROM DB3.dbo.Records WHERE Name Like '%searchterm%' 
+0

데이터베이스는 연결된 서버를 사용하지 않는 한 동일한 서버에 있어야합니다. – Thomas

1

XXXConnection (MysqlConnection 또는 무엇이든)의 여러 인스턴스가 있고이를 반복합니다.

1

다른 연결 문자열을 사용하여 다른 데이터베이스 각각에 대해 단일 데이터베이스를 검색하는 것과 동일한 방법을 사용합니다. 이것은 .NET 4.0 또는 3.5 버전의 병렬 확장을위한 좋은 후보가 될 것입니다. 결과 집합이 다소 동일 할 경우 DataTable.Merge 메서드를 사용하여 조사 할 것입니다.

1

: 당신이 (DB1이라고 DB2DB3) 3 데이터베이스를했고, 경우에 따라서, 각 테이블은 당신이 할 수 Records라고했다 응용 프로그램은, 당신은 서버 측에서 다음과 같은 길을 갈 수 있습니다 SQL 서버에서

[Server].[Database].[Schema].[Table] 

는, 테이블 이름은 서버 이름, 데이터베이스 이름 및 스키마 이름을 접두어로 할 수있다. 오히려 스키마 이름을 사용하지 싶지만, 당신은 동일한 서버에있는 데이터베이스를 지정해야하는 경우, 다음을 작성할 수

[Database]..[Table] 

더 바람직에서 검색을 수행 할 경우 클라이언트 측에서는 구성 가능한 명명 된 연결 문자열과이를 제공하는 추상화를 위해 Enterprise Library을 사용하고자 할 수 있습니다.

성능을 높이려면 BackgroundWorker을 사용하면됩니다. 다시 말하면 클라이언트 쪽입니다.

관련 문제