Subscription.SynchronizationAgentProcessSecurity Propriété
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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.