SQL Server 이외 구독자에 대한 구독 만들기Create a Subscription for a Non-SQL Server Subscriber

이 항목에서는 SQL Server 2017SQL Server 2017 또는 SQL Server Management StudioSQL Server Management Studio 을 사용하여 Transact-SQLTransact-SQL에서 SQL Server 이외 구독자에 대한 구독을 만드는 방법에 대해 설명합니다.This topic describes how to create a subscription for a non-SQL Server Subscriber in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL. 트랜잭션 복제와 스냅숏 복제는 SQL ServerSQL Server 이외 구독자로의 데이터 게시를 지원합니다.Transactional and snapshot replication support publishing data to non- SQL ServerSQL Server Subscribers. 지원되는 구독자 플랫폼에 대한 자세한 내용은 Non-SQL Server Subscribers에서 SQL Server 이외 구독자에 대한 구독을 만드는 방법에 대해 설명합니다.For information about supported Subscriber platforms, see Non-SQL Server Subscribers.

항목 내용In This Topic

SQL Server Management Studio 사용 Using SQL Server Management Studio

SQL ServerSQL Server 이외 구독자에 대한 구독을 만들려면 다음을 수행하세요.To create a subscription for a non- SQL ServerSQL Server Subscriber:

  1. SQL ServerSQL Server 배포자에 적절한 클라이언트 소프트웨어 및 OLE DB 공급자를 설치하고 구성합니다.Install and configure the appropriate client software and OLE DB provider(s) on the SQL ServerSQL Server Distributor. 자세한 내용은 Oracle SubscribersIBM DB2 Subscribers를 참조하세요.For more information, see Oracle Subscribers and IBM DB2 Subscribers.

  2. 새 게시 마법사를 사용하여 게시를 만듭니다.Create a publication using the New Publication Wizard. 게시를 만드는 방법에 대한 자세한 내용은 게시 만들기Oracle 데이터베이스에서 게시 만들기를 참조하세요.For more information about creating publications, see Create a Publication and Create a Publication from an Oracle Database. 새 게시 마법사에서 다음 옵션을 지정합니다.Specify the following options in the New Publication Wizard:

    • 게시 유형 페이지에서 스냅숏 게시 또는 트랜잭션 게시를 선택합니다.On the Publication Type page, select Snapshot publication or Transactional publication.

    • 스냅숏 에이전트 페이지에서 즉시 스냅숏 만들기의 선택을 취소합니다.On the Snapshot Agent page, clear Create a snapshot immediately.

      스냅숏 에이전트에서 SQL ServerSQL Server 이외 구독자에 적합한 스냅숏 및 초기화 스크립트를 생성하려면 SQL ServerSQL Server 이외 구독자에 대한 게시를 설정한 다음 스냅숏을 만듭니다.You create the snapshot after the publication is enabled for non- SQL ServerSQL Server Subscribers to ensure that the Snapshot Agent generates a snapshot and initialization scripts that are suitable for non- SQL ServerSQL Server Subscribers.

  3. 게시 속성 - <PublicationName> 대화 상자를 사용하여 SQL ServerSQL Server 이외 구독자에 대한 게시를 사용하도록 설정합니다.Enable the publication for non- SQL ServerSQL Server Subscribers using the Publication Properties - <PublicationName> dialog box. 이 단계에 대한 자세한 내용은 Publication Properties, Subscription Options 을 참조하세요.See Publication Properties, Subscription Options for more information about this step.

  4. 새 구독 마법사를 사용하여 구독을 만듭니다.Create a subscription using the New Subscription Wizard. 이 항목에는 이 단계에 대한 자세한 정보를 제공합니다.This topic provides more information about this step.

  5. (옵션) pre_creation_cmd 아티클 속성을 변경하여 구독자에서 테이블을 유지합니다.(Optional) Change the pre_creation_cmd article property to retain tables at the Subscriber. 이 항목에는 이 단계에 대한 자세한 정보를 제공합니다.This topic provides more information about this step.

  6. 게시에 대한 스냅숏을 생성합니다.Generate a snapshot for the publication. 이 항목에는 이 단계에 대한 자세한 정보를 제공합니다.This topic provides more information about this step.

  7. 구독을 동기화합니다.Synchronize the subscription. 자세한 내용은 Synchronize a Push Subscription을 참조하세요.For more information, see Synchronize a Push Subscription.

