2008-10-21 7 views
2

Try/Catch에 백업 데이터베이스 명령을 캡슐화했으며 오류 메시지가 어딘지에서 손실 된 것으로 보입니다.SQL Server 2005 - Error_Message()가 전체 메시지를 표시하지 않습니다.

BACKUP DATABASE NonExistantDB TO DISK = 'C:\TEMP\NonExistantDB.bak' 

..gives 오류 : 예를 들어
데이터베이스 'NonExistantDB'에 대한 SYSDATABASES에서 항목을 찾을 수 없습니다. 해당 이름의 항목을 찾을 수 없습니다. 이름이 올바르게 입력되었는지 확인하십시오. BACKUP DATABASE가 비정상적으로 종료되었습니다.

는 반면 :

BEGIN TRY 
    BACKUP DATABASE NonExistantDB TO DISK = 'C:\TEMP\NonExistantDB.bak' 
END TRY 
BEGIN CATCH 
    PRINT ERROR_MESSAGE() 
END CATCH 

...에만 오류 준다 : DATABASE BACKUP의 비정상적으로 종료된다.

전체 오류 메시지를 표시하는 방법이 있습니까? 아니면 try/catch의 제한 사항입니까?

답변

3

try/catch의 제한 사항입니다.

당신이

BACKUP DATABASE NonExistantDB TO DISK = 'C:\TEMP\NonExistantDB.bak' 

을 실행하여 생성 된 오류주의 깊게 보면 당신이 던져 두 가지 오류가 있음을 확인할 수 있습니다. 첫 번째 메시지는 msg 911이며 상태는

입니다.

Could not locate entry in sysdatabases for database 'NonExistantDB'. No entry found with that name. Make sure that the name is entered correctly.

두 번째는 표시 할 메시지입니다. 기본적으로 SQL은 마지막 오류 만 반환합니다.

+0

것 같습니다의 경우, 나는 단지 나 자신으로 실행되었는지, SQL 2005에서 try/catch 블록의 내가 제한 모르는있다 당신의 권리와 같지만, try/catch의 한계가 아닙니다. 방금 @@ ERROR를 사용하여 실행했으며 마지막 오류 만 반환합니다. msg 911이 아닙니다. 그러면 우리가 어떻게 첫 번째 오류 또는 모든 오류가 발생했는지 알 수 있습니다. – HAdes