System.Transactions 예제

업데이트: 2005년 12월 5일

System.Transactions 예제에서는 System.Transactions 네임스페이스에 있는 관리되는 API를 사용하여 트랜잭션을 제어하는 방법을 보여 줍니다. 특히 System.Transactions.TransactionScope 클래스는 요청을 처리할 재고가 충분하지 않는 경우 재고 수치를 조정하지 않고, 재고가 충분한 경우 한 위치에서 다른 위치로 재고를 원자 단위로 이동하도록 트랜잭션 경계를 설정하는 데 사용됩니다. 분산 트랜잭션에서의 자동 등록은 별도의 서버에 저장된 감사 데이터베이스에 재고 변경 내용을 기록하여 표시됩니다.

이 예제는 두 개의 실제 컴퓨터에서 두 부분, 즉 주 예제 서버와 감사 서버에 설치되어야 합니다.

설치 디렉터리: drive:\Program Files\Microsoft SQL Server\90\Samples\Engine\Programmability\CLR\Transaction\

시나리오

Adventure Works Cycles의 개발자인 Jane은 재고가 일관된 트랜잭션으로 한 위치에서 다른 위치로 이동하는 과정을 추적하고 모든 재고 변경 내용을 감사해야 합니다.

언어

Transact-SQL, Visual C# 및 Visual Basic

기능

System.Transactions 예제에서는 SQL Server의 다음 기능을 사용합니다.

응용 프로그램 영역 기능

전체

CLR(공용 언어 런타임), 트랜잭션, 분산 트랜잭션, ADO .NET, MSDTC

필수 구성 요소

이 예제를 실행하기 전에 다음 소프트웨어가 설치되어 있는지 확인하십시오.

  • Microsoft Microsoft SQL Server 2005 또는 Microsoft SQL Server 2005 Express Edition(SQL Server Express). SQL Server 2005 Express Edition 설명서 및 예제 웹 사이트에서 무료로 SQL Server Express를 구할 수 있습니다.
  • SQL Server 2005에 포함되어 있으며 SQL Server Developer 웹 사이트에서 사용할 수 있는 AdventureWorks 데이터베이스
  • SQL Server 2005 데이터베이스 엔진 예제. 이 예제는 SQL Server 2005에 포함되어 있습니다. SQL Server Developer 웹 사이트에서 최신 버전의 예제를 다운로드할 수 있습니다.
  • .NET Framework SDK 2.0 또는 Microsoft Visual Studio 2005. .NET Framework SDK는 무료로 구할 수 있습니다. .NET Framework SDK 설치를 참조하십시오.
  • MSDTC(Microsoft Distributed Transaction Coordinator). MSDTC는 인바운드 및 아웃바운드 클라이언트 연결을 허용하도록 구성되어야 합니다. 이 예제에서 사용되는 두 서버 모두에 MSDTC를 설치 및 구성해야 합니다. 자세한 내용은 구성 요소 서비스 설명서를 참조하십시오.

이 예제를 실행하기 전에 다음 구성 요소를 구성합니다.

  • 두 서버 중 하나에라도 Windows 방화벽을 사용하도록 설정한 경우 SQL Server와 MSDTC 연결을 허용하도록 두 서버 모두에서 해당 방화벽을 구성합니다. 자세한 내용은 Windows 방화벽 설명서를 참조하십시오.
  • SQL Server 노출 영역 구성 도구를 사용하여 감사 서버에서 SQL Server 2005에 대해 원격으로 액세스할 수 있도록 설정합니다.

예제 빌드

강력한 이름의 키 파일인 ExternalSampleKey.snk를 아직 만들지 않은 경우 다음 명령을 사용하여 해당 키 파일을 생성합니다.

강력한 이름의 키 파일을 생성하려면

  1. Microsoft Visual Studio 2005 명령 프롬프트를 엽니다. 시작을 클릭하고 모든 프로그램, Microsoft Visual Studio 2005, Visual Studio 도구를 차례로 가리킨 다음 Visual Studio 2005 명령 프롬프트를 클릭합니다.

    -또는-

    Microsoft .NET Framework 명령 프롬프트를 엽니다. 시작을 클릭하고 모든 프로그램, Microsoft .NET Framework SDK 2.0을 가리킨 다음 SDK 명령 프롬프트를 클릭합니다.

  2. 명령 프롬프트에서 CD(디렉터리 변경) 명령을 사용하여 명령 프롬프트 창의 현재 폴더를 Samples 폴더로 변경합니다.

    [!참고] 예제가 있는 폴더를 확인하려면 시작을 클릭하고 모든 프로그램, Microsoft SQL Server 2005, 설명서 및 자습서를 차례로 가리킨 다음 예제 디렉터리를 클릭합니다. 기본 설치 위치가 사용된 경우 예제는 <system_drive>:\Program Files\Microsoft SQL Server\90\Samples에 있습니다.

  3. 명령 프롬프트에서 다음 명령을 실행하여 키 파일을 생성합니다.

    sn -k ExternalSampleKey.snk

    ms345266.note(ko-kr,SQL.90).gif중요:
    강력한 이름의 키 쌍에 대한 자세한 내용은 MSDN의 .NET Development Center에서 "보안 정보: .NET Framework의 강력한 이름 및 보안(Security Briefs: Strong Names and Security in the .NET Framework)"을 참조하십시오.