SQL Server 이외 구독자에 대한 게시를 설정하려면To enable a publication for non-SQL Server Subscribers

  1. SQL Server Management StudioSQL Server Management Studio에서 게시자에 연결한 다음 해당 서버 노드를 확장합니다.Connect to the Publisher in SQL Server Management StudioSQL Server Management Studio, and then expand the server node.

  2. 복제 폴더를 확장한 다음 로컬 게시 폴더를 확장합니다.Expand the Replication folder, and then expand the Local Publications folder.

  3. 게시를 마우스 오른쪽 단추로 클릭한 다음 속성을 클릭합니다.Right-click the publication, and then click Properties.

  4. 구독 옵션 페이지에서 SQL Server 이외 구독자 허용 옵션에 대해 True값을 선택합니다.On the Subscription Options page, select a value of True for the option Allow non-SQL Server Subscribers. 이 옵션을 선택하면 게시가 SQL ServerSQL Server 이외 구독자와 호환되도록 많은 속성이 변경됩니다.Selecting this option changes a number of properties so that the publication is compatible with non- SQL ServerSQL Server Subscribers.

    참고

    True 를 선택하면 pre_creation_cmd 아티클 속성 값이 'drop'으로 설정됩니다.Selecting True sets the value of the pre_creation_cmd article property to 'drop'. 이 설정은 구독자의 테이블이 아티클의 테이블 이름과 일치하는 경우 복제가 구독자의 테이블을 삭제하도록 지정합니다.This setting specifies that replication should drop a table at the Subscriber if it matches the name of the table in the article. 구독자에서 기존 테이블을 계속 유지하려는 경우 각 아티클에 대해 sp_changearticle 저장 프로시저를 사용하고 pre_creation_cmd에 'none' 값을 지정합니다. sp_changearticle @publication= 'MyPublication', @article= 'MyArticle', @property='pre_creation_cmd', @value='none'If you have existing tables at the Subscriber that you want to keep, use the sp_changearticle stored procedure for each article; specify a value 'none' for pre_creation_cmd: sp_changearticle @publication= 'MyPublication', @article= 'MyArticle', @property='pre_creation_cmd', @value='none'.

  5. 확인을 클릭합니다.Click OK. 게시에 대한 새 스냅숏을 만들라는 메시지가 표시됩니다. You will be prompted to create a new snapshot for the publication. 지금 스냅숏을 만들지 않으려면 나중에 다음 "방법" 절차에서 설명한 단계를 사용합니다.If you do not want to create one at this time, use the steps described in the next "how to" procedure at a later time.

