아티클 속성 보기 및 수정

이 항목에서는 SQL Server Management Studio, Transact-SQL 또는 RMO(복제 관리 개체)를 사용하여 SQL Server 2012 에서 아티클 속성을 보고 수정하는 방법에 대해 설명합니다.

항목 내용

  • 시작하기 전 주의 사항:

    제한 사항

    권장 사항

  • 다음을 사용하여 아티클 속성을 보고 수정하려면

    SQL Server Management Studio

    Transact-SQL

    RMO(복제 관리 개체)

시작하기 전 주의 사항

제한 사항

  • 게시를 만든 다음 일부 속성은 수정할 수 없고, 게시에 대한 구독이 있는 경우에 수정할 수 없는 속성도 있습니다. 수정할 수 없는 속성은 읽기 전용으로 표시됩니다.

권장 사항

맨 위로 이동 링크와 함께 사용되는 화살표 아이콘[Top]

SQL Server Management Studio 사용

Microsoft SQL Server Management Studio 및 복제 모니터에서 사용할 수 있는 게시 속성 - <Publication> 대화 상자에서 아티클 속성을 확인하고 수정할 수 있습니다. 복제 모니터 시작 방법은 복제 모니터 시작를 참조하십시오.

  • 일반 페이지에는 게시 이름 및 설명, 데이터베이스 이름, 게시 유형 및 구독 만료 설정이 포함되어 있습니다.

  • 아티클 페이지는 새 게시 마법사의 아티클 페이지에 해당합니다. 이 페이지를 사용하여 아티클을 추가 및 삭제하고 아티클의 속성 및 열 필터링을 변경할 수 있습니다.

  • 행 필터 페이지는 새 게시 마법사의 테이블 행 필터 페이지에 해당합니다. 이 페이지를 사용하여 모든 게시 유형에 대해 정적 행 필터를 추가, 편집 및 삭제하고 병합 게시에 대해 매개 변수가 있는 행 필터 및 조인 필터를 추가, 편집 및 삭제할 수 있습니다.

  • 스냅숏 페이지를 사용하면 스냅숏의 형식 및 위치, 스냅숏의 압축 여부 및 스냅숏이 적용되기 전과 후에 실행할 스크립트를 지정할 수 있습니다.

  • FTP 스냅숏 페이지(SQL Server 2005 이전 버전을 실행하는 게시자에 대한 병합 게시와 스냅숏 및 트랜잭션 게시의 경우)를 사용하면 구독자가 FTP(파일 전송 프로토콜)를 통해 스냅숏 파일을 다운로드할 수 있는지 여부를 지정할 수 있습니다.

  • FTP 스냅숏 및 인터넷 페이지(SQL Server 2005 이후 버전을 실행하는 게시자에 대한 병합 게시의 경우)를 사용하면 구독자가 FTP를 통해 스냅숏 파일을 다운로드할 수 있는지 여부와 구독자가 HTTPS를 통해 구독을 동기화할 수 있는지 여부를 지정할 수 있습니다.

  • 구독 옵션 페이지를 사용하면 모든 구독에 적용되는 여러 옵션을 설정할 수 있습니다. 사용할 수 있는 옵션은 게시 유형에 따라 달라집니다.

  • 게시 액세스 목록 페이지를 사용하면 게시에 액세스할 수 있는 로그인 및 그룹을 지정할 수 있습니다.

  • 에이전트 보안 페이지를 사용하여 모든 게시에 대한 스냅숏 에이전트, 모든 트랜잭션 게시에 대한 로그 판독기 에이전트, 지연 업데이트 구독을 허용하는 트랜잭션 게시에 대한 큐 판독기 에이전트 등을 실행하고 복제 토폴로지의 컴퓨터에 이러한 에이전트를 연결하는 계정에 대한 설정에 액세스할 수 있습니다.

  • 데이터 파티션 페이지(SQL Server 2005 이후 버전을 실행하는 게시자의 병합 게시의 경우)를 사용하면 매개 변수가 있는 필터가 있는 게시에 대한 구독자가 스냅숏을 사용할 수 없는 경우 스냅숏을 요청할 수 있는지 여부를 지정할 수 있습니다. 또한 하나 이상의 파티션에 대해 스냅숏을 한 번 또는 되풀이되는 일정에 따라 생성할 수 있습니다.

