2014-02-09 3 views
1

, 나는 가끔 오류SQL Server 연결은 SQL 문을 실행할 때

을 얻을 특정 저장 프로 시저 떨어

클라이언트 :

"An exception occurred while executing a Transact-SQL statement or batch. A transport-level error has occurred when receiving results from the server. (provider: TCP Provider, error: 0 -The semaphore timeout period has expired)"

SQL 서버 : 내가 관리해야

"2014-02-09 11:02:31.81 Server A fatal error occurred while reading the input stream from the network. The session will be terminated (input error: 64, output error: 0)."

하나의 SQL을 찾으려면 일관되게 새 버전을 배포 할 때 (내가 너무 간헐적으로 다른 오류를 참조하지만) 내가 도망 내 생성 된 데이터베이스 스크립트에서 실패

/*************************************************/ 
/* [dbo].gspDiscounts_SEARCH */ 
/*************************************************/ 
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].gspDiscounts_SEARCH') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].gspDiscounts_SEARCH 
GO 

CREATE PROCEDURE [dbo].gspDiscounts_SEARCH (@DiscountId AS [uniqueidentifier], @DiscountName AS [nvarchar](50), @DiscountDescription AS [nvarchar](max)) 
AS 

SELECT 
    DiscountId, DiscountName, DiscountDescription 
FROM 
    [dbo].[Discounts] 
WHERE 
    ([DiscountId] = @DiscountId OR @DiscountId IS NULL) 
    AND ([DiscountName] LIKE @DiscountName OR @DiscountName IS NULL) 
    AND ([DiscountDescription] LIKE @DiscountDescription OR @DiscountDescription IS NULL) 

GO 
이 동안

/*************************************************/ 
/* [dbo].gspFolderDataCache_SEARCH */ 
/*************************************************/ 
IF EXISTS (SELECT * FROM sys.objects WHERE object_id =  OBJECT_ID(N'[dbo].gspFolderDataCache_SEARCH') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].gspFolderDataCache_SEARCH 
GO 

CREATE PROCEDURE [dbo].gspFolderDataCache_SEARCH (@FolderId AS [uniqueidentifier], @PerformanceFolderId AS [uniqueidentifier], @ShowFolderId AS [uniqueidentifier], @SpaceFolderId AS [uniqueidentifier], @VenueFolderId AS [uniqueidentifier]) 
AS 

SELECT 
FolderId, PerformanceFolderId, ShowFolderId, SpaceFolderId, VenueFolderId 
FROM 
[dbo].[FolderDataCache] 
WHERE 
([FolderId] = @FolderId OR @FolderId IS NULL) 
AND ([PerformanceFolderId] = @PerformanceFolderId OR @PerformanceFolderId IS NULL) 
AND ([ShowFolderId] = @ShowFolderId OR @ShowFolderId IS NULL) 
AND ([SpaceFolderId] = @SpaceFolderId OR @SpaceFolderId IS NULL) 
AND ([VenueFolderId] = @VenueFolderId OR @VenueFolderId IS NULL) 

GO 

, 거의 동일한 스크립트마다 작동

데이터베이스 유지 관리 도구에서 SQL을 실행하는이 특정 예제에서는 SQL Server 관리 개체를 사용하여 스크립트를 실행하지만 엔터프라이즈 라이브러리 데이터 액세스 블록을 사용하는 주 응용 프로그램에서 같은 오류가 발생합니다 , 그래서 나는 그것이 C# 코드에 있다고 생각하지 않는다.

SQL Server (SQL Server v2008 R2)와 클라이언트는 모두 동일한 VPC 안에있는 Amazon EC2 서버에 있습니다. 웹 서버가 VPC 밖에 있고 Windows Server 2008을 실행 중일 때이 문제는 발생하지 않았습니다. 두 서버 모두 이제 Windows Server 2012에 있습니다.

실패한 명령문은 작동하는 명령문과 매우 유사하며 클라이언트와 서버 모두에서 네트워크 오류로 표시되기 때문에 중간에 뭔가있을 수 있다고 생각했습니다. ... 두 서버에서 Windows 방화벽을 해제했습니다. 그건 도움이 안된다.

무슨 일이 벌어 질 수 있습니까?

+0

http://support.microsoft.com/kb/325487 –

+0

SQL Server 버전 및 서비스 팩? –

+0

내부 오류와 같은 소리가납니다. 때로는 연결이 끊어집니다. 서버 로그, CHECKDB. – usr

답변

0

2 가지의 조합처럼 보이는 : 1500의 기본 MTU는 ICMP (AN AWS ​​보안 그룹에 대한 기본을) 차단 아마존 서버

  • 너무 높은

    1. 적합한 MTU의 협상을 중지합니다.

    낮은 MTU를 설정하고 IMCP를 활성화하면 지금까지 해결 된 것처럼 보입니다.

  • 0

    "다시 껐다가 다시 시도해 보셨습니까?"

    프로덕션 서버에 대한 첫 번째 수단은 아니지만 자정 25 분 전 현재 (보류중인 모든 Windows 업데이트의 적용으로) 문제가 해결 된 것 같습니다.

    Tch.

    +0

    다시 발생합니다. 그리고 같은 파일로 인해 초크가됩니다. "재부팅이 필요합니다"라고 간단하지 않습니다. –

    관련 문제