2012-05-10 6 views
0

질문이 있는데 문제가되지 않습니다. 내 데이터베이스에는 고유 한 이름 (고유해야하는 이름을 저장하는 열)으로 몇 가지 제한 사항이 있습니다. 삽입 또는 업데이트 할 때 db는 일부 이름을 재정의하지 않았는지 확인한 후 변환 할 수있는 오류를 반환합니다 코드가있는 SqlException에 2627SqlException 오류 코드

내 질문은 ... 내가 최종 사용자에게 무엇을해야하는지 알려주기 위해 사용할 수있는 테이블이나 것이 있습니까? 같은 이름의 사용자가 존재하는이 경우

.. ....

내가 생각

답변

2

, 당신이 된 SQLException Errors property를 살펴보고 메시지에 당신을 가리켜 야하는 errors number에서 살펴 보셔야합니다 master.dbo.sysmessages 테이블.

0

특정 오류 코드가 특정 것을 언급한다고 가정합니다.

select * from master.dbo.sysmessages where description like '%timeout%' 

이 당신을 줄 것이다 : 제한 시간 제공

값이 유효하지 않습니다. 시간 제한은 0에서 2147483647 사이의 유효한 정수 여야합니다. 1033

클래스 '% ls', id % p, 유형 % d, 작업 0x % p : % d, 대기 시간 % d 초, 플래그 0x % I64x, 소유 태스크 0x % p. 계속 기다려라. 1033

원격 서버 인스턴스 '%. * ls'에 대한 통신이 시간 초과되기 전에 완료하지 못했습니다. ALTER DATABASE 명령이 완료되지 않았을 수 있습니다. 명령을 다시 시도하십시오. 1033

데이터베이스 미러링 시간 초과 값 % d이 최대 값 32767을 초과합니다. 1033 메타 데이터 캐시 항목 % d : 데이터베이스 ID (% d)의 % d에 잠금 시간 제한으로 인해 일관성이 검사되지 않습니다. 1033

표시된 트랜잭션 "%. * ls"이 (가) 실패했습니다. 표시된 트랜잭션을 커밋하여 로그에 표시를 시도하는 동안 시간 초과가 발생했습니다. 이 문제는 Microsoft DTC (Microsoft Distributed Transaction Coordinator) 트랜잭션과의 충돌로 인해 발생할 수 있습니다. 1033

SQL Server 대상의 대량 삽입 작업 시간이 초과되었습니다. 데이터 흐름의 SQL Server 대상에서 Timeout 속성 값을 늘리십시오. 1033

... 모든 언어에서 많은 오류가 있습니다.

따라서 '1033은 시간 초과를 의미합니다'라고 가정 할 수 있습니다. 불행하게도 그건 사실이 아니에요 :

select description from master.dbo.sysmessages where msglangid=1033 

경고 : 치명적인 오류 % d를 %의 S_DATE에서 발생했습니다. 오류 및 시간을 기록하고 시스템 관리자에게 문의하십시오.

Waitfor에서 쿼리가 허용되지 않습니다.

'%. * ls'근처의 구문이 잘못되었습니다.

'%. * ls'(으)로 시작하는 % S_MSG이 (가) 너무 깁니다. 최대 길이는 % d입니다. 문에 UNION, INTERSECT 또는 EXCEPT 연산자가 포함 된 경우 ORDER BY 항목이 선택 목록에 나타나야합니다.

ORDER BY 위치 번호 % ld이 (가) 선택 목록에있는 항목 수 범위를 벗어났습니다.

많은 많은 타임 아웃 관련 오류가 없습니다. 그래서 실제로 당신의 질문에 대답

IsSqlTimeout = ((ex as SqlException).Message.ToUpper().Contains("TIMEOUT"); 

- 당신의 사용자가 실제로 이해 할 수있는 나에 대해 얘기해야했다에 따라 달라집니다 :

그래서 나는 고집하고 있습니다.

일정 기간 동안 모든 오류를 기록하고 어떤 오류를 가장 많이 볼 수 있는지 그룹화하고 각각을 하나씩 처리하도록 제안합니다.