저는 8 개의 다른 서버 (모든 Microsoft SQL 2005 서버)를 정기적으로 쿼리해야하는 새로운 회사에서 일하기 시작했습니다. 현재 매일 아침마다 각 서버마다 개별적으로 연결되어 [application]. [tmpLogs] 테이블의 최신 항목을 읽습니다. 각 서버마다 다른 사용자 이름과 암호를 사용해야합니다. 나는 각 서버의 tmpLogs 테이블에 마지막 행을 입력하기 위해 LinqPad에서 실행할 수있는 Linq 또는 SQL 쿼리를 작성하려고합니다. 누구든지 모든 서버에 연결하고 하나의 쿼리에서 테이블을 쿼리하는 방법을 알고 있습니까?다른 서버의 Linq 또는 SQL 조인 테이블
0
A
답변
1
tmpLogs
테이블의 각 서버에 동일한 열이 있습니까? 그렇다면 LINQPad를 사용하여 서로 다른 연결 문자열을 사용하여 새로운 형식의 DataContext를 만들 수 있다는 이점을 얻을 수 있습니다.
그냥 데이터베이스의 한에 연결하고 다음을 수행
// Dump the log for the current database:
TmpLogs.OrderByDescending (l => l.Date).First().Dump();
// Dump the logs for other databases:
string[] otherConnectionStrings =
{
"server=...database=....etc",
"server=...database=....etc",
...
}
foreach (string cxString in otherConnectionStrings)
{
var dc = new TypedDataContext (cxString);
dc.TmpLogs.OrderByDescending (l => l.Date).First().Dump();
}
1
하나의 SQL Server를 '마스터'서버로 선택할 수 있습니다. 그런 다음 다른 서버를 링크 된 서버로 설정하십시오 (http://msdn.microsoft.com/en-us/library/ms188279.aspx 참조). '마스터'서버를 통해 연결된 서버에 연결하기 위해 LINQ to SQL 개체를 구성 할 수 있습니다.
LINQ에서이 데이터를 가져 와서 주기적으로 데이터를 '웨어 하우스'테이블로 밀어 넣을 수도 있습니다. 저장 프로 시저를 통해 LINKED 서버를 통해 LINQ를 통해보다 쉽게 통신 할 수 있습니다. 내가 아는 한, LINQ는 DB 카탈로그의 개념을 포함하지 않고 테이블 만 포함합니다. 카탈로그는 DataContext 객체에서 추상화되어 있습니다. Linqpad를 사용하는 경우 카탈로그가 존재하지 않습니다.
당신이 정말로 한 쿼리에서 모든 것을 할 하시겠습니까? 하나의 서버가 다운되면 아무 데이터도 얻지 못합니다. – RedFilter