Просмотр и изменение свойств издателя и распространителя

Применимо к:SQL Server Управляемый экземпляр SQL Azure

В этом разделе описывается, как просматривать и изменять свойства распространителя и издателя в SQL Server с помощью SQL Server Management Studio, Transact-SQL или объектов управления репликацией (RMO).

В этом разделе

Перед началом

Рекомендации

  • Для издателей, работающих до Microsoft SQL Server 2005 (9.x), пользователь в предопределенных ролях сервера sysadmin может зарегистрировать подписчиков на странице подписчиков . Начиная с SQL Server 2005 (9.x), больше не требуется явно регистрировать подписчиков для реплика.

Безопасность

По возможности предлагайте пользователям вводить учетные данные системы безопасности во время выполнения приложения.

Использование среды SQL Server Management Studio

Просмотр и изменение свойств распространителя

  1. Подключение распространителю в SQL Server Management Studio, а затем разверните узел сервера.

  2. Щелкните правой кнопкой папку Репликация , затем щелкните Свойства распространителя.

  3. Просмотр и изменение свойств в диалоговом окне "Свойства распространителя - <распространитель> ".

    • Для просмотра и изменения свойств базы данных распространителя нажмите кнопку с многоточием (...) базы данных на вкладке Общие диалогового окна.

    • Для просмотра и изменения свойств издателя, связанного с распространителем, нажмите кнопку с многоточием (...) издателя на вкладке Издатели диалогового окна.

    • Для доступа к профилям агентов репликации нажмите кнопку Значения по умолчанию для профилей на странице Общие диалогового окна. Дополнительные сведения см. в статье Replication Agent Profiles.

    • Для изменения пароля учетной записи, используемой при выполнении административных хранимых процедур на издателе и обновлении данных на распространителе, введите новый пароль в поля Пароль и Подтверждение пароля на странице Издатели диалогового окна. Дополнительные сведения см. в разделе Организация безопасности распространителя.

  4. Измените свойства, если необходимо, и нажмите кнопку ОК.

Просмотр и изменение свойств издателя

  1. Подключение издателю в SQL Server Management Studio, а затем разверните узел сервера.

  2. Правой кнопкой мыши щелкните папку Репликация , а затем выберите пункт Свойства издателя.

  3. Просмотр и изменение свойств в диалоговом окне "Свойства издателя— < издатель > ".

    • Пользователь, являющийся членом предопределенной роли сервера sysadmin , может разрешить применение репликации для баз данных, выполнив настройки на странице Базы данных публикации . Разрешение репликации для базы данных не вызывает ее публикации. Вместо этого оно позволяет любому пользователю, принадлежащему к предопределенной роли базы данных db_owner для этой базы данных, создавать в ней одну или несколько публикаций.
  4. Измените свойства, если необходимо, и нажмите кнопку ОК.

Использование Transact-SQL

Свойства издателя и распространителя можно просмотреть программно с помощью хранимых процедур репликации.

Просмотр свойств распространителя и базы данных распространителя

  1. Выполните хранимую процедуру sp_helpdistributor , которая возвращает сведения о распространителе, базе данных распространителя и рабочем каталоге.

  2. Выполните хранимую процедуру sp_helpdistributiondb , которая возвращает свойства заданной базы данных распространителя.

Изменение свойств распространителя и базы данных распространителя

  1. Чтобы изменить свойства распространителя, выполните на распространителе хранимую процедуру sp_changedistributor_property .

  2. Чтобы изменить свойства базы данных распространителя, выполните на распространителе хранимую процедуру sp_changedistributiondb .

  3. Чтобы изменить пароль распространителя, выполните на распространителе хранимую процедуру sp_changedistributor_password .

    Важно!

    По возможности предлагайте пользователям вводить учетные данные системы безопасности во время выполнения приложения. Если нужно хранить учетные данные в файле скрипта, для этого файла необходимо обеспечить защиту, чтобы исключить несанкционированный доступ.

  4. Чтобы изменить свойства издателя с помощью распространителя, выполните на распространителе хранимую процедуру sp_changedistpublisher .

Примеры (Transact-SQL)

В следующем примере скрипт Transact-SQL возвращает сведения о распространителю и базе данных распространителя.