아티클 속성을 보고 수정하려면

  1. 게시 속성 - <Publication> 대화 상자의 아티클 페이지에서 아티클을 선택한 다음 아티클 속성을 클릭합니다.

  2. 속성 변경 내용을 적용할 아티클을 다음과 같이 선택합니다.

    • 선택한 <ObjectType> 아티클 속성 설정을 클릭하여 아티클 속성 - <ObjectName> 대화 상자를 시작합니다. 이 대화 상자에서 속성을 변경하면 아티클 페이지의 개체 창에서 선택한 개체에만 변경 내용이 적용됩니다.

    • 모든 <ObjectType> 아티클 속성 설정을 클릭하여 모든 <ObjectType> 아티클 속성 대화 상자를 시작합니다. 이 대화 상자에서 속성을 변경하면 게시용으로 선택되지 않은 개체를 포함하여 아티클 페이지의 개체 창에 있는 해당 유형의 모든 개체에 변경 내용이 적용됩니다.

      [!참고]

      모든 <ObjectType> 아티클 속성 대화 상자에서 속성을 변경하면 아티클 속성 - <ObjectName> 대화 상자에서 수행된 변경 내용보다 우선 적용됩니다. 예를 들어 특정 개체 유형의 모든 아티클에 대해 여러 기본값을 설정하고 개별 개체에 대해 일부 속성도 설정하려면 먼저 모든 아티클의 기본값을 설정합니다. 그런 다음 개별 개체에 대해 속성을 설정합니다.

  3. 필요한 경우 속성을 수정한 다음 확인을 클릭합니다.

  4. 게시 속성 - <Publication> 대화 상자에서 확인을 클릭합니다.

맨 위로 이동 링크와 함께 사용되는 화살표 아이콘[Top]

Transact-SQL 사용

아티클은 수정할 수 있으며 복제 저장 프로시저를 사용하여 프로그래밍 방식으로 해당 속성을 반환할 수 있습니다. 사용되는 저장 프로시저는 아티클이 속한 게시 유형에 따라 달라집니다.

스냅숏 또는 트랜잭션 게시에 속한 아티클의 속성을 보려면

  1. sp_helparticle을 실행하고 @publication 매개 변수에 게시의 이름을, @article 매개 변수에 아티클의 이름을 지정합니다. @article을 지정하지 않으면 게시의 모든 아티클에 대한 정보가 반환됩니다.

  2. 테이블 아티클에 대해 sp_helparticlecolumns를 실행하여 기본 테이블에서 사용할 수 있는 모든 열을 나열합니다.

스냅숏 또는 트랜잭션 게시에 속한 아티클의 속성을 수정하려면

  • sp_changearticle을 실행하고 @property 매개 변수에 변경되는 아티클 속성을, @value 매개 변수에 이 속성의 새 값을 지정합니다.

    [!참고]

    변경으로 인해 새 스냅숏을 생성해야 하는 경우 @force_invalidate_snapshot1 값을 지정해야 하며, 변경으로 인해 구독자를 다시 초기화해야 하는 경우 @force_reinit_subscription1 값을 지정해야 합니다. 변경 시 새 스냅숏 또는 다시 초기화가 필요한 속성에 대해서는 게시 및 아티클 속성 변경을 참조하십시오.

병합 게시에 속한 아티클의 속성을 보려면

  1. sp_helpmergearticle을 실행하고 @publication 매개 변수에 게시의 이름을, @article 매개 변수에 아티클의 이름을 지정합니다. 이러한 매개 변수를 지정하지 않으면 게시 또는 게시자에 있는 모든 아티클에 대한 정보가 반환됩니다.

  2. 테이블 아티클에 대해 sp_helpmergearticlecolumn을 실행하여 기본 테이블에서 사용할 수 있는 모든 열을 나열합니다.

