Partager via


Subscription.SynchronizationAgentProcessSecurity Propriété

Définition

Obtient le contexte de sécurité utilisé pour spécifier le compte Microsoft Windows sous lequel le travail de l’agent de synchronisation s’exécute pour synchroniser l’abonnement.

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

Valeur de propriété

Objet IProcessSecurityContext qui représente un compte Windows.

Exemples

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

Remarques

Vous devez spécifier les informations de compte Windows à l’aide de l’interface IProcessSecurityContext retournée par la SynchronizationAgentProcessSecurity propriété . Cela n’est pas obligatoire si l’abonnement est créé par un membre du rôle serveur fixe sysadmin sur le serveur de publication.

L’agent de synchronisation d’un abonnement Push se connecte toujours localement au serveur de distribution à l’aide des informations d’identification d’authentification Windows fournies à l’aide de la SynchronizationAgentProcessSecurity propriété . Pour plus d’informations sur les connexions établies par les agents et les autorisations requises pour ces connexions, consultez Modèle de sécurité de l’agent de réplication.

Lors de la configuration d’un serveur de publication avec un serveur de distribution distant, les valeurs fournies pour tous les paramètres, y compris SynchronizationAgentProcessSecurity, sont envoyées au serveur de distribution sous forme de texte brut. Vous devez chiffrer la connexion entre le serveur de publication et son serveur de distribution distant avant d'appeler la méthode Create . Pour plus d'informations, consultez Chiffrement des connexions à SQL Server.

La SynchronizationAgentProcessSecurity propriété ne peut être récupérée que par les membres du rôle serveur fixe sysadmin sur le serveur de publication, par les membres du rôle de base de données fixe db_owner sur la base de données de publication ou par l’utilisateur qui a créé l’abonnement.

La SynchronizationAgentProcessSecurity propriété ne peut être définie que par les membres du rôle serveur fixe sysadmin sur le serveur de publication ou par les membres du rôle de base de données fixe db_owner sur la base de données de publication.

La récupération de la SynchronizationAgentProcessSecurity propriété équivaut à exécuter sp_helpsubscription ou sp_helpmergesubscription.

Définir des propriétés sur l’interface retournée IProcessSecurityContext revient à exécuter sp_addsubscriptionsp_addmergesubscription, sp_changesubscription ou sp_changemergesubscription.

S’applique à

Voir aussi