다음을 통해 공유


방법: SQL CLR 저장 프로시저 디버깅

이 항목은 다음 버전에 적용됩니다.

Edition

Visual Basic

C#

C++

Web Developer

Express

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

Visual Studio Professional, Visual Studio Premium 및 Visual Studio Ultimate

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

Transact-SQL 프로시저를 디버깅할 때와 동일한 방법으로 데이터베이스를 직접 디버깅하여 기존 SQL Server CLR(공용 언어 런타임) 저장 프로시저를 디버깅할 수 있습니다. 그러나 그 컴파일하고 그것을 배포 해야 하기 때문에 만들거나 SQL CLR 프로시저를 수정 해야 할 경우 작동 하지 않습니다. 에 대 한 존재 하지 않는이 단계를 Transact-SQL 절차. 이 경우 Visual Studio에서 SQL Server 프로젝트를 만들어야 합니다.

다음 작업에서는 SQL Server 2005와 함께 설치되는 데이터베이스 중 하나인 AdventureWorks 데이터베이스에 새 SQL CLR 저장 프로시저를 만듭니다. Sales.Currency 테이블에 통화를 새로 추가하는 저장 프로시저를 만듭니다.

이 예제에서는 SQL Server 프로젝트 내에서 디버깅하는 방법을 중점적으로 보여 줍니다. 저장 프로시저를 만든 다음 데이터베이스를 직접 디버깅하는 방법으로 이를 디버깅할 수 있습니다. 자세한 내용은 How to: Step into an Object Using Server Explorer을 참조하십시오.

참고

표시되는 대화 상자와 메뉴 명령은 활성 설정이나 버전에 따라 도움말에서 설명하는 것과 다를 수 있습니다. 설정을 변경하려면 도구 메뉴에서 설정 가져오기 및 내보내기를 선택합니다. 자세한 내용은 설정에 대한 작업을 참조하십시오.

SQL CLR 개체를 디버깅하려고 할 때 "사용자가 취소했습니다."라는 메시지가 나타나면 Visual Studio를 실행하는 컴퓨터와 SQL Server를 실행하는 컴퓨터를 모두 수동으로 구성해야 합니다. 자세한 내용은 방법: Transact-SQL 및 SQL CLR 디버깅을 사용하도록 컴퓨터 구성을 참조하십시오.

SQL CLR 저장 프로시저를 디버깅하려면

  1. 원격 디버깅 사용 자세한 내용은 방법: 원격 디버깅 설정을 참조하십시오.

  2. 새 SQL Server 프로젝트에서 AdventureWorks 샘플 데이터베이스에 대한 연결을 설정합니다. 자세한 내용은 How to: Connect to a Database을 참조하십시오.

  3. 아래의 첫 번째 예제 섹션에 있는 코드를 사용하여 새 저장 프로시저를 만들고 이름을 InsertCurrency.cs로 지정합니다. 자세한 내용은 How to: Develop with the SQL Server Project Type을 참조하십시오.

  4. 저장 프로시저를 호출하여 테스트하는 스크립트를 추가합니다. 솔루션 탐색기에서 테스트 스크립트 디렉터리를 마우스 오른쪽 단추로 클릭하고 테스트 스크립트 추가를 클릭한 다음 아래의 두 번째 예제 섹션에 있는 코드를 삽입합니다. InsertCurrency.sql이라는 이름으로 파일을 저장합니다. 파일 이름을 마우스 오른쪽 단추로 클릭하고 기본 디버그 스크립트로 설정을 클릭합니다.

  5. InsertCurrency.cs에 중단점을 설정한 다음 디버그 메뉴에서 시작을 클릭하여 프로젝트를 컴파일, 배포 및 단위 테스트합니다. 중단점에 노란색 화살표로 표시된 지시 포인터가 나타나면 저장 프로시저가 디버깅되고 있는 것입니다.

  6. 다른 디버깅 기능을 사용해 봅니다.

    1. 지역 창을 열고 디버그 메뉴에서 한 단계씩 코드 실행을 클릭하여 저장 프로시저를 한 줄씩 실행합니다. 지역 창에서 @mynvarchar 변수의 값이 변경되고 해당 값은 빨간색으로 표시되어 값이 변경되었음을 나타냅니다. 자세한 내용은 지역 창 사용을 참조하십시오.

      참고

      서버가 변수 값의 변경 내용을 디버거 창에 반영하지 않을 수도 있습니다. 자세한 내용은 SQL 디버깅 제한을 참조하십시오.

    2. 조사식 창을 엽니다. 텍스트 편집기에서 InsertCurrencyCommand 변수를 끌어 조사식 창의 임의의 위치에 놓습니다.

      해당 변수가 조사 변수 목록에 추가됩니다. 자세한 내용은 방법: 디버거 변수 창 사용을 참조하십시오.

      참고   조사식 창에서 변수 값을 편집할 수 있습니다.

    3. 텍스트 편집기에서 InsertCurrencyCommand.ExecuteNonQuery 줄을 마우스 오른쪽 단추로 클릭하고 바로 가기 메뉴에서 중단점 삽입을 클릭합니다.

    4. 디버그 메뉴에서 계속을 클릭하면 디버거에서 새 중단점까지의 코드가 실행됩니다.

  7. 다시 계속을 클릭하여 저장 프로시저 디버깅을 마칩니다.

    출력 창에 저장 프로시저가 성공적으로 배포되었다는 메시지가 표시되고 InsertCurrency.sql 파일의 명령 실행 결과가 표시됩니다.

예제

저장 프로시저 템플릿을 이 코드로 바꿉니다.

using System;
using System.Data;
using System.Data.Sql;
using System.Data.SqlServer;
using System.Data.SqlTypes;

public partial class StoredProcedures
{
    [SqlProcedure]
    public static void InsertCurrency(SqlString currencyCode, 
                                               SqlString name)
    {
        using(SqlConnection conn = new SqlConnection("context connection=true")) {
        SqlCommand cmd = new SqlCommand([your SQL statement], conn);
        }
        InsertCurrencyCommand.CommandText = "insert Sales.Currency"
                     + " (CurrencyCode, Name, ModifiedDate) values('" 
                     + currencyCode.ToString() + "', '" 
                     + name.ToString() + "', '" 
                     + DateTime.Now.ToString() + "')";
        InsertCurrencyCommand.ExecuteNonQuery();
    }
}

다음은 저장 프로시저를 실행하는 데 사용할 테스트 스크립트입니다.

- Delete any row that might exist with a key value
- that matches the one we are going to insert
DELETE Sales.Currency
WHERE CurrencyCode = 'eee'
EXEC InsertCurrency 'eee', 'MyCurr4'
SELECT * FROM Sales.Currency WHERE CurrencyCode = 'eee'

참고 항목

작업

방법: 공용 언어 런타임 통합을 사용하여 SQL Server 저장 프로시저 만들기 및 실행

기타 리소스

방법: Transact-SQL 및 SQL CLR 디버깅을 사용하도록 컴퓨터 구성