병합 게시에 속한 아티클의 속성을 수정하려면

  • sp_changemergearticle을 실행하고 @property 매개 변수에 변경되는 아티클 속성을, @value 매개 변수에 이 속성의 새 값을 지정합니다.

    [!참고]

    변경으로 인해 새 스냅숏을 생성해야 하는 경우 @force_invalidate_snapshot1 값을 지정해야 하며, 변경으로 인해 구독자를 다시 초기화해야 하는 경우 @force_reinit_subscription1 값을 지정해야 합니다. 변경 시 새 스냅숏 또는 다시 초기화가 필요한 속성에 대해서는 게시 및 아티클 속성 변경을 참조하십시오.

예(Transact-SQL)

이 트랜잭션 복제 예에서는 게시된 아티클의 속성을 반환합니다.

DECLARE @publication AS sysname;
SET @publication = N'AdvWorksProductTran';

USE [AdventureWorks2012]
EXEC sp_helparticle
  @publication = @publication;
GO

이 트랜잭션 복제 예에서는 게시된 아티클에 대한 스키마 옵션을 변경합니다.

DECLARE @publication AS sysname;
DECLARE @article AS sysname;
DECLARE @option AS int;
SET @publication = N'AdvWorksProductTran';
SET @article = N'Product';
SET @option = (SELECT CAST(0x0000000002030073 AS int));

-- Change the schema options to replicate schema with XML.
USE [AdventureWorks2012]
EXEC sp_changearticle 
  @publication = @publication,
  @article = @article, 
  @property = N'schema_option', 
  @value = @option,
  @force_invalidate_snapshot = 1;
GO

이 병합 복제 예에서는 게시된 아티클의 속성을 반환합니다.

DECLARE @publication AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';

USE [AdventureWorks2012]
EXEC sp_helpmergearticle
  @publication = @publication;
GO

이 병합 복제 예에서는 게시된 아티클에 대한 충돌 검색 설정을 변경합니다.

DECLARE @publication AS sysname;
DECLARE @article AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @article = N'SalesOrderHeader';

-- Enable column-level conflict tracking.
-- Changing this property requires that existing subscriptions
-- be reinitialized and that a new snapshot be generated.
USE [AdventureWorks2012]
EXEC sp_changemergearticle 
  @publication = @publication,
  @article = @article, 
  @property = N'column_tracking', 
  @value = N'true',
  @force_invalidate_snapshot = 1,
  @force_reinit_subscription = 1;
GO

맨 위로 이동 링크와 함께 사용되는 화살표 아이콘[Top]

RMO(복제 관리 개체) 사용

RMO(복제 관리 개체)를 사용하여 프로그래밍 방식으로 아티클을 수정하고 해당 속성에 액세스할 수 있습니다. 아티클 속성을 보거나 수정하는 데 사용되는 RMO 클래스는 아티클이 속한 게시 유형에 따라 달라집니다.

스냅숏 또는 트랜잭션 게시에 속하는 아티클의 속성을 보거나 수정하려면

  1. ServerConnection 클래스를 사용하여 게시자 연결을 만듭니다.

  2. TransArticle 클래스의 인스턴스를 만듭니다.

  3. Name, PublicationNameDatabaseName 속성을 설정합니다.

  4. ConnectionContext 속성에 대해 1단계에서 만든 연결을 설정합니다.

  5. LoadProperties 메서드를 호출하여 개체 속성을 가져옵니다. 이 메서드가 false를 반환하는 경우 3단계에서 아티클 속성이 올바르게 정의되지 않았거나 아티클이 없습니다.

  6. (옵션) 속성을 변경하려면 설정할 수 있는 TransArticle 속성 중 하나에 대해 새 값을 설정합니다.

  7. (옵션) CachePropertyChanges에 대해 true 값을 지정했으면 CommitPropertyChanges 메서드를 호출하여 서버의 변경 내용을 커밋합니다. CachePropertyChanges에 대해 false 값을 지정했으면(기본값) 변경 내용이 즉시 서버로 전송됩니다.