-- View information about the Distributor, distribution database, 
-- working directory, and SQL Server Agent user account. 
USE master
EXEC sp_helpdistributor;
GO
-- View information about the specified distribution database. 
USE distribution
EXEC sp_helpdistributiondb;
GO

В этом примере изменяются сроки хранения для распространителя, пароль соединения с распространителем и интервал, с которым распространитель проверяет состояние различных агентов репликации (интервал тактового импульса).

Важно!

По возможности предлагайте пользователям вводить учетные данные системы безопасности во время выполнения приложения. Если нужно хранить учетные данные в файле скрипта, для этого файла необходимо обеспечить защиту, чтобы исключить несанкционированный доступ.


-- Change the heartbeat interval at the Distributor to 5 minutes. 
USE master 
exec sp_changedistributor_property 
    @property = N'heartbeat_interval', 
    @value = 5;
GO
DECLARE @distributionDB AS sysname;
SET @distributionDB = N'distribution';

-- Change the history retention period to 24 hours and the
-- maximum retention period to 48 hours.  
USE distribution
EXEC sp_changedistributiondb @distributionDB, N'history_retention', 24
EXEC sp_changedistributiondb @distributionDB, N'max_distretention', 48
GO
-- Change the password on the Distributor. 
-- To avoid storing the password in the script file, the value is passed 
-- into SQLCMD as a scripting variable. For information about how to use 
-- scripting variables on the command line and in SQL Server Management
-- Studio, see the "Executing Replication Scripts" section in the topic
-- "Programming Replication Using System Stored Procedures".
USE master
EXEC sp_changedistributor_password $(Password)
GO

При помощи объектов RMO

Просмотр и изменение свойств распространителя

  1. Создайте соединение с распространителем с помощью класса ServerConnection .

  2. Создайте экземпляр класса ReplicationServer. Передайте объект ServerConnection , созданный на шаге 1.

  3. (Необязательно) Проверьте свойство IsDistributor , чтобы убедиться, что подключенный в настоящее время сервер является распространителем.

  4. Чтобы получить свойства с сервера, необходимо вызвать метод Load .

  5. (Необязательно) Чтобы изменить свойства, укажите новое значение для одного или нескольких свойств распространителя, которые могут принимать значение ReplicationServer .

  6. Если свойство CachePropertyChanges объекта ReplicationServer имеет значение true, для фиксирования изменений на сервере необходимо вызвать метод CommitPropertyChanges (необязательно).

Просмотр и изменение свойств базы данных-распространителя

  1. Создайте соединение с распространителем с помощью класса ServerConnection .

  2. Создайте экземпляр класса DistributionDatabase. Укажите свойство Name и передайте объект ServerConnection из шага 1.

  3. Чтобы получить свойства с сервера, необходимо вызвать метод LoadProperties . Если этот метод вернет значение false, значит, на сервере не существует базы данных с указанным именем.

  4. Чтобы изменить свойства, установите новое значение для одного из свойств DistributionDatabase , которое можно установить (необязательно).

  5. Если свойство CachePropertyChanges объекта DistributionDatabase имеет значение true, для фиксирования изменений на сервере необходимо вызвать метод CommitPropertyChanges (необязательно).

Просмотр и изменение свойств издателя

  1. Создайте соединение с издателем с помощью класса ServerConnection .

  2. Создайте экземпляр класса DistributionPublisher. Укажите свойство Name и передайте объект ServerConnection из шага 1.

  3. Чтобы изменить свойства, установите новое значение для одного из свойств DistributionPublisher , которое можно установить (необязательно).

  4. Если свойство CachePropertyChanges объекта DistributionPublisher имеет значение true, для фиксирования изменений на сервере необходимо вызвать метод CommitPropertyChanges (необязательно).

Изменение пароля для административного соединения между издателем и распространителем

  1. Создайте соединение с распространителем с помощью класса ServerConnection .

  2. Создайте экземпляр класса ReplicationServer.

  3. В свойстве ConnectionContext укажите созданное на шаге 1 соединение.

  4. Чтобы получить свойства объекта, вызовите метод Load .

  5. Вызовите метод ChangeDistributorPassword . Передайте новое значение пароля в параметре password .

    Важно!

    По возможности предлагайте пользователям вводить учетные данные системы безопасности во время выполнения приложения. Если необходимо сохранить учетные данные, используйте криптографические службы, предоставляемые microsoft Windows платформа .NET Framework.

  6. (Необязательно) Выполните следующие шаги, чтобы изменить пароль на каждом удаленном издателе, использующем данный распространитель.

    1. Создайте соединение с издателем с помощью класса ServerConnection .

    2. Создайте экземпляр класса ReplicationServer.

    3. Укажите в качестве свойства ConnectionContext соединение, созданное в шаге 6a.

    4. Чтобы получить свойства объекта, вызовите метод Load .

    5. Вызовите метод ChangeDistributorPassword . Передайте новое значение пароля из шага 5 в параметре password .

