Subscription.SynchronizationAgentProcessSecurity Propiedad

Definición

Obtiene el contexto de seguridad que se usa para especificar la cuenta de Microsoft Windows con la que se ejecuta el trabajo del agente de sincronización para sincronizar la suscripción.

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

Valor de propiedad

Objeto IProcessSecurityContext que representa una cuenta de Windows.

Ejemplos

           // 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

Comentarios

Debe especificar la información de la cuenta de Windows mediante la IProcessSecurityContext interfaz devuelta por la SynchronizationAgentProcessSecurity propiedad . Esto no es necesario si un miembro del rol fijo de servidor sysadmin crea la suscripción en el publicador.

El agente de sincronización de una suscripción de inserción siempre se conecta localmente al distribuidor mediante las credenciales de autenticación de Windows proporcionadas mediante la SynchronizationAgentProcessSecurity propiedad . Para obtener información sobre las conexiones que realizan los agentes y los permisos necesarios para esas conexiones, consulte Modelo de seguridad del agente de replicación.

Al configurar un publicador con un distribuidor remoto, los valores proporcionados para todos los parámetros, incluidos SynchronizationAgentProcessSecurity, se envían al distribuidor como texto sin formato. Debe cifrar la conexión entre el publicador y su distribuidor remoto antes de llamar al método Create . Para obtener más información, vea Cifrar las conexiones a SQL Server.

Los SynchronizationAgentProcessSecurity miembros del rol fijo de servidor sysadmin solo pueden recuperar la propiedad en el publicador, por miembros del rol fijo de base de datos db_owner en la base de datos de publicación o por el usuario que creó la suscripción.

La SynchronizationAgentProcessSecurity propiedad solo se puede establecer por miembros del rol fijo de servidor sysadmin en el publicador o por miembros del rol fijo de base de datos db_owner en la base de datos de publicación.

Recuperar la SynchronizationAgentProcessSecurity propiedad es equivalente a ejecutar sp_helpsubscription o sp_helpmergesubscription.

Establecer propiedades en la interfaz devuelta IProcessSecurityContext equivale a ejecutar sp_addsubscription sp_addmergesubscription, sp_changesubscription o sp_changemergesubscription.

Se aplica a

Consulte también