mssql 저장 프로시저의 오류 처리를 발견했다면 이 문서가 도움이 되었기를 바랍니다.
승인됨: Fortect
배치 루틴에서 오류가 발생하면 대중이 할 수 있는 최선의 방법(오류가 의심할 여지 없이 치명적이라고 가정)은 일부 순차적 코드 처리를 일시 중단하고 루틴의 다른 코드 세그먼트로 자주 점프하는 것입니다. 또는 일반적으로 지원하는 연락처로 처리를 반환합니다. 현재 이전 문장은 종종 치명적이지 않은 오류를 나타냅니다.
오류 개요
오류 처리 SQL Server와 관련된 오류 처리를 통해 특정 Transact-SQL 코드를 조작할 수 있습니다. 예를 들어, 도구가 예상대로 거의 작동하지 않는 경우, 우리는 당신이 그것에 대해 뭔가를 하고 다시 올바르게 할 수 있도록 도울 기회가 있습니다. SQL 오류 처리는 너무 간단하여 사용자가 문제가 발생했다는 데 전적으로 동의하거나 오류를 수정하는 경우가 종종 있습니다. 사실, 어떤 종류의 오류는 SQL 진실로 다시 번역될 수도 있습니다. 기술적인 SQL Server 오류 메시지를 불필요하고 매우 혼란스럽고 이해하기 쉽게 만드는 것이 얼마나 쉬운 일인지 우리는 모두 알고 있습니다. 운 좋게도 우리는 이러한 게시물을 사용자, 개발자 등이 할 수 있도록 더 의미 있는 것으로 바꿀 수 있는 능력이 있습니다.
이 보고서에서는 특정 기사 TRY … CATCH: 구문, 모양, 게임 작동 방식 및 오류 발생 시 수행할 수 있는 작업을 자세히 살펴보겠습니다. 또한 SQL Server의 현재 방법은 T-SQL 문 대 블록으로 매우 잘 설명될 수 있습니다. 이는 기본적으로 항상 오류를 수락하는 SQL Server의 비밀입니다. 이것은 매우 복잡하지 않은 구조화된 방법이며 일단 레이어를 얻으면 많은 경우에 매우 유용할 수 있음을 알게 될 것입니다.
또한 많은 오류 주석을 생성하는 RAISERROR 함수도 다룹니다. 이것은 혼란스러운 메시지를 사람들이 이해해야 하는 좀 더 뾰족한 것으로 바꾸는 데는 상당한 거리가 있습니다.
TRYâ € ¦CATCH를 사용한 오류 처리
이것은 거의 확실히 형식이 어떻게 생겼는지입니다. 익숙해지는 것은 어렵지 않습니다. 다양한 코드 블록이 있습니다.
이 BEGIN TRY와 END TRY 사이에는 오류를 추적하려는 자체 프로그래밍이 있습니다. 따라서 이 TRY 문에 오류가 있는 경우 제어는 의심할 여지 없이 CATCH 문에 대한 경로로 즉시 전달되고 문자열의 결과가 나올 때 인라인 코드 실행을 시작해야 합니다.
이제 CATCH 문 내에서 가장 중요한 오류를 수정하거나, 오류를 실험하거나, 일반적인 오류를 기록하여 언제 잘못되었는지, 누가 잘못했는지, 오류, 사용자 이름, 유용한 모든 것을 기록하는지 알 수 있습니다. 물건. CATCH 문 직후에만 사용할 수 있는 일부 특수 데이터에도 액세스할 수 있습니다.
<울>
이것이 서버에서 SQL 실수를 처리하는 데 필요한 전부입니다. 간단한 TRY 및 CATCH 명령만 있으면 모든 작업을 수행할 수 있으며 아이디어가 까다로울 수 있는 부분은 트랜잭션을 기반으로 행동할 때뿐입니다. 왜요? TRANSACTION START가 실제로 발생하면 게임은 항상 COMMIT 또는 ROLLBACK 트랜잭션 절로 끝나야 하기 때문입니다. 나쁜 소식은 실제로 시작한 후에 오류가 발생하지만 플러스 롤백을 커밋하기 전에 발생한다는 것입니다. 이 특별한 경우에는 트랜잭션이 커밋 슬롯으로 돌아갔는지 여부를 확인할 수 있는 CATCH 문에서 매우 잘 구현될 수 있는 특별한 특수 기능이 있습니다. 그러면 롤백하거나 투자할 수 있습니다. 결정.
SSMS(SQL Server Management Studio)로 이동하여 SQL Server 오류 처리의 기본부터 시작하겠습니다. 이 기사에서는 AdventureWorks 2014 리뷰를 듣습니다. 다음 스크립트를 얻는 것은 매우 쉽습니다.
이것은 프로그램이 어떻게 보이고 어떻게 작동하는지에 대한 실질적인 예입니다. BEGIN TRY에서 우리가 하는 유일한 일은 1을 0으로 나누는 것입니다. 이것은 코스와 연결되어 일반적으로 오류로 이어집니다. 이 블록 코드를 건드리는 대로 제어권이 CATCH 블록으로 넘어가고 우리가 이전에 믿었던 기능이 내장된 거의 모든 아파트가 선택됩니다. 위에서 언급한 스크립트를 실행하면 다음을 얻습니다.
두 개의 SELECT 문이 연결되어 있기 때문에 3개의 결과 테이블이 있습니다. 첫 번째 테이블은 현재 오류를 일으키는 0 때문에 1을 나눌 수 있으며, 두 번째 테이블은 일반적으로 실제로 가장 많은 결과를 제공하는 정확한 전달 제어입니다. 오른쪽에서 오른쪽으로 ErrorNumber, ErrorSeverity가 있습니다. errorstate, 이 경우에는 활동(NULL), ErrorLine 및 ErrorMessage가 없습니다.
이제 조금 더 심각한 문제를 해결해 보겠습니다. 이러한 오류에 대해 법적 조치를 취할 가능성은 낮습니다. 어쨌든 오류가 발생하기 쉬운 것들이 있지만 최소한 기록해야 합니다. 이 저장된 대상 스프레드시트에 트리거를 추가하고 이메일 계정을 만들고 실수가 발생했을 때 사람들에게 알리는 크리에이티브를 볼 수도 있습니다.
모든 데이터베이스에 익숙하지 않은 경우 메시징 시스템에 대한 자세한 내용은 이 문서를 참조하십시오.
다음 스크립트는 추적 데이터를 저장하는 데 도움이 되도록 자주 호출되는 DB_Errors 테이블로 연결됩니다.
승인됨: Fortect
Fortect은 세계에서 가장 인기 있고 효과적인 PC 수리 도구입니다. 수백만 명의 사람들이 시스템을 빠르고 원활하며 오류 없이 실행하도록 신뢰합니다. 간단한 사용자 인터페이스와 강력한 검색 엔진을 갖춘 Fortect은 시스템 불안정 및 보안 문제부터 메모리 관리 및 성능 병목 현상에 이르기까지 광범위한 Windows 문제를 빠르게 찾아 수정합니다.
여기에 현재 전문가가 정확한 오류를 일으킨 사람을 알 수 있도록 식별이 뒤따르는 작은 식별 열이 있으며 나머지 정보는 앞서 나열한 내장 기능과 다른 정확한 정보였습니다.
이제 데이터베이스에서 사용자 지정 저장 프로시저를 변경하고 각 오류 처리기를 추가해 보겠습니다.
이 사용된 프로시저를 변경하는 것은 의심할 여지 없이 단일 은닉 프로시저 명령문 주위에 대소문자를 구분하지 않는 오류 처리를 감쌉니다. 이 일시 중단된 작업 메서드를 호출하고 유효한 데이터를 전달하면 다음 절차가 발생합니다.
선택 사항은 대부분의 레코드가 성공적으로 삽입되었음을 나타냅니다.
그러나 위의 저장 프로시저를 다시 호출하고 동일한 매개 변수를 전달하면 결과 그리드가 확실히 다르게 채워집니다.
이번에는 전 세계 사람들이 최종 테이블에 두 가지 지표만 포함했습니다.
0줄이 영향을 받았습니다. 이 선은 판매 테이블에 포함된 항목이 많지 않음을 나타냅니다.
지정된 범위 1개. 이 줄은 선물이 새로 생성된 고유 테이블에 수신 완료되었음을 나타냅니다.
그래서 여기서 우리가 할 수 있는 일은 오류 테이블을 살펴본 다음 구체화된 내용을 확인하는 것입니다. 승인을 한 번만 클릭하면 전체 작업이 수행됩니다.
여기 엠
지금 이 간단한 다운로드로 컴퓨터 성능을 높이십시오. 년다음 절차를 만듭니다. SpDemo를 만드는 과정. 시작하는 방법. TOP-10 * 저자를 선택하십시오. IF @@ ROWCOUNT <11.절차를 따르십시오. spDemo를 실행합니다. 그러면 다음과 같은 오류 메시지가 표시됩니다. "서버: 메시지 50010, 수준 12, 상태 1, 절차 spDemo, 줄 5.
TRY CATCH 구성은 데이터베이스에 대한 웹 연결을 특정하지 않는 10보다 큰 심각도의 런타임 합병증을 포착합니다. TRY 블록은 첨부된 CATCH 블록에 의해 즉시 가려져야 합니다. 정확한 END TRY 및 BEGIN CATCH 문 사이에 다른 유효한 문을 포함하면 형식 오류와 관련하여 결과가 나타납니다.
각 블록에 대해 브랜드가 지정되면 CATCH ERROR_MESSAGE는 해당 CATCH 블록을 실행한 오류 음성의 완전한 서면 텍스트를 반환하는 경우가 많습니다. 텍스트는 예를 들어 길이, 객체 이름 또는 시간으로 인해 대체 가능한 제약 조건에 대해 지정된 값을 나타냅니다. ERROR_MESSAGE는 CATCH 블록의 일부로 외부에서 호출되는 경우 NULL을 반환합니다.