System.Transactions 예제를 빌드하려면

  1. CS\Transaction\InventoryMover.cs를 편집하고 이 예제에 대한 감사 정보를 저장할 서버를 정확하게 명명하도록 문자열 상수 auditConnectionString의 값을 변경합니다. 이 서버는 이 예제의 주 부분을 설치하는 데 사용할 컴퓨터와 다른 실제 컴퓨터여야 합니다. 감사 서버에서 SQL Server 인증을 사용하여 테스트 계정을 설정한 다음 이 계정에 제공한 사용자 이름과 암호를 지정하도록 auditConnectionString을 수정합니다.

  2. Visual Studio 2005와 제공된 Visual Studio 솔루션을 사용하거나 .NET Framework SDK 2.0에 포함되어 있는 Microsoft MSBuild를 사용하여 예제를 컴파일합니다. 명령 프롬프트에서 다음과 비슷한 명령을 실행합니다.

    msbuild /nologo /verbosity:quiet /property:Configuration=Debug CS\Transaction.sln

  3. AdventureWorks 데이터베이스가 설치되어 있는지 확인합니다.

  4. SQL Server 엔진 예제를 기본 위치에 설치하지 않은 경우 예제가 설치된 위치를 나타내도록 Scripts\InstallCS.sql과 Scripts\InstallVB.sql에서 스크립트의 CREATE ASSEMBLY 부분에 포함된 경로를 수정합니다.

  5. 사용 중인 SQL Server 인스턴스의 관리자가 아닌 경우 설치를 완료하기 위해 관리자로부터 CreateAssembly 사용 권한을 부여 받아야 합니다.

  6. Microsoft Management Studio에서 Visual C# 프로젝트를 컴파일했는지 또는 Visual Basic 프로젝트를 컴파일했는지에 따라 scripts\installCS.sql 또는 scripts\installVB.sql 파일을 엽니다. 주 예제 서버에 연결된 상태에서 파일에 포함된 스크립트를 실행하거나 주 예제 서버의 명령 프롬프트 창에서 다음과 비슷한 명령을 실행합니다.

    sqlcmd -E -I -i Scripts\InstallCS.sql

  7. Microsoft Management Studio에서 scripts\installDB.sql 파일을 엽니다. 감사 서버에 연결된 상태에서 파일에 포함된 스크립트를 실행하거나 감사 서버의 명령 프롬프트 창에서 다음과 비슷한 명령을 실행합니다.

    sqlcmd -E -I -i Scripts\InstallDB.sql

예제 실행

System.Transactions 예제를 실행하려면

  1. Management Studio에서 scripts\test.sql 파일을 엽니다. 파일에 포함된 스크립트를 실행하거나 명령 프롬프트 창에서 다음 명령을 실행합니다.

    sqlcmd -E -I -i Scripts\test.sql

예제 제거

System.Transactions 예제를 제거하려면

  1. Management Studio에서 scripts\cleanup.sql 파일을 엽니다. 주 예제 서버에서 파일에 포함된 스크립트를 실행하거나 주 예제 서버의 명령 프롬프트 창에서 다음 명령을 실행합니다.

    sqlcmd -E -I -i Scripts\cleanup.sql

  2. Management Studio에서 scripts\cleanup.sql 파일을 엽니다. 감사 서버에서 파일에 포함된 스크립트를 실행하거나 감사 서버의 명령 프롬프트 창에서 다음 명령을 실행합니다.

    sqlcmd -E -I -i Scripts\cleanupDB.sql

설명

이 예제가 제대로 작동되려면 SQL Server 2005 또는 SQL Server Express의 CLR을 설정해야 합니다.

예제는 교육용으로만 제공되므로 프로덕션 환경에서 사용하기에 적합하지 않으며 프로덕션 환경에서 테스트되지 않았습니다. Microsoft에서는 이러한 예제에 대해 기술 지원을 제공하지 않습니다. 시스템 관리자의 허가 없이 프로덕션 SQL Server 데이터베이스 또는 보고서 서버에 예제 응용 프로그램 및 어셈블리를 연결하거나 사용해서는 안 됩니다.