디버거 명령 및 기능의 제한 사항
업데이트: 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 클래스 라이브러리의 하위 집합에 대한 참조만 추가할 수 있습니다. 일부 어셈블리는 참조할 수 없습니다.