주문 예제 구현 정보

이 항목에서는 Adventure Works 판매 주문 예제 응용 프로그램에 대한 구현 세부 사항 및 디자인 결정에 대해 설명합니다. Microsoft SQL Server와 함께 제공되는 이 예제는 서버와 클라이언트 간 병합 복제 프로그래밍의 장점을 보여 줍니다. 자세한 내용은 판매 주문 병합 복제 예제 추가 정보을 참조하십시오.

아키텍처 개요

이 응용 프로그램 자체는 Microsoft Visual Studio 2005를 사용하여 개발된 Microsoft Windows Forms 기반의 관리 클라이언트입니다. 이 클라이언트 응용 프로그램은 Microsoft .NET Framework 2.0의 데이터 액세스 기능을 사용하여 SQL Server(모든 버전) 로컬 인스턴스의 판매 주문 데이터에 액세스합니다. 병합 복제 토폴로지는 판매 직원의 컴퓨터와 본사에 위치한 주 AdventureWorks 데이터베이스 간에 일관적인 데이터 집합을 유지하기 위해 구현되며, 이 데이터는 각 판매 직원이 자신의 고객을 지원하는 데 필요한 데이터만 받도록 분할됩니다. 병합 게시는 복제 저장 프로시저를 사용하여 프로그래밍 방식으로 구성됩니다. 판매 주문 응용 프로그램은 처음 시작될 때 SMO(SQL Server Management Objects)를 사용하여 프로그래밍 방식으로 로컬 데이터베이스를 만들고 RMO(복제 관리 개체)를 사용하여 병합 끌어오기 구독을 정의합니다. 구독은 RMO를 사용하여 프로그래밍 방식으로 유지 관리 및 모니터링됩니다.

복제 기능

병합 복제 토폴로지를 사용하면 판매 직원은 고객 호출 시 또는 출장 중에 AdventureWorks 데이터베이스에 연결할 필요 없이 로컬에서 판매 데이터로 작업할 수 있습니다. 판매 직원은 정기적으로 인터넷에 연결하여 게시자에 판매 주문 변경 사항을 업로드하고 구독자에 판매 주문 변경 사항 및 업데이트된 제품 정보를 다운로드합니다. 이 예제의 병합 복제 토폴로지는 SQL Server Express와 SQL Server Compact 3.5 SP1를 포함한 모든 버전의 SQL Server 2005에서 실행되는 여러 구독자를 지원하도록 설계되었습니다. 이 유형의 병합 복제 토폴로지는 모바일 사용자와 데이터 교환에 더 자세히 설명되어 있습니다.

매개 변수가 있는 행 필터

실제로 각 판매 직원에 속한 판매 데이터는 Employee.LoginID 열의 로그인 정보를 기반으로 SUSER_SNAME 함수를 사용하여 행 필터링되어야 합니다. 필터링은 성능을 높이고 초기 스냅숏의 크기를 줄이고 구독자 간의 데이터 변경 충돌 가능성을 줄이고 응용 프로그램 논리를 간소화합니다. 그러나 예제 응용 프로그램에서 SUSER_SNAME 함수를 사용한 필터링은 바람직하지 않습니다. 대신 예제에서는 HOST_NAME 함수를 사용하여 데이터를 분할합니다. 또한 복제에서는 HOST_NAME 함수를 오버로드하여 데이터 분할에 대한 필터링 조건을 지정할 수 있으며, 이 예제는 WHERE HumanResources.Employee.LoginID = HOST_NAME 절을 사용하여 Employee 테이블 아티클에 대한 행 필터링을 정의합니다. 조인 필터는 매개 변수가 있는 이 행 필터를 다른 판매 관련 테이블로 확장하는 데 사용됩니다.

중요

HOST_NAME()을 포함하는 매개 변수가 있는 필터를 사용할 경우 보안 고려 사항이 있습니다. 자세한 내용은 매개 변수가 있는 행 필터의 "HOST_NAME()으로 필터링" 섹션을 참조하십시오.

이 예제에 사용되는 아티클 필터링 옵션으로 인해 게시의 각 구독에 대해 다른 Hostname 값을 제공해야 합니다. 다음 Employee.EmployeeID 값은 예제의 Hostname 키에 사용할 수 있습니다.

  • adventure-works\michael9
  • adventure-works\pamela0
  • adventure-works\tsvi0
  • adventure-works\shu0
  • adventure-works\rachel0
  • adventure-works\lynn0