SQL Server 이외 구독자에 대한 구독을 만들려면To create a subscription for a non-SQL Server Subscriber

  1. 복제 폴더를 확장한 다음 로컬 게시 폴더를 확장합니다.Expand the Replication folder, and then expand the Local Publications folder.

  2. 적절한 게시를 마우스 오른쪽 단추로 클릭한 다음 새 구독을 클릭합니다.Right-click the appropriate publication, and then click New Subscriptions.

  3. 배포 에이전트 위치 페이지에서 배포자에서 모든 에이전트 실행 을 선택합니다.On the Distribution Agent Location page, ensure Run all agents at the Distributor is selected. SQL ServerSQL Server 이외 구독자는 구독자에서의 에이전트 실행을 지원하지 않습니다.Non- SQL ServerSQL Server Subscribers do not support running agents at the Subscriber.

  4. 구독자 페이지에서 구독자 추가 를 클릭한 다음 SQL Server 이외 구독자 추가를 클릭합니다.On the Subscribers page, click Add Subscriber and then click Add Non-SQL Server Subscriber.

  5. SQL Server 이외 구독자 추가 대화 상자에서 구독자 유형을 선택합니다.In the Add Non-SQL Server Subscriber dialog box, select the type of Subscriber.

  6. 데이터 원본 이름에 다음과 같이 값을 입력합니다.Enter a value in Data source name:

    • Oracle의 경우 구성한 TNS(Transparent Network Substrate) 이름을 입력합니다.For Oracle, this is the transparent network substrate (TNS) name you configured.

    • IBM의 경우 아무 이름이나 입력할 수 있습니다.For IBM, this can be any name. 일반적으로 구독자의 네트워크 주소를 지정합니다.It is typical to specify the network address of the Subscriber.

      이 단계에서 입력한 데이터 원본 이름과 9단계에서 지정한 자격 증명은 이 마법사에서 확인하지 않고The data source name entered in this step and the credentials specified in step 9 are not validated by this wizard. 구독에 대해 배포 에이전트가 실행되어야 복제에서 사용됩니다.They are not used by replication until the Distribution Agent runs for the subscription. 클라이언트 도구(예: Oracle의 경우 sqlplus )를 통해 구독자에 연결하여 모든 값이 테스트되었는지 확인합니다.Ensure that all values have been tested by connecting to the Subscriber using a client tool (such as sqlplus for Oracle). 자세한 내용은 Oracle SubscribersIBM DB2 Subscribers를 참조하세요.For more information, see Oracle Subscribers and IBM DB2 Subscribers.

  7. 확인을 클릭합니다.Click OK. 마법사의 구독자 페이지에서 이제 구독자가 구독자 열에 표시되며 구독 데이터베이스 열에서는 읽기 전용 (기본 대상) 입니다. On the Subscribers page of the wizard, the Subscriber is now displayed in the Subscriber column with a read-only (default destination) in the Subscription Database column:

    • Oracle의 경우 한 대의 서버에 데이터베이스가 하나만 있으므로 데이터베이스를 지정할 필요가 없습니다.For Oracle, a server has at most one database, so it is not necessary to specify the database.

    • IBM DB2의 경우 데이터베이스가 DB2 연결 문자열의 Initial Catalog 속성에 지정됩니다. 이 연결 문자열은 이 과정의 뒷부분에서 설명하는 추가 연결 옵션 필드에 입력할 수 있습니다.For IBM DB2, the database is specified in the Initial Catalog property of the DB2 connection string, which can be entered in the Additional connection options field described later in this process.

  8. 배포 에이전트 보안 페이지에서 구독자 옆에 있는 속성 단추 (...)를 클릭하여 배포 에이전트 보안 대화 상자에 액세스합니다.On the Distribution Agent Security page, click the properties button () next to the Subscriber to access the Distribution Agent Security dialog box.

  9. 배포 에이전트 보안 대화 상자에서 다음을 수행하세요.In the Distribution Agent Security dialog box:

    • 프로세스 계정, 암호암호 확인 필드에서 배포 에이전트가 실행되고 배포자에 로컬로 연결될 MicrosoftMicrosoft Windows 계정과 암호를 입력합니다.In the Process account, Password, and Confirm password fields, enter the MicrosoftMicrosoft Windows account and password under which the Distribution Agent should run and make local connections to the Distributor.

      계정에는 최소 사용 권한인 배포 데이터베이스에서의 db_owner 고정 데이터베이스 역할의 멤버, PAL(게시 액세스 목록)의 멤버, 스냅숏 공유에 대한 읽기 권한 및 OLE DB 공급자의 설치 디렉터리에 대한 읽기 권한이 필요합니다.The account requires these minimum permissions: member of the db_owner fixed database role in the distribution database; member of the publication access list (PAL); read permissions on the snapshot share; and read permission on the install directory of the OLE DB provider. PAL에 대한 자세한 내용은 게시자 보안 설정을 참조하세요.For more information about the PAL, see Secure the Publisher.

    • 구독자에 연결로그인, 암호암호 확인 필드에서 구독자 연결에 사용할 로그인과 암호를 입력합니다.Under Connect to the Subscriber, in the Login, Password, and Confirm password fields, enter the login and password that should be used to connect to the Subscriber. 이 로그인은 이미 구성되어 있어야 하며 구독 데이터베이스에서 개체를 만들 수 있는 충분한 권한을 갖고 있어야 합니다.This login should already be configured and should have sufficient permissions to create objects in the subscription database.

    • 추가 연결 옵션 필드에서 연결 문자열의 형식으로 구독자에 대한 연결 옵션을 지정합니다. Oracle에서는 추가 옵션이 필요하지 않습니다.In the Additional connection options field, specify any connection options for the Subscriber in the form of a connection string (Oracle does not require additional options). 각 옵션은 세미콜론으로 구분해야 합니다.Each option should be separated by a semi-colon. 다음은 DB2 연결 문자열의 예입니다. 이 예에서는 읽기 쉽도록 줄 바꿈을 넣었습니다.The following is an example of a DB2 connection string (line breaks are for readability):

      Provider=DB2OLEDB;Initial Catalog=MY_SUBSCRIBER_DB;Network Transport Library=TCP;Host CCSID=1252;  
      PC Code Page=1252;Network Address=MY_SUBSCRIBER;Network Port=50000;Package Collection=MY_PKGCOL;  
      Default Schema=MY_SCHEMA;Process Binary as Character=False;Units of Work=RUW;DBMS Platform=DB2/NT;  
      Persist Security Info=False;Connection Pooling=True;  
      

      이 문자열의 옵션 대부분은 구성 중인 DB2 서버와만 관련이 있지만 Process Binary as Character 옵션은 항상 False로 설정해야 합니다.Most of the options in the string are specific to the DB2 server you are configuring, but the Process Binary as Character option should always be set to False. 구독 데이터베이스를 식별하려면 Initial Catalog 옵션 값을 지정해야 합니다.A value is required for the Initial Catalog option to identify the subscription database.

  10. 동기화 일정 페이지에 있는 에이전트 일정 메뉴에서 배포 에이전트에 대한 일정을 선택합니다. 일정은 일반적으로 계속 실행입니다.On the Synchronization Schedule page, select a schedule for the Distribution Agent from the Agent Schedule menu (the schedule is typically Run continuously).

  11. 구독 초기화 페이지에서 구독의 초기화 여부를 지정하고 초기화하는 경우 초기화 시기를 지정합니다.On the Initialize Subscriptions page, specify whether the subscription should be initialized and, if so, when it should be initialized:

    • 개체를 모두 만들고 구독 데이터베이스에 필요한 데이터를 모두 추가한 경우에만 초기화 의 선택을 취소합니다.Clear Initialize only if you have created all objects and added all required data in the subscription database.

    • 이 마법사가 완료된 다음 배포 에이전트가 스냅숏 파일을 구독자에게 전송하게 하려면 초기화 시기 열의 드롭다운 목록에서 즉시 를 선택합니다.Select Immediately from the drop-down list in the Initialize When column to have the Distribution Agent transfer snapshot files to the Subscriber after this wizard is completed. 에이전트가 다음 실행 일정에 파일을 전송하게 하려면 첫 번째 동기화 시 를 선택합니다.Select At first synchronization to have the agent transfer the files the next time it is scheduled to run.

  12. 마법사 동작 페이지에서 필요에 따라 구독을 스크립팅합니다.On the Wizard Actions page, optionally script the subscription. 자세한 내용은 Scripting Replication을 참조하세요.For more information, see Scripting Replication.

