2008-09-09 1 views
6
SqlException: A transport-level error has occurred when receiving results from the server. (provider: Shared Memory Provider, error: 1 - I/O Error detected in read/write operation) 다음은 전체 오류입니다. SqlException: A transport-level error has occurred when receiving results from the server. (provider: Shared Memory Provider, error: 1 - I/O Error detected in read/write operation)

이 SqlException 원인 : 서버에서 결과를 수신 할 때 전송 수준 오류가 발생했습니다.

내 응용 프로그램의 단위 테스트 중 일부에 대해 간헐적으로이 메시지가 표시되기 시작했습니다 (1100 개 이상의 & 시스템 테스트가 있음). ReSharper 4.1에서 테스트 러너를 사용하고 있습니다.

다른 한 가지 : 내 개발 컴퓨터는 VMWare 가상 컴퓨터입니다.

답변

5

나는이 많은 달을 전에 만났다. 요점은 사용 가능한 포트가 부족하다는 것입니다.

먼저 호출 응용 프로그램에 연결 풀링이 설정되어 있는지 확인하십시오.

그런 다음 SQL Server에 사용할 수있는 포트 수를 확인하십시오.

풀이 꺼져 있으면 모든 호출에 포트가 걸리고 포트가 만료되고 포트가 부족한 경우 기본적으로 4 분이 걸리는 현상이 발생합니다.

풀링이 설정된 경우 SQL Server의 모든 포트를 프로필링하고 필요한 경우 충분히 확장하고 확장해야합니다.

이 오류가 발생하면 연결 풀링이 꺼지고 웹 사이트에 적절한 부하가 걸릴 때마다이 문제가 발생합니다. 부하가 최대 2 ~ 3 명 이었기 때문에 우리는 그것을 볼 수 없었습니다. 그러나 숫자가 10을 초과하면 우리는이 오류를 계속 보았습니다. 우리는 풀링을 켜고 그것을 고쳤습니다.

2

나는이 많은 위성도 전에 만났다. 그러나, @ Longhorn213s 설명을 할인하지 않기 위하여, 그러나 우리는 정확한 반대 행동이 있었다. 우리는 개발과 테스트에서 오류를 받았지만 분명히 부하가 훨씬 큰 곳에서는 생산하지 않았습니다. 우리는 산발적이고 진행을 현저하게 늦추지 않았기 때문에 개발에서이 문제를 용인했습니다. 나는이 오류에 대한 몇 가지 이유가있을 수 있다고 생각하지만, 그 원인을 스스로 지적 할 수는 없었다.

+0

Trumpi가 말한 것처럼이 오류는 DB 서버 (또는 서버가 연결을 해제하도록 강제하는)를 순환시킴으로써 발생할 수 있습니다.연결은 클라이언트 소프트웨어 또는 풀의 다른 쪽 끝에서 일정 수준으로 캐시 된 다음 사용하려고 시도하는 동안 더 이상 유효하지 않다는 검색은 "전송 수준 오류"를 반환합니다. 아마 프로덕션 DB 서버를 재부팅하지 않고 (좋은 일), dev DB 서버를 재시동해야 할 것입니다 (누가 신경 써야할까요?). – ErikE

0

네트워크가 펑키하거나 NIC가 빠져 나가고있는 것을 많이 보았습니다. 네트워크 스택을 확인하십시오.

0

Google 환경에서이를 보았고 일부를 우리 쿼리의 "NOLOCK"힌트까지 추적했습니다. 우리는 NOLOCK 힌트를 제거하고 서버가 Snapshot Isolation 모드를 사용하도록 설정했으며 이러한 오류의 빈도는 상당히 감소되었습니다.

1

또한이 오류를 뛰어 넘어 데이터베이스 서버에서 SQL 서버 연결을 종료하고 있음을 알았습니다. 클라이언트 응용 프로그램은 연결이 여전히 활성 상태이며 해당 연결을 사용하려고 시도했지만 연결이 종료되었으므로 실패합니다.

0

우리는이 오류를 몇 번 본 것으로서 다양한 성공으로 다른 해결책을 시도했습니다. 공통적 인 기본 테마 중 하나는 오류를 제공하는 시스템이 메모리가 부족하다는 것입니다. Sql Server를 호스팅하는 서버가 다른 비 OS 프로세스를 실행중인 경우 특히 그렇습니다. 기본적으로 SQL Server는 가능한 모든 메모리를 가져오고 다른 프로세스/드라이버는 거의 사용하지 않습니다. 이로 인해 비정상적인 작동 및 간헐적 인 메시지가 발생할 수 있습니다. SQL Server를 구성하여 최대 메모리를 확보하는 것이 좋습니다. 필요로하는 다른 프로세스가있을 수 있습니다. 예 : 동일한 컴퓨터에서 SQL Server 개발자 버전의 복사본을 실행중인 dev 컴퓨터의 Visual Studio.

관련 문제