다음을 통해 공유


디버거 명령 및 기능의 제한 사항

업데이트: 2007년 11월

이 항목은 다음 언어에 적용됩니다.

Edition

Visual Basic

C#

C++

Web Developer

Express

항목이 적용되지 않음 항목이 적용되지 않음 항목이 적용되지 않음 항목이 적용되지 않음

Standard

항목이 적용되지 않음 항목이 적용되지 않음 항목이 적용되지 않음 항목이 적용되지 않음

Pro 및 Team

항목이 적용됨 항목이 적용됨 항목이 적용됨 항목이 적용됨

표의 범례:

항목이 적용됨

해당

항목이 적용되지 않음

해당 없음

항목이 적용되지만 명령은 기본적으로 숨겨짐

명령은 기본적으로 숨겨져 있습니다.

SQL 디버거에서는 대부분의 일반적인 디버깅 기능을 사용할 수 있습니다. SQL 디버깅에서는 중단점 설정 및 단계적 실행 같은 대부분의 디버거 명령을 지원합니다. 변수와 전달된 매개 변수의 값은 지역 창에서 볼 수 있습니다. 또한 식을 조사식 창으로 끌어 프로시저를 단계별로 실행하거나 프로시저 단위로 실행하면서 추적할 수도 있습니다.

그러나 SQL 디버깅은 SQL Server 자체의 기본 특징으로 인해 매우 다른 환경에서 수행됩니다. 일부 디버깅 제한은 T-SQL 디버깅 또는 SQL CLR 디버깅에만 적용됩니다. 다른 제한은 모든 SQL 디버깅에 적용됩니다.

SQL 디버깅의 일반적 제한

  • 편집하며 계속하기를 사용할 수 없습니다.

  • 호출 스택 창에서 커서까지 실행을 사용할 수 없습니다.

  • SQL 문이 처리될 때 중단을 사용할 수 없습니다.

  • SQL PRINT 문의 출력이 디버거나 데이터베이스 출력 창에 나타나지 않습니다.

  • Visual Studio의 AutoRollback을 사용할 수 없습니다. 데이터를 변경하는 버그를 재현하면 데이터가 변경되기 때문에 버그가 없어질 수 있습니다.

  • 많은 창을 사용할 수 없거나 창의 일부 기능이 제공되지 않습니다. 여기에 해당하는 항목은 다음과 같습니다.

    • 메모리

    • 레지스터

    • 디스어셈블리(T-SQL의 경우)

T-SQL 디버깅 제한

  • 중단점 조건 및 필터가 지원되지 않습니다.

  • SQL에는 실제 메모리나 레지스터가 없기 때문에 메모리 창이나 레지스터 창을 사용할 수 없습니다.

  • 다음 문 설정을 사용하여 실행 순서를 변경할 수 없습니다. SQL 코드의 흐름 제어 및 문 순서를 따라야 합니다. 이 문제를 해결하기 위해 SQL 코드 블록 주위에 제어문을 넣고 변수 값을 변경할 수 있습니다.

  • T-SQL 개체 내에서 .Net Framework 변수 또는 속성에 액세스할 수 없습니다.

  • 직접 실행 창이 표시되지만 이 창을 사용하여 변수를 값으로 설정하거나 데이터베이스를 쿼리하는 것과 같은 유용한 작업을 수행할 수 없습니다.

  • 많은 창을 사용할 수 없거나 창의 일부 기능이 제공되지 않습니다. 여기에 해당하는 항목은 다음과 같습니다.

    • 디스어셈블리

    • 스레드

    • 레지스터

    • 프로세스

    • 모듈

SQL CLR 디버깅 제한

  • SQL CLR 디버깅이 수행되는 동안에는 모든 SQL CLR 코드의 실행이 중지되므로 SQL CLR 디버그 세션은 서버별로 하나만 수행될 수 있습니다. 이러한 이유로 디버거 사용자는 SQL 시스템 관리자여야 SQL CLR 디버깅을 수행할 수 있습니다.

  • SQL CLR 디버깅을 프로덕션 서버에서 수행해서는 안 됩니다. SQL CLR 디버거는 프로세스 메모리를 읽고 쓸 뿐 아니라 서버 프로세스에서 임의의 코드를 실행할 수 있으므로 SQL CLR 디버깅에는 위험이 있습니다. 이 때문에 서버의 모든 관리되는 스레드가 중지됩니다. 또한 디버깅 세션을 종료하면 SQL Server가 중단될 수 있습니다.

  • CLR SQL 개체 내에서 @@ROWCOUNT와 같은 전역 SQL 변수에 액세스할 수 없습니다.

  • Visual Studio SQL Server 프로젝트에서는 .NET Framework 클래스 라이브러리의 하위 집합에 대한 참조만 추가할 수 있습니다. 일부 어셈블리는 참조할 수 없습니다.

참고 항목

개념

SQL 디버깅 제한

SQL 디버깅