구독자에서 테이블을 유지하려면To retain tables at the Subscriber

  • 기본적으로 SQL ServerSQL Server 이외 구독자에 대해 게시를 설정하면 pre_creation_cmd 아티클 속성 값이 'drop'으로 설정됩니다.By default, enabling a publication for non- SQL ServerSQL Server Subscribers sets the value of the pre_creation_cmd article property to 'drop'. 이 설정은 구독자의 테이블이 아티클의 테이블 이름과 일치하는 경우 복제가 구독자의 테이블을 삭제하도록 지정합니다.This setting specifies that replication should drop a table at the Subscriber if it matches the name of the table in the article. 구독자에서 기존 테이블을 계속 유지하려는 경우 각 아티클에 대해 sp_changearticle 저장 프로시저를 사용하고 pre_creation_cmd에 'none' 값을 지정합니다.If you have existing tables at the Subscriber that you want to keep, use the sp_changearticle stored procedure for each article; specify a value 'none' for pre_creation_cmd. sp_changearticle @publication= 'MyPublication', @article= 'MyArticle', @property='pre_creation_cmd', @value='none'입니다.sp_changearticle @publication= 'MyPublication', @article= 'MyArticle', @property='pre_creation_cmd', @value='none'.

게시에 대한 스냅숏을 생성하려면To generate a snapshot for the publication

  1. 복제 폴더를 확장한 다음 로컬 게시 폴더를 확장합니다.Expand the Replication folder, and then expand the Local Publications folder.

  2. 게시를 마우스 오른쪽 단추로 클릭한 다음 스냅숏 에이전트 상태 보기를 클릭합니다.Right-click the publication, and then click View Snapshot Agent Status.

  3. 스냅숏 에이전트 상태 보기 - <게시> 대화 상자에서 시작을 클릭합니다.In the View Snapshot Agent Status - <Publication> dialog box, click Start.

    스냅숏 에이전트에서 스냅숏 생성을 마치면 "[100%] 17개 아티클의 스냅숏이 생성되었습니다"라는 메시지가 표시됩니다.When the Snapshot Agent finishes generating the snapshot, a message is displayed, such as "[100%] A snapshot of 17 article(s) was generated."