기존 구독에 대한 Hostname 값을 변경하기 전에 구독자와 게시자에서 각각 다음 Transact-SQL 스크립트를 실행한 후 예제를 반환하여 구독을 다시 만들어야 합니다.

분할된 스냅숏 준비

게시는 구독이 초기화될 때 분할된 스냅숏 생성에 대한 구독자 요청을 허용하도록 구성됩니다. 그러나 초기화 전에 이러한 스냅숏을 생성할 수도 있으므로 미리 지정된 시간에 이 처리 비용을 예측 가능한 방식으로 발생시킬 수 있습니다. 자세한 내용은 방법: 매개 변수가 있는 필터를 사용하여 병합 게시에 대한 스냅숏 만들기(복제 Transact-SQL 프로그래밍)를 참조하십시오.

스키마 옵션

아티클 스키마 옵션은 데이터베이스 개체가 구독자로 복제되는 방식을 결정합니다. 자세한 내용은 데이터 및 데이터베이스 개체 게시를 참조하십시오. 예제에 사용되는 스키마 옵션은 개체의 유형과 구독자에 필요한 기능에 따라 달라집니다.

프로그래밍 기능 개체

  • 데이터 액세스 저장 프로시저와 사용자 정의 함수의 경우 CREATE PROCEDURE, CREATE FUNCTION과 같은 개체 작성 명령만 스크립팅됩니다.

이는 @schema_option0x00001과 동일합니다.

테이블 개체

  • 테이블 개체는 구독자에서 작성됩니다.
  • 테이블의 클러스터형 및 비클러스터형 인덱스가 복제됩니다.
  • CHECK 및 FOREIGN KEY 제약 조건이 복제됩니다.
  • 고유 키가 복제됩니다.
  • 사용자 정의 데이터 형식은 구독자에서의 기본 형식으로 변환됩니다.
  • 테이블의 사용자 정의 트리거는 복제되지 않습니다.
  • 구독자에 없는 스키마는 새로 만들어집니다.

이는 일반 @schema_option0x8004EF1과 동일합니다.

구독 상태

이 예제에서는 SubscriberMonitor 클래스를 호출하여 구독 상태 정보를 표시합니다. 이 클래스는 이 예제의 일부분으로 구현되며 SubscriberMonitorUtility 프로젝트에서 독립 실행형 모니터로도 구현됩니다. 자세한 내용은 구독자 모니터 예제 사용을 참조하십시오.

웹 동기화

웹 동기화는 게시가 생성될 때 설정됩니다. 단, 웹 동기화를 사용하려면 웹 동기화 구성 마법사를 사용하여 웹 서버와 구독자에서 SSL에 대한 인증서를 설정해야 합니다. 예제에서는 보안 SSL 연결을 통해 HTTP 기본 인증을 사용합니다. 이는 웹 동기화에 대해 권장되는 방식입니다. 자세한 내용은 웹 동기화 구성을 참조하십시오. Web Synchronization Options 폼에 웹 동기화가 설정되어 있고 HTTP 기본 인증에 대한 로그인 및 암호를 지정하는 경우 응용 프로그램은 구독에 대한 UseWebSynchronization 속성을 true로 설정하고 InternetLoginInternetPassword가 HTTPS 프로토콜을 사용하여 동기화되도록 설정합니다. 예제를 사용할 때 웹 동기화를 사용하도록 Windows 계정과 암호를 지정해야 합니다. 이러한 자격 증명은 게시자에 연결할 때 웹 서버에서 사용됩니다. 병합 에이전트가 HTTPS를 사용하여 InternetUrl 속성에 지정된 위치의 웹 서버에 연결할 수 없는 경우에는 오류가 반환됩니다.

사용자 지정 비즈니스 논리

