다음을 통해 공유


Subscription.SynchronizationAgentProcessSecurity 속성

정의

동기화 에이전트 작업이 구독을 동기화하기 위해 실행되는 Microsoft Windows 계정을 지정하는 데 사용되는 보안 컨텍스트를 가져옵니다.

public:
 property Microsoft::SqlServer::Replication::IProcessSecurityContext ^ SynchronizationAgentProcessSecurity { Microsoft::SqlServer::Replication::IProcessSecurityContext ^ get(); };
public Microsoft.SqlServer.Replication.IProcessSecurityContext SynchronizationAgentProcessSecurity { get; }
member this.SynchronizationAgentProcessSecurity : Microsoft.SqlServer.Replication.IProcessSecurityContext
Public ReadOnly Property SynchronizationAgentProcessSecurity As IProcessSecurityContext

속성 값

Windows 계정을 나타내는 IProcessSecurityContext 개체입니다.

예제

           // Define the Publisher, publication, and databases.
           string publicationName = "AdvWorksProductTran";
           string publisherName = publisherInstance;
           string subscriberName = subscriberInstance;
           string subscriptionDbName = "AdventureWorks2012Replica";
           string publicationDbName = "AdventureWorks2012";

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

           // Create the objects that we need.
           TransPublication publication;
           TransSubscription subscription;

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

               // Ensure that the publication exists and that 
               // it supports push subscriptions.
               publication = new TransPublication();
               publication.Name = publicationName;
               publication.DatabaseName = publicationDbName;
               publication.ConnectionContext = conn;

               if (publication.IsExistingObject)
               {
                   if ((publication.Attributes & PublicationAttributes.AllowPush) == 0)
                   {
                       publication.Attributes |= PublicationAttributes.AllowPush;
                   }

                   // Define the push subscription.
                   subscription = new TransSubscription();
                   subscription.ConnectionContext = conn;
                   subscription.SubscriberName = subscriberName;
                   subscription.PublicationName = publicationName;
                   subscription.DatabaseName = publicationDbName;
                   subscription.SubscriptionDBName = subscriptionDbName;

                   // Specify the Windows login credentials for the Distribution Agent job.
                   subscription.SynchronizationAgentProcessSecurity.Login = winLogin;
                   subscription.SynchronizationAgentProcessSecurity.Password = winPassword;

                   // By default, subscriptions to transactional publications are synchronized 
                   // continuously, but in this case we only want to synchronize on demand.
                   subscription.AgentSchedule.FrequencyType = ScheduleFrequencyType.OnDemand;

                   // Create the push subscription.
                   subscription.Create();
               }
               else
               {
                   // Do something here if the publication does not exist.
                   throw new ApplicationException(String.Format(
                       "The publication '{0}' does not exist on {1}.",
                       publicationName, publisherName));
               }
           }
           catch (Exception ex)
           {
               // Implement the appropriate error handling here.
               throw new ApplicationException(String.Format(
                   "The subscription to {0} could not be created.", publicationName), ex);
           }
           finally
           {
               conn.Disconnect();
           }
' Define the Publisher, publication, and databases.
Dim publicationName As String = "AdvWorksProductTran"
Dim publisherName As String = publisherInstance
Dim subscriberName As String = subscriberInstance
Dim subscriptionDbName As String = "AdventureWorks2012Replica"
Dim publicationDbName As String = "AdventureWorks2012"

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

' Create the objects that we need.
Dim publication As TransPublication
Dim subscription As TransSubscription

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

    ' Ensure that the publication exists and that 
    ' it supports push subscriptions.
    publication = New TransPublication()
    publication.Name = publicationName
    publication.DatabaseName = publicationDbName
    publication.ConnectionContext = conn

    If publication.IsExistingObject Then
        If (publication.Attributes And PublicationAttributes.AllowPush) = 0 Then
            publication.Attributes = publication.Attributes _
            Or PublicationAttributes.AllowPush
        End If

        ' Define the push subscription.
        subscription = New TransSubscription()
        subscription.ConnectionContext = conn
        subscription.SubscriberName = subscriberName
        subscription.PublicationName = publicationName
        subscription.DatabaseName = publicationDbName
        subscription.SubscriptionDBName = subscriptionDbName

        ' Specify the Windows login credentials for the Distribution Agent job.
        subscription.SynchronizationAgentProcessSecurity.Login = winLogin
        subscription.SynchronizationAgentProcessSecurity.Password = winPassword

        ' By default, subscriptions to transactional publications are synchronized 
        ' continuously, but in this case we only want to synchronize on demand.
        subscription.AgentSchedule.FrequencyType = ScheduleFrequencyType.OnDemand

        ' Create the push subscription.
        subscription.Create()
    Else
        ' Do something here if the publication does not exist.
        Throw New ApplicationException(String.Format( _
         "The publication '{0}' does not exist on {1}.", _
         publicationName, publisherName))
    End If

Catch ex As Exception
    ' Implement the appropriate error handling here.
    Throw New ApplicationException(String.Format( _
        "The subscription to {0} could not be created.", publicationName), ex)
Finally
    conn.Disconnect()
End Try

설명

속성에서 반환 SynchronizationAgentProcessSecurity 된 인터페이스를 IProcessSecurityContext 사용하여 Windows 계정 정보를 지정해야 합니다. 게시자에서 sysadmin 고정 서버 역할의 멤버가 구독을 만드는 경우에는 이 작업이 필요하지 않습니다.

푸시 구독에 대한 동기화 에이전트는 항상 속성을 사용하여 제공된 Windows 인증 자격 증명을 사용하여 배포자에 로컬로 SynchronizationAgentProcessSecurity 연결됩니다. 에이전트가 수행하는 연결 및 해당 연결에 필요한 권한에 대한 자세한 내용은 복제 에이전트 보안 모델을 참조하세요.

원격 배포자를 사용하여 게시자를 구성할 때 를 비롯한 SynchronizationAgentProcessSecurity모든 매개 변수에 제공된 값은 일반 텍스트로 배포자로 전송됩니다. Create 메서드를 호출하기 전에 게시자와 해당 원격 배포자 간 연결을 암호화해야 합니다. 자세한 내용은 SQL Server 연결 암호화를 참조하십시오.

속성은 SynchronizationAgentProcessSecurity 게시자에서 sysadmin 고정 서버 역할의 멤버, 게시 데이터베이스에서 db_owner 고정 데이터베이스 역할의 멤버 또는 구독을 만든 사용자가 검색할 수 있습니다.

속성은 SynchronizationAgentProcessSecurity 게시자에서 sysadmin 고정 서버 역할의 멤버 또는 게시 데이터베이스의 db_owner 고정 데이터베이스 역할의 멤버에 의해서만 설정할 수 있습니다.

속성을 검색하는 SynchronizationAgentProcessSecurity 것은 sp_helpsubscription 또는 sp_helpmergesubscription 실행하는 것과 같습니다.

반환 IProcessSecurityContext 된 인터페이스에서 속성을 설정하는 것은 sp_addsubscription sp_addmergesubscription, sp_changesubscription 또는 sp_changemergesubscription 실행하는 것과 같습니다.

적용 대상

추가 정보