Пример (объекты RMO)

В этом примере показано, как изменить свойства распространителя и базы данных-распространителя.

Важно!

Чтобы учетные данные не хранились в коде, новый пароль для распространителя указывается во время выполнения.

// Set the Distributor and distribution database names.
string distributionDbName = "distribution";
string distributorName = publisherInstance;

ReplicationServer distributor;
DistributionDatabase distributionDb;

// Create a connection to the Distributor using Windows Authentication.
ServerConnection conn = new ServerConnection(distributorName);

try
{
    // Open the connection. 
    conn.Connect();

    distributor = new ReplicationServer(conn);

    // Load Distributor properties, if it is installed.
    if (distributor.LoadProperties())
    {
        // Password supplied at runtime.
        distributor.ChangeDistributorPassword(password);
        distributor.AgentCheckupInterval = 5;

        // Save changes to the Distributor properties.
        distributor.CommitPropertyChanges();
    }
    else
    {
        throw new ApplicationException(
            String.Format("{0} is not a Distributor.", publisherInstance));
    }

    // Create an object for the distribution database 
    // using the open Distributor connection.
    distributionDb = new DistributionDatabase(distributionDbName, conn);

    // Change distribution database properties.
    if (distributionDb.LoadProperties())
    {
        // Change maximum retention period to 48 hours and history retention 
        // period to 24 hours.
        distributionDb.MaxDistributionRetention = 48;
        distributionDb.HistoryRetention = 24;

        // Save changes to the distribution database properties.
        distributionDb.CommitPropertyChanges();
    }
    else
    {
        // Do something here if the distribution database does not exist.
    }
}
catch (Exception ex)
{
    // Implement the appropriate error handling here. 
    throw new ApplicationException("An error occurred when changing Distributor " +
        " or distribution database properties.", ex);
}
finally
{
    conn.Disconnect();
}
' Set the Distributor and distribution database names.
Dim distributionDbName As String = "distribution"
Dim distributorName As String = publisherInstance

Dim distributor As ReplicationServer
Dim distributionDb As DistributionDatabase

' Create a connection to the Distributor using Windows Authentication.
Dim conn As ServerConnection = New ServerConnection(distributorName)

Try
    ' Open the connection. 
    conn.Connect()

    distributor = New ReplicationServer(conn)

    ' Load Distributor properties, if it is installed.
    If distributor.LoadProperties() Then
        ' Password supplied at runtime.
        distributor.ChangeDistributorPassword(password)
        distributor.AgentCheckupInterval = 5

        ' Save changes to the Distributor properties.
        distributor.CommitPropertyChanges()
    Else
        Throw New ApplicationException( _
            String.Format("{0} is not a Distributor.", publisherInstance))
    End If

    ' Create an object for the distribution database 
    ' using the open Distributor connection.
    distributionDb = New DistributionDatabase(distributionDbName, conn)

    ' Change distribution database properties.
    If distributionDb.LoadProperties() Then
        ' Change maximum retention period to 48 hours and history retention 
        ' period to 24 hours.
        distributionDb.MaxDistributionRetention = 48
        distributionDb.HistoryRetention = 24

        ' Save changes to the distribution database properties.
        distributionDb.CommitPropertyChanges()
    Else
        ' Do something here if the distribution database does not exist.
    End If
Catch ex As Exception
    ' Implement the appropriate error handling here. 
    Throw New ApplicationException("An error occurred when changing Distributor " + _
        " or distribution database properties.", ex)
Finally
    conn.Disconnect()
End Try

См. также

Replication Management Objects Concepts
Отключение публикации и распространения
Настройка распространения
Replication Management Objects Concepts
Distributor and Publisher Information Script (Скрипт вывода сведений о распространителе и издателе)
Replication System Stored Procedures Concepts
Просмотр сведений и выполнение задач для издателя (монитор репликации)