Как просматривать и изменять параметры безопасности подписки (программирование объектов RMO)
Настройки безопасности для учетных записей (имена входа и пароли), необходимые для репликации, определяются при создании публикаций и подписок. Можно изменить эти настройки позднее с помощью объектов RMO. Используемые классы и свойства RMO зависят от типа агента и типа соединения с сервером.
Примечание по безопасности |
---|
По возможности предлагайте пользователям вводить учетные данные системы безопасности во время выполнения. Если необходимо хранить учетные данные, используйте службы шифрования, предоставляемые платформой Microsoft Windows .NET Framework. |
Изменение всех экземпляров пароля, хранящихся на сервере репликации
Создайте соединение с сервером репликации с помощью класса ServerConnection.
Создайте экземпляр класса ReplicationServer, используя соединение, созданное на шаге 1.
Вызовите метод ChangeReplicationServerPasswords. Укажите значения следующих параметров.
security_mode — значение типа ReplicationSecurityMode, указывающее тип проверки подлинности, для которой изменяются все экземпляры пароля.
login — имя входа, для которого меняются все экземпляры пароля.
password — новое значение пароля.
Примечание по безопасности По возможности предлагайте пользователям вводить учетные данные системы безопасности во время выполнения. Если необходимо хранить учетные данные, используйте службы шифрования, предоставляемые платформой Windows .NET Framework.
Примечание Только члены предопределенной роли сервера sysadmin могут вызвать этот метод.
Повторите шаги 1—3 для каждого сервера в топологии репликации, на котором необходимо обновить пароли.
Изменение параметров безопасности агента распространителя для принудительной подписки на публикацию транзакций
Создайте соединение с издателем с помощью класса ServerConnection.
Создайте экземпляр класса TransSubscription.
Установите для подписки свойства PublicationName, DatabaseName, SubscriberName и SubscriptionDBName, а в качестве значения для свойства ConnectionContext укажите соединение, созданное на шаге 1.
Чтобы получить свойства объекта, вызовите метод LoadProperties. Если этот метод возвращает значение false, то либо на шаге 3 были неверно определены свойства подписки, либо подписка не существует.
В экземпляре TransSubscription задайте одно или несколько из следующих свойств безопасности.
Чтобы изменить учетные данные для учетной записи Windows, от имени которой запускается агент, установите поля Login и Password свойства SynchronizationAgentProcessSecurity.
Чтобы при соединении агента с подписчиком использовать встроенную проверку подлинности Windows, установите в поле WindowsAuthentication свойства SubscriberSecurity значение true.
Чтобы при соединении агента с подписчиком использовать проверку подлинности SQL Server, установите в поле WindowsAuthentication свойства SubscriberSecurity значение false и укажите учетные данные входа подписчика в полях SqlStandardLogin и SqlStandardPassword.
Примечание Агент всегда соединяется с распространителем с учетными данными Windows, указанными в свойстве SynchronizationAgentProcessSecurity. Эта учетная запись также используется для установления удаленных соединений с проверкой подлинности Windows.
Если для свойства CachePropertyChanges указать значение true, то для фиксирования изменений на сервере необходимо вызвать метод CommitPropertyChanges (необязательно). Если для свойства CachePropertyChanges указать значение false (по умолчанию), изменения будут отправлены на сервер немедленно.
Изменение параметров безопасности агента распространителя для подписки по запросу на публикацию транзакций
Создайте соединение с подписчиком с помощью класса ServerConnection.
Создайте экземпляр класса TransPullSubscription.
Установите для подписки свойства PublicationName, DatabaseName, PublisherName и PublicationDBName, а в качестве значения для свойства ConnectionContext укажите соединение, созданное на шаге 1.
Чтобы получить свойства объекта, вызовите метод LoadProperties. Если этот метод возвращает значение false, то либо на шаге 3 были неверно определены свойства подписки, либо подписка не существует.
В экземпляре TransPullSubscription задайте одно или несколько из следующих свойств безопасности.
Чтобы изменить учетные данные для учетной записи Windows, с которой запускается агент, установите поля Login и Password свойства SynchronizationAgentProcessSecurity.
Чтобы при соединении агента с распространителем использовать встроенную проверку подлинности Windows, установите в поле WindowsAuthentication свойства DistributorSecurity значение true.
Чтобы при соединении агента с распространителем использовать проверку подлинности SQL Server, установите в поле WindowsAuthentication свойства DistributorSecurity значение false и укажите учетные данные входа распространителя в полях SqlStandardLogin и SqlStandardPassword.
Примечание Агент всегда соединяется с подписчиком с учетными данными Windows, указанными в SynchronizationAgentProcessSecurity. Эта учетная запись также используется для установления удаленных соединений с проверкой подлинности Windows.
Если для свойства CachePropertyChanges указать значение true, то для фиксирования изменений на сервере необходимо вызвать метод CommitPropertyChanges (необязательно). Если для свойства CachePropertyChanges указать значение false (по умолчанию), изменения будут отправлены на сервер немедленно.
Изменение параметров безопасности агента слияния для подписки по запросу на публикацию слиянием
Создайте соединение с подписчиком с помощью класса ServerConnection.
Создайте экземпляр класса MergePullSubscription.
Установите для подписки свойства PublicationName, DatabaseName, PublisherName и PublicationDBName, а в качестве значения для свойства ConnectionContext укажите соединение, созданное на шаге 1.
Чтобы получить свойства объекта, вызовите метод LoadProperties. Если этот метод возвращает значение false, то либо на шаге 3 были неверно определены свойства подписки, либо подписка не существует.
В экземпляре MergePullSubscription задайте одно или несколько из следующих свойств безопасности.
Чтобы изменить учетные данные для учетной записи Windows, с которой запускается агент, установите поля Login и Password свойства SynchronizationAgentProcessSecurity.
Чтобы при соединении агента с распространителем использовать встроенную проверку подлинности Windows, установите в поле WindowsAuthentication свойства DistributorSecurity значение true.
Чтобы при соединении агента с распространителем использовать проверку подлинности SQL Server, установите в поле WindowsAuthentication свойства DistributorSecurity значение false и укажите учетные данные входа распространителя в полях SqlStandardLogin и SqlStandardPassword.
Чтобы при соединении агента с издателем использовать встроенную проверку подлинности Windows, установите в поле WindowsAuthentication свойства PublisherSecurity значение true.
Чтобы при соединении агента с издателем использовать проверку подлинности SQL Server, установите в поле WindowsAuthentication свойства PublisherSecurity значение false и укажите учетные данные входа издателя в полях SqlStandardLogin и SqlStandardPassword.
Примечание Агент всегда соединяется с подписчиком с учетными данными Windows, указанными в SynchronizationAgentProcessSecurity. Эта учетная запись также используется для установления удаленных соединений с проверкой подлинности Windows.
Если для свойства CachePropertyChanges указать значение true, то для фиксирования изменений на сервере необходимо вызвать метод CommitPropertyChanges (необязательно). Если для свойства CachePropertyChanges указать значение false (по умолчанию), изменения будут отправлены на сервер немедленно.
Изменение параметров безопасности агента слияния для принудительной подписки на публикацию слиянием
Создайте соединение с издателем с помощью класса ServerConnection.
Создайте экземпляр класса MergeSubscription.
Установите для подписки свойства PublicationName, DatabaseName, SubscriberName и SubscriptionDBName, а в качестве значения для свойства ConnectionContext укажите соединение, созданное на шаге 1.
Чтобы получить свойства объекта, вызовите метод LoadProperties. Если этот метод возвращает значение false, то либо на шаге 3 были неверно определены свойства подписки, либо подписка не существует.
В экземпляре MergeSubscription задайте одно или несколько из следующих свойств безопасности.
Чтобы изменить учетные данные для учетной записи Windows, с которой запускается агент, установите поля Login и Password свойства SynchronizationAgentProcessSecurity.
Чтобы при соединении агента с подписчиком использовать встроенную проверку подлинности Windows, установите в поле WindowsAuthentication свойства SubscriberSecurity значение true.
Чтобы при соединении агента с подписчиком использовать проверку подлинности SQL Server, установите в поле WindowsAuthentication свойства SubscriberSecurity значение false и укажите учетные данные входа подписчика в полях SqlStandardLogin и SqlStandardPassword.
Чтобы при соединении агента с издателем использовать встроенную проверку подлинности Windows, установите в поле WindowsAuthentication свойства PublisherSecurity значение true.
Чтобы при соединении агента с издателем использовать проверку подлинности SQL Server, установите в поле WindowsAuthentication свойства PublisherSecurity значение false и укажите учетные данные входа издателя в полях SqlStandardLogin и SqlStandardPassword.
Примечание Агент всегда соединяется с распространителем с учетными данными Windows, указанными в свойстве SynchronizationAgentProcessSecurity. Эта учетная запись также используется для установления удаленных соединений с проверкой подлинности Windows.
Если для свойства CachePropertyChanges указать значение true, то для фиксирования изменений на сервере необходимо вызвать метод CommitPropertyChanges (необязательно). Если для свойства CachePropertyChanges указать значение false (по умолчанию), изменения будут отправлены на сервер немедленно.
Изменение сведений об имени входа, используемых немедленно обновляемым подписчиком при подключении к издателю транзакций
Создайте соединение с подписчиком с помощью класса ServerConnection.
Создайте экземпляр класса ReplicationDatabase для базы данных подписки. Укажите значения Name и ServerConnection из шага 1 в параметре ConnectionContext.
Чтобы получить свойства объекта, вызовите метод LoadProperties. Если этот метод возвращает значение false, значит, в шаге 2 были неправильно определены свойства базы данных либо база данных подписки не существует.
Вызовите метод LinkPublicationForUpdateableSubscription, передав следующие параметры.
Publisher — имя издателя.
PublisherDB — имя базы данных публикации.
Publication — имя публикации, на которую подписан немедленно обновляемый подписчик.
Distributor — имя распространителя.
PublisherSecurity — объект PublisherConnectionSecurityContext, указывающий тип режима безопасности, используемого немедленно обновляемым подписчиком при соединении с издателем, и учетные данные входа для этого соединения.
Пример
В этом примере проверяется указанное значение имени входа и изменяются все пароли для указанного имени входа в Windows или имени входа в SQL Server, хранимые репликацией на сервере.
// Set the Distributor and distribution database names.
string serverName = publisherInstance;
ReplicationServer server;
// Create a connection to the Distributor using Windows Authentication.
ServerConnection conn = new ServerConnection(serverName);
try
{
// Open the connection.
conn.Connect();
server = new ReplicationServer(conn);
// Load server properties, if it exists.
if (server.LoadProperties())
{
string[] slash = new string[1];
slash[1] = @"\";
// If the login is in the form string\string, assume we are
// changing the password for a Windows login.
if (login.Split(slash, StringSplitOptions.None).Length == 2)
{
//Change the password for the all connections that use
// the Windows login.
server.ChangeReplicationServerPasswords(
ReplicationSecurityMode.Integrated, login, password);
}
else
{
// Change the password for the all connections that use
// the SQL Server login.
server.ChangeReplicationServerPasswords(
ReplicationSecurityMode.SqlStandard, login, password);
}
}
else
{
throw new ApplicationException(String.Format(
"Properties for {0} could not be retrieved.", publisherInstance));
}
}
catch (Exception ex)
{
// Implement the appropriate error handling here.
throw new ApplicationException(String.Format(
"An error occured when changing agent login " +
" credentials on {0}.",serverName), ex);
}
finally
{
conn.Disconnect();
}
' Set the Distributor and distribution database names.
Dim serverName As String = publisherInstance
Dim server As ReplicationServer
' Create a connection to the Distributor using Windows Authentication.
Dim conn As ServerConnection = New ServerConnection(serverName)
Try
' Open the connection.
conn.Connect()
server = New ReplicationServer(conn)
' Load server properties, if it exists.
If server.LoadProperties() Then
' If the login is in the form string\string, assume we are
' changing the password for a Windows login.
If login.Split("\").Length = 2 Then
' Change the password for the all connections that use
' the Windows login.
server.ChangeReplicationServerPasswords( _
ReplicationSecurityMode.Integrated, login, password)
Else
' Change the password for the all connections that use
' the SQL Server login.
server.ChangeReplicationServerPasswords( _
ReplicationSecurityMode.SqlStandard, login, password)
End If
Else
Throw New ApplicationException(String.Format( _
"Properties for {0} could not be retrieved.", publisherInstance))
End If
Catch ex As Exception
' Implement the appropriate error handling here.
Throw New ApplicationException(String.Format( _
"An error occured when changing agent login " + _
" credentials on {0}.", serverName), ex)
Finally
conn.Disconnect()
End Try