판매 주문은 일반적으로 판매 직원이 오프라인 상태일 때 이루어지므로 이월 주문된 제품에 대해 주문이 이루어질 가능성이 높습니다. 회사 정책상 주문 내의 모든 항목을 충족할 수 있을 때까지 주문은 선적되지 않습니다. 주문을 즉시 충족할 수 없는 경우 SalesOrderHeader 테이블Status 열 값이 3으로 설정되어 전체 주문이 이월 주문됨을 알립니다. 이러한 경우 응용 프로그램은 판매 직원에게 가능한 이월 주문 상황을 최대한 신속히 알려 직원이 고객에게 알릴 수 있도록 해야 합니다.

판매 주문 예제는 동기화 프로세스에 사용자 지정 비즈니스 논리를 삽입하여 Microsoft.SqlServer.Replication.BusinessLogicSupport 네임스페이스의 BusinessLogicModule 클래스를 구현합니다. 게시자에 전송되는 SalesOrderDetail 테이블의 모든 행 변경에 대해 사용자 지정 논리는 게시자에 연결하여 ProductInventory 테이블에서 해당 항목에 대한 재고를 확인합니다. 주문된 수량이 가용한 총 재고를 초과하는 것으로 파악된 경우 응용 프로그램은 SalesOrderHeader 테이블Status 열을 3으로 설정합니다. 그런 다음 응용 프로그램은 동기화 로그에 이월 주문 상황을 설명하는 메시지를 기록합니다. 복제에서 제공하는 비즈니스 논리 프레임워크를 사용하면 .NET Framework에서 지원되는 모든 기능을 구현할 수 있으므로 사용자 지정 비즈니스 논리를 사용하여 손쉽게 대화 상자를 띄우거나 고객에게 자동 전자 메일 메시지를 보낼 수 있습니다.

참고

웹 동기화를 사용하여 구독을 동기화하는 경우 비즈니스 논리 처리기에 의해 로그에 작성된 메시지는 구독자에 표시되지 않습니다.

사용자 지정 비즈니스 논리는 InsertHandlerUpdateHandler 메서드를 구현하여 행 삽입 및 업데이트를 처리합니다. Initialize 메서드도 구현됩니다. 사용자 지정 비즈니스 논리가 초기화될 때 복제는 SqlConnectionStringBuilder를 사용하여 SqlConnection 개체에 대한 연결 문자열을 프로그래밍 방식으로 생성하는 데 사용된 게시자 정보를 전달합니다.

동기화 상태

복제 에이전트는 에이전트 작업에서 시작하거나(비동기적) 코드에서 직접 시작할 수 있습니다(동기적). 복제 에이전트를 동기적으로 실행할 때 얻는 주요 이점 중 하나는 에이전트의 기본 제공 콜백 기능을 사용하여 에이전트 상태 메시지를 가져오고 표시할 수 있는 기능입니다. 판매 주문 예제에서 Status 이벤트(콜백)는 반환된 StatusEventArgs 개체에서 시스템 메시지를 가져오고 표시하도록 StatusEventHandler를 사용하여 처리됩니다. 동기화에 대한 예상 완료 비율을 나타내는 정수도 반환되며, 이는 진행률 표시줄을 통해 사용자에게 표시됩니다. 백그라운드 동기화로 인해 Subscription Status 폼의 정보가 최신 상태를 유지하지 못할 수 있으므로 판매 직원은 Refresh 단추를 눌러 최신 세션을 로드할 수 있습니다.

연결할 때 동기화

판매 주문 예제는 연결되지 않은 환경에서의 데이터 동기화에 대한 병합 복제의 장점을 보여 줍니다. 한편 본사에서 회의 중인 경우와 같이 인터넷 연결을 즉시 사용할 수 있는 경우가 있습니다. 이 예제는 연결된 환경에서 지속적으로 동기화하는 데에도 사용할 수 있습니다. Advanced OptionsSynchronize when connected 옵션이 설정되면 Timer 컨트롤이 활성화됩니다. 타이머가 응용 프로그램 구성 파일에 미리 설정된 간격에 도달하면 타이머 이벤트가 발생하고 응용 프로그램은 WMI(Windows Management Instrumentation) 공급자를 쿼리하여(System.Management 네임스페이스 사용) 컴퓨터에 연결이 있는지 여부를 확인합니다. 연결이 있으면 구독은 백그라운드에서 동기화됩니다. 예제는 Sales Orders 외의 다른 폼이 포커스를 가진 경우에는 데이터 입력 문제를 방지하기 위해 백그라운드 동기화를 허용하지 않습니다. 예제는 Microsoft Windows 2000에서 제공되지 않는 WMI 속성을 사용하므로 Windows 2000에서 실행되는 컴퓨터의 경우 Synchronize when connected 메뉴 옵션을 사용할 수 없습니다.

참고

이 예제에서 연결할 때 동기화는 단일 스레드로 구현됩니다. 이 기능은 별도의 스레드로 구현하는 것이 가장 좋습니다. 별도의 스레드에서 복제 에이전트를 실행하는 경우 BackgroundWorker 클래스 사용을 고려하십시오.

배포

저장 프로시저, 사용자 정의 형식, 사용자 정의 함수 등 구독 데이터베이스의 데이터에 액세스하는 데 사용되는 모든 프로그래밍 개체는 게시 데이터베이스의 게시자에서만 만들어지며 구독자에 아티클로 게시됩니다. 판매 직원의 컴퓨터에서 판매 주문 예제를 처음 실행하면 이 응용 프로그램은 게시자에 연결하여 초기 스냅숏을 다운로드하고 적용합니다. 여기에는 프로그램의 데이터 액세스 프로그래밍 개체가 포함됩니다. 스냅숏이 성공적으로 적용된 다음 Sales Orders 폼에 로컬 데이터가 로드되면 응용 프로그램에 데이터를 입력할 수 있습니다.

새로운 Visual Studio 2005 ClickOnce 배포 기능을 사용하여 웹 사이트에 응용 프로그램 설치 패키지를 게시할 수 있습니다. .NET Framework 2.0이 이미 설치되어 있다면 구독자는 이 ClickOnce 배포 사이트에서 응용 프로그램을 다운로드 및 설치하고 외부 위치에서 VPN(가상 사설망)을 통해 원격으로 구독을 초기화할 수 있습니다. ClickOnce는 웹 사이트에서 서비스 업데이트를 전달할 수도 있습니다. ClickOnce 배포에 대한 자세한 내용은 Visual Studio 2005 설명서에서 “ClickOnce 배포 개요” 항목을 참조하십시오.

이 예제를 설치 및 실행하는 방법에 대한 단계별 지침은 판매 주문 병합 복제 예제 추가 정보을 참조하십시오.

사용자 인터페이스 요소

판매 주문 예제는 다음 사용자 인터페이스 요소를 구현합니다.

요소 이름 설명

Sales Orders

기본 사용자 인터페이스 요소이며 응용 프로그램의 진입점입니다. 판매 직원은 이 폼의 Customer 콤보 상자에서 고객을 선택하고 Order 콤보 상자에서 주문을 선택하여 주문 관련 작업을 수행할 수 있습니다. Edit 단추를 클릭하면 선택한 주문이 Edit Order 폼에 편집할 수 있도록 표시됩니다. New 단추를 클릭하면 빈 Edit Order 폼이 표시됩니다.

Edit Order

판매 직원은 이 폼을 사용하여 주문을 편집할 수 있습니다. 라인 항목은 Order Items 표에서 편집 가능하며, Add 단추를 클릭하면 새 항목을 표에 추가하여 저장할 수 있습니다. 표에서 항목을 선택하고 Delete 단추를 클릭하여 제거할 수 있습니다. 주문이 완료되면 Save 단추를 클릭하여 변경 내용을 데이터베이스에 커밋합니다.

Synchronize Sales Data

이 폼은 구독을 초기화, 동기화 또는 다시 초기화하기 위해 호출됩니다. 병합 에이전트의 상태 메시지는 Synchronization Status 필드에 표시되며 진행률 표시줄을 통해 완료 비율이 나타납니다.

Merge Subscriber Monitor

이 폼은 별도의 어셈블리에 구현됩니다. 이 폼은 Advanced Options 메뉴에서 호출되며 MergeSubscriberMonitor를 사용하여 구독 정보를 표시합니다. 자세한 내용은 구독자 모니터 예제 사용을 참조하십시오.

Web Synchronization Options

이 폼은 Advanced Options 메뉴에서 Web Synchronization Options를 선택하면 호출되며 구독에 대한 웹 동기화 설정을 관리하는 데 사용됩니다. 응용 프로그램에서 이러한 설정을 관리하는 대신 MergePullSubscription 개체를 사용하여 구독 메타데이터에 웹 동기화 옵션을 저장하고 여기에서 웹 동기화 옵션을 검색합니다. 이 예제에서는 SSL 연결을 통해 HTTP 기본 인증을 사용하여 웹 서버에 전달된 Windows 로그인 및 암호를 제공해야 합니다. 자세한 내용은 이 항목의 뒷부분에 있는 "예제 고려 사항" 섹션의 "웹 동기화"를 참조하십시오.

Logon User

이 폼은 구독이 만들어질 때 호출됩니다. CreateSyncAgentByDefaulttrue로 설정하여 구독을 만드는 경우 Mergepullsubscription 개체에 유효한 Windows 로그인 및 암호를 제공해야 합니다. 이렇게 해야 하는 이유는 웹 동기화 설정을 저장하기 위해 생성된 에이전트 관련 메타데이터가 있어야 하기 때문입니다. CreateSyncAgentByDefaultfalse인 경우 에이전트 작업이 생성되지 않으며 웹 동기화 및 기타 구독 메타데이터는 응용 프로그램에서 유지 관리해야 합니다. 자세한 내용은 이 항목의 뒷부분에 있는 "예제 고려 사항" 섹션의 "웹 동기화"를 참조하십시오. SQL Server Express 구독자의 경우 이 버전이 SQL Server 에이전트를 지원하지 않고 에이전트 작업 자체가 만들어지지 않지만 메타데이터는 여전히 생성됩니다.

Synchronize 메뉴

이 메뉴의 항목은 동기화 세션을 시작하며, 연결 시 동기화를 설정합니다.

Advanced Options 메뉴

이 메뉴의 항목은 구독을 다시 초기화하고 웹 동기화를 설정하며 Merge Subscriber Monitor 폼을 표시합니다.

예제 고려 사항

이 섹션에서는 디자인 고려 사항, 타협할 부분, 이 예제에 존재하는 잠재적 문제에 대해 설명합니다.

SQL Server Compact 구독자 지원

복제 토폴로지의 기본적인 디자인 고려 사항은 게시의 SQL Server Compact 3.5 SP1 구독자 지원입니다. SQL Server Compact 3.5 SP1은 문자 모드 데이터 스냅숏만 지원하므로 다른 SQL Server 버전을 실행하는 모든 구독자에서 사용 가능한 기본 모드 스냅숏을 사용할 때에는 발생하지 않는 추가 제한 사항이 게시에 적용됩니다. 이러한 제한 사항에는 다음이 포함됩니다.

  • 스냅숏 적용 전과 후에 Transact-SQL 스크립트 실행. 이렇게 하면 런타임에 SMO(SQL Server Management Objects)를 로드할 필요 없이 구독자에서 Transact-SQL을 사용하여 로컬 데이터베이스 및 사용자 정의 형식 또는 스키마를 만들 수 있습니다.
  • 계산 열. AdventureWorks 판매 주문 스키마의 몇 가지 키 열을 복제할 수 없습니다. 이러한 열에는 SalesOrderDetail 테이블LineTotalSalesOrderHeader 테이블TotalDueSalesOrderNumber가 포함됩니다. 응용 프로그램은 자체 계산을 수행하여 이 정보를 사용자에게 표시해야 합니다.
  • 논리 레코드는 SalesOrderDetail 테이블의 판매 항목이 속한 SalesOrderHeader 테이블의 행 없이 이러한 항목이 게시자로 전송되지 않도록 확인하는 데 사용될 수 있습니다. 그러나 SQL Server Compact 3.5 SP1 구독자를 지원할 때에는 논리 레코드를 사용할 수 없습니다.

병합 복제 성능

AdventureWorks 예제 데이터베이스는 SQL Server를 사용하여 구현되는 다양한 프로덕션 데이터베이스를 에뮬레이트하도록 디자인되었기 때문에 스키마가 상당히 복잡하며 데이터가 높은 수준으로 정규화됩니다. 이러한 수준의 정규화는 인덱스 종속 작업은 향상시키지만 병합 복제 성능에는 부정적인 영향을 미칠 수 있습니다. 이 예제에서는 매개 변수가 있는 행 필터를 Employee 테이블에서 SalesOrderDetail 테이블로 확장하기 위해 5개의 조인 필터가 필요합니다. 복제에는 사전 계산 파티션과 같이 매개 변수가 있는 행 필터의 성능을 최적화하는 기능이 포함되어 있습니다. 그러나 병합 복제 성능이 문제가 되는 상황에서는 게시된 테이블을 비정규화하여 조인 필터의 수를 3개 이하로 줄여야 합니다. 자세한 내용은 병합 복제 성능 향상을 참조하십시오.