Transact-SQL 사용 Using Transact-SQL

복제 저장 프로시저를 사용하여 프로그래밍 방식으로 SQL ServerSQL Server 이외 구독자로의 밀어넣기 구독을 만들 수 있습니다.You can create push subscriptions to non- SQL ServerSQL Server Subscribers programmatically using replication stored procedures.

중요

가능한 경우 런타임 시 사용자에게 보안 자격 증명을 입력하라는 메시지가 표시됩니다.When possible, prompt users to enter security credentials at runtime. 자격 증명을 스크립트 파일에 저장해야 하는 경우에는 파일에 무단으로 액세스하지 못하도록 보안을 설정해야 합니다.If you must store credentials in a script file, you must secure the file to prevent unauthorized access.

SQL Server 이외 구독자로의 트랜잭션 또는 스냅숏 게시에 대한 밀어넣기 구독을 만들려면To create a push subscription for a transactional or snapshot publication to a non-SQL Server Subscriber

  1. 게시자와 배포자 모두에 SQL ServerSQL Server 이외 구독자에 대한 최신 OLE DB 공급자를 설치합니다.Install the most recent OLE DB provider for the non- SQL ServerSQL Server Subscriber at both the Publisher and Distributor. OLE DB 공급자에 대한 복제 요구 사항은 Non-SQL Server Subscribers, Oracle SubscribersIBM DB2 Subscribers를 참조하세요.For the replication requirements for an OLE DB provider, see Non-SQL Server Subscribers, Oracle Subscribers, IBM DB2 Subscribers.

  2. 게시 데이터베이스의 게시자에서 sp_helppublication(Transact-SQL)을 실행하여 게시에서 SQL ServerSQL Server 이외 구독자를 지원하는지 확인합니다.At the Publisher on the publication database, verify that the publication supports non- SQL ServerSQL Server Subscribers by executing sp_helppublication (Transact-SQL).

    • enabled_for_het_sub 값이 1인 경우 SQL ServerSQL Server 이외 구독자가 지원됩니다.If the value of enabled_for_het_sub is 1, non- SQL ServerSQL Server Subscribers are supported.

    • enabled_for_het_sub의 값이 0이면 @propertyenabled_for_het_sub를, @valuetrue를 지정하여 sp_changepublication(Transact-SQL)을 실행합니다.If the value of enabled_for_het_sub is 0, execute sp_changepublication (Transact-SQL), specifying enabled_for_het_sub for @property and true for @value.

      참고

      enabled_for_het_subtrue로 변경하기 전에 게시에 대한 기존 구독을 모두 삭제해야 합니다.Before changing enabled_for_het_sub to true, you must drop any existing subscriptions to the publication. 게시에서 업데이트 구독도 지원하는 경우 enabled_for_het_subtrue 로 설정할 수 없습니다.You cannot set enabled_for_het_sub to true when the publication also supports updating subscriptions. enabled_for_het_sub 변경은 다른 게시 속성에도 영향을 줍니다.Changing enabled_for_het_sub will affect other publication properties. 자세한 내용은 Non-SQL Server Subscribers을(를) 참조하세요.For more information, see Non-SQL Server Subscribers.

  3. 게시 데이터베이스의 게시자에서 sp_addsubscription(Transact-SQL)을 실행합니다.At the Publisher on the publication database, execute sp_addsubscription (Transact-SQL). @publication, @subscriber를 지정하고 @destination_db(기본 대상) 값을, @subscription_typepush 값을, @subscriber_type에 3 값을 지정합니다(OLE DB 공급자 지정).Specify @publication, @subscriber, a value of (default destination) for @destination_db, a value of push for @subscription_type, and a value of 3 for @subscriber_type (specifies an OLE DB provider).

  4. 게시 데이터베이스의 게시자에서 sp_addpushsubscription_agent(Transact-SQL)를 실행합니다.At the Publisher on the publication database, execute sp_addpushsubscription_agent (Transact-SQL). 다음을 지정합니다.Specify the following:

    • 배포자의 배포 에이전트가 @subscriber@publication 매개 변수The @subscriberand @publication parameters.

    • @subscriber_db(기본 대상)A value of (default destination) for @subscriber_db,

    • @subscriber_provider, @subscriber_datasrc, @subscriber_location, @subscriber_provider_string@subscriber_catalogSQL ServerSQL Server 이외 데이터 원본의 속성The properties of the non- SQL ServerSQL Server data source for @subscriber_provider, @subscriber_datasrc, @subscriber_location, @subscriber_provider_string, and @subscriber_catalog.

    • 배포자의 배포 에이전트가 MicrosoftMicrosoft @job_login @job_login 를 지정하고 @job_password를 참조하세요.The MicrosoftMicrosoft Windows credentials under which the Distribution Agent at the Distributor runs for @job_login and @job_password.

      참고

      Windows 통합 인증을 사용하여 만든 연결은 항상 @job_login@job_password에서 SQL Server 이외 구독자에 대한 구독을 만드는 방법에 대해 설명합니다.Connections made using Windows Integrated Authentication always use the Windows credentials specified by @job_login and @job_password. 배포 에이전트는 항상 Windows 통합 인증을 사용하여 배포자에 대한 로컬 연결을 만듭니다.The Distribution Agent always makes the local connection to the Distributor using Windows Integrated Authentication. 기본적으로 에이전트는 Windows 통합 인증을 사용하여 구독자에 연결합니다.By default, the agent will connect to the Subscriber using Windows Integrated Authentication.

    • (선택 사항) @subscriber_security_mode0 값, @subscriber_login@subscriber_password에 OLE DB 공급자 로그인 정보A value of 0 for @subscriber_security_mode and the OLE DB provider login information for @subscriber_login and @subscriber_password.

    • 이 구독에 대한 배포 에이전트 작업 일정.A schedule for the Distribution Agent job for this subscription. 자세한 내용은 Specify Synchronization Schedules을 참조하세요.For more information, see Specify Synchronization Schedules.

    중요

    게시자에서 원격 배포자를 사용하여 밀어넣기 구독을 만드는 경우 job_loginjob_password를 비롯한 모든 매개 변수에 제공된 값이 일반 텍스트로 배포자에게 보내집니다.When creating a push subscription at a Publisher with a remote Distributor, the values supplied for all parameters, including job_login and job_password, are sent to the Distributor as plain text. 이 저장 프로시저를 실행하기 전에 게시자와 해당 원격 배포자 간 연결을 암호화해야 합니다.You should encrypt the connection between the Publisher and its remote Distributor before executing this stored procedure. 자세한 내용은 데이터베이스 엔진에 암호화 연결 사용(SQL Server 구성 관리자)을 참조하세요.For more information, see Enable Encrypted Connections to the Database Engine (SQL Server Configuration Manager).

관련 항목:See Also

IBM DB2 Subscribers IBM DB2 Subscribers
Oracle Subscribers Oracle Subscribers
다른 SQL Server 이외 구독자 Other Non-SQL Server Subscribers
Replication System Stored Procedures Concepts Replication System Stored Procedures Concepts
Replication Security Best Practices Replication Security Best Practices