병합 게시에 속하는 아티클의 속성을 보거나 수정하려면

  1. ServerConnection 클래스를 사용하여 게시자 연결을 만듭니다.

  2. MergeArticle 클래스의 인스턴스를 만듭니다.

  3. Name, PublicationNameDatabaseName 속성을 설정합니다.

  4. ConnectionContext 속성에 대해 1단계에서 만든 연결을 설정합니다.

  5. LoadProperties 메서드를 호출하여 개체 속성을 가져옵니다. 이 메서드가 false를 반환하는 경우 3단계에서 아티클 속성이 올바르게 정의되지 않았거나 아티클이 없습니다.

  6. (옵션) 속성을 변경하려면 설정할 수 있는 MergeArticle 속성 중 하나에 대해 새 값을 설정합니다.

  7. (옵션) CachePropertyChanges에 대해 true 값을 지정했으면 CommitPropertyChanges 메서드를 호출하여 서버의 변경 내용을 커밋합니다. CachePropertyChanges에 대해 false 값을 지정했으면(기본값) 변경 내용이 즉시 서버로 전송됩니다.

예(RMO)

다음 예에서는 병합 아티클을 변경하여 아티클에서 사용하는 비즈니스 논리 처리기를 지정합니다.

           // Define the Publisher, publication, and article names.
            string publisherName = publisherInstance;
            string publicationName = "AdvWorksSalesOrdersMerge";
            string publicationDbName = "AdventureWorks2012";
            string articleName = "SalesOrderHeader";
            
            // Set the friendly name of the business logic handler.
            string customLogic = "OrderEntryLogic";

            MergeArticle article = new MergeArticle();
            
            // Create a connection to the Publisher.
            ServerConnection conn = new ServerConnection(publisherName);

            try
            {
                // Connect to the Publisher.
                conn.Connect();

                // Set the required properties for the article.
                article.ConnectionContext = conn;
                article.Name = articleName;
                article.DatabaseName = publicationDbName;
                article.PublicationName = publicationName;

                // Load the article properties.
                if (article.LoadProperties())
                {
                    article.ArticleResolver = customLogic;
                }
                else
                {
                    // Throw an exception of the article does not exist.
                    throw new ApplicationException(String.Format(
                    "{0} is not published in {1}", articleName, publicationName));
                }
                
            }
            catch (Exception ex)
            {
                // Do error handling here and rollback the transaction.
                throw new ApplicationException(String.Format(
                    "The business logic handler {0} could not be associated with " +
                    " the {1} article.",customLogic,articleName), ex);
            }
            finally
            {
                conn.Disconnect();
            }
' Define the Publisher, publication, and article names.
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim publicationDbName As String = "AdventureWorks2012"
Dim articleName As String = "SalesOrderHeader"

' Set the friendly name of the business logic handler.
Dim customLogic As String = "OrderEntryLogic"

Dim article As MergeArticle = New MergeArticle()

' Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)

Try
    ' Connect to the Publisher.
    conn.Connect()

    ' Set the required properties for the article.
    article.ConnectionContext = conn
    article.Name = articleName
    article.DatabaseName = publicationDbName
    article.PublicationName = publicationName

    ' Load the article properties.
    If article.LoadProperties() Then
        article.ArticleResolver = customLogic
    Else
        ' Throw an exception of the article does not exist.
        Throw New ApplicationException(String.Format( _
         "{0} is not published in {1}", articleName, publicationName))
    End If

Catch ex As Exception
    ' Do error handling here and rollback the transaction.
    Throw New ApplicationException(String.Format( _
     "The business logic handler {0} could not be associated with " + _
     " the {1} article.", customLogic, articleName), ex)
Finally
    conn.Disconnect()
End Try

맨 위로 이동 링크와 함께 사용되는 화살표 아이콘[Top]

참고 항목

개념

병합 아티클에 대한 비즈니스 논리 처리기 구현

데이터 및 데이터베이스 개체 게시

게시 및 아티클 속성 변경

복제 시스템 저장 프로시저 개념

고급 병합 복제 충돌 감지 및 해결