웹 동기화

예제의 아키텍처는 사용자가 게시자에 대한 직접 연결을 사용하여 웹 동기화와 일반 동기화 사이에서 매끄럽게 전환할 수 있도록 고안되었습니다. 예제에서는 MergePullSubscription 클래스를 사용하여 웹 동기화에 필요한 속성을 안전하게 저장 및 검색하며 이는 응용 프로그램 논리를 간소화하는 역할도 합니다. MergePullSubscription 클래스에서 이 기능을 가져오려면 CreateSyncAgentByDefault 속성을 true로 설정하여 구독을 만들어야 합니다. 이렇게 하면 MergePullSubscription 개체에서 이러한 속성을 설정할 수 있게 해주는 MSsubscription_properties 테이블의 행과 함께 구독에 대한 에이전트 작업도 생성됩니다. 응용 프로그램은 항상 직접 동기화를 시작하고 SQL Server 에이전트를 사용하지 않으므로 이 작업은 사용되지 않습니다. SQL Server Express 구독자에 대해서는 에이전트 작업이 만들어지지 않지만(SQL Server 에이전트가 이 버전에서 지원되지 않으므로) 필요한 메타데이터는 여전히 생성됩니다. Create 메서드가 호출되고 CreateSyncAgentByDefaulttrue이면 SynchronizationAgentProcessSecurity 정보를 제공해야 합니다. 이러한 이유로 구독이 만들어질 때 Logon User 폼이 표시됩니다. 이러한 자격 증명은 SQL Server에 의해 저장되지만 사용되지는 않습니다. 대신 예제를 실행 중인 사용자 컨텍스트에서 병합 에이전트가 시작됩니다.

예제는 웹 동기화 중에 HTTP 기본 인증을 사용하는 웹 서버에 대한 구독자 연결을 제외한 모든 서버 연결에서 통합 인증을 사용하도록 디자인되었습니다. 웹 동기화에는 통합 인증을 사용하지 않는 것이 좋습니다. 실제 시나리오에서 웹 동기화에 사용되는 IIS 서버는 게시자 또는 배포자 이외의 컴퓨터에 배포됩니다. Windows 가장의 제약으로 인해 이는 웹 서버에 제공되는 기본 인증 자격 증명이 게시자의 로그인과 동일할 것을 요구합니다.

참고

웹 동기화에서는 업로드 전용 또는 다운로드 전용 동기화는 지원되지 않습니다. 웹 동기화를 설정하면 Only Upload Data 메뉴 항목이 해제됩니다.

사용자 정의 형식

AdventureWorks에는 몇 가지의 사용자 정의 형식이 포함되어 있으며, 구독자에 기본 형식으로 복제됩니다. 이러한 형식이 CLR(공용 언어 런타임) 형식인 경우 CLR 형식으로 복제됩니다.

게시된 AdventureWorks 개체

다음 AdventureWorks 테이블과 데이터 액세스 저장 프로시저, 사용자 정의 함수는 병합 복제 토폴로지에 아티클로 게시됩니다.

개체 이름 개체 유형 주의

Customer

테이블

자세한 내용은 Customer 테이블(AdventureWorks)을 참조하십시오.

CustomerAddress

테이블

자세한 내용은 CustomerAddress 테이블(AdventureWorks)을 참조하십시오.

Employee

테이블

다운로드 전용 아티클입니다. LoginID 기반의 매개 변수가 있는 쿼리는 각 판매 직원의 구독에 대한 데이터를 분할하는 데 사용됩니다. 자세한 내용은 Employee 테이블(AdventureWorks)을 참조하십시오.

Product

테이블

다운로드 전용 아티클입니다. 자세한 내용은 Product 테이블(AdventureWorks)을 참조하십시오.

ProductCategory

테이블

다운로드 전용 아티클입니다. 자세한 내용은 ProductCategory 테이블(AdventureWorks)을 참조하십시오.

ProductDescription

테이블

다운로드 전용 아티클입니다. 자세한 내용은 ProductDescription 테이블(AdventureWorks)을 참조하십시오.

ProductInventory

테이블

자세한 내용은 ProductInventory 테이블(AdventureWorks)을 참조하십시오.

ProductListPriceHistory

테이블

다운로드 전용 아티클입니다. 자세한 내용은 ProductListPriceHistory 테이블(AdventureWorks)을 참조하십시오.

ProductModel

테이블

다운로드 전용 아티클입니다. 자세한 내용은 ProductModel 테이블(AdventureWorks)을 참조하십시오.

ProductModelProductDescriptionCulture

테이블

다운로드 전용 아티클입니다. 자세한 내용은 ProductModelProductDescriptionCulture 테이블(AdventureWorks)을 참조하십시오.

ProductSubcategory

테이블

다운로드 전용 아티클입니다. 자세한 내용은 ProductSubcategory 테이블(AdventureWorks)을 참조하십시오.

SalesOrderDetail

테이블

자세한 내용은 SalesOrderDetail 테이블(AdventureWorks)을 참조하십시오.

SalesOrderHeader

테이블

자세한 내용은 SalesOrderHeader 테이블(AdventureWorks)을 참조하십시오.

ShipMethod

테이블

다운로드 전용 아티클입니다. 자세한 내용은 ShipMethod 테이블(AdventureWorks)을 참조하십시오.

SpecialOffer

테이블

다운로드 전용 아티클입니다. 자세한 내용은 SpecialOffer 테이블(AdventureWorks)을 참조하십시오.

Store

테이블

자세한 내용은 Store 테이블(AdventureWorks)을 참조하십시오.

StoreContact

테이블

자세한 내용은 StoreContact 테이블(AdventureWorks)을 참조하십시오.

ufnGetAccountingStartDate

스칼라 반환 사용자 정의 함수

AdventureWorks 함수입니다.

ufnGetAccountingEndDate

테이블 반환 사용자 정의 함수

AdventureWorks 함수입니다.

udfGetStatusTextTable

사용자 정의 함수

상태 값에 대한 텍스트 설명을 반환하는 테이블 반환 함수입니다.

uspSalesOrderDetailDeleteCommand

저장 프로시저

SalesOrderDetail 테이블에서 행을 삭제할 때 응용 프로그램에서 사용됩니다.

uspSalesOrderDetailInsertCommand

저장 프로시저

SalesOrderDetail 테이블에서 행을 삽입할 때 응용 프로그램에서 사용됩니다.

uspSalesOrderDetailSelectCommand

저장 프로시저

SalesOrderDetail 테이블(AdventureWorks)을 쿼리할 때 응용 프로그램에서 사용됩니다.

uspSalesOrderDetailUpdateCommand

저장 프로시저

SalesOrderDetail 테이블을 업데이트할 때 응용 프로그램에서 사용됩니다.

uspSalesOrderHeaderDeleteCommand

저장 프로시저

SalesOrderHeader 테이블(AdventureWorks)에서 행을 삭제할 때 응용 프로그램에서 사용됩니다.

uspSalesOrderHeaderInsertCommand

저장 프로시저

SalesOrderHeader 테이블에서 행을 삽입할 때 응용 프로그램에서 사용됩니다.

uspSalesOrderHeaderSelectCommand

저장 프로시저

SalesOrderHeader 테이블(AdventureWorks)을 쿼리할 때 응용 프로그램에서 사용됩니다.

uspSalesOrderHeaderUpdateCommand

저장 프로시저

SalesOrderHeader 테이블을 업데이트할 때 응용 프로그램에서 사용됩니다.

uspStoreSelectCommand

저장 프로시저

지정된 대리점에 대한 고객을 쿼리할 때 응용 프로그램에서 사용됩니다.

uspCheckProductInventory

저장 프로시저

주문 상태를 이월 주문으로 변경하고 기록된 메시지를 반환하기 위해 사용자 지정 비즈니스 논리에서 사용됩니다.

참고 항목

개념

판매 주문 예제 시나리오

도움말 및 정보

SQL Server 2008 지원 받기