Просмотр и изменение свойств публикации

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

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

Перед началом работы

Ограничения и условия

  • Некоторые свойства нельзя изменить после создания публикации, а другие не могут быть изменены, если есть подписки на публикацию. Свойства, которые нельзя изменить, отображаются как доступные только для чтения.

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

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

Просмотр и изменение свойств публикации в диалоговом окне "Свойства публикации — <публикация> ", доступное в SQL Server Management Studio и мониторе репликации. Сведения о запуске монитора репликации см. в разделе "Запуск монитора репликации".

Диалоговое окно "Свойства публикации— публикация>" < содержит следующие страницы:

  • Страница "Общие " содержит имя публикации и описание, имя базы данных, тип публикации и параметры срока действия подписки.

  • Страница "Статьи " соответствует странице "Статьи " в мастере создания публикаций. Эта страница используется для добавления и удаления статей, а также для изменения свойств и фильтрации столбцов для статей.

  • Страница " Строки фильтра" соответствует странице "Строки таблицы фильтра " в мастере создания публикации. Эта страница используется для добавления, редактирования и удаления статических фильтров строк для всех типов публикаций, а также для добавления, редактирования и удаления параметризованных фильтров строк и фильтров соединений для публикаций типа объединения.

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

  • Страница моментальных снимков FTP (для публикаций моментальных снимков и транзакционных публикаций, а также публикаций слияния для издателей, использующих версии SQL Server до 2005 года) позволяет указать, могут ли подписчики скачивать файлы моментальных снимков с помощью протокола FTP.

  • Страница FTP-обзор и Интернет (для слияния публикаций от издателей, использующих SQL Server 2005 или более поздние версии) позволяет определить, могут ли подписчики загружать файлы обзора через FTP и синхронизировать подписки через HTTPS.

  • Страница "Параметры подписки" позволяет задать ряд параметров, которые применяются ко всем подпискам. Параметры различаются в зависимости от типа публикации.

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

  • На странице "Безопасность агента" можно получить доступ к параметрам учетных записей, под которыми работают следующие агенты, и подключаться к компьютерам в топологии репликации: агент моментальных снимков для всех публикаций; агент чтения журналов для всех транзакционных публикаций; и агент чтения очередей для транзакционных публикаций, которые поддерживают обновление подписок через очередь.

  • Страница Data Partitions (для публикаций слиянием от издателей, использующих SQL Server 2005 или более позднюю версию) позволяет указать, могут ли подписчики публикаций с параметризованными фильтрами запрашивать снимок, если он отсутствует. Кроме того, он позволяет создавать моментальные снимки для одного или нескольких разделов (один раз или по повторяющемуся расписанию).

Просмотр и изменение свойств публикации в Management Studio

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

  2. Раскройте папку Репликация , а затем папку Локальные публикации .

  3. Щелкните правой кнопкой мыши публикацию и выберите пункт "Свойства".

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

Просмотр и изменение свойств публикации в Replication Monitor

  1. Разверните группу издателей в левой области окна Монитор репликации, а затем разверните издателя.

  2. Щелкните правой кнопкой мыши публикацию и выберите пункт "Свойства".

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

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

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

Просмотр свойств моментального снимка или публикации транзакций

  1. Выполните sp_helppublication, указав имя публикации для параметра @publication . Если этот параметр не указан, возвращается информация обо всех публикациях в издательстве.

Изменение свойств публикации моментального снимка или публикации транзакций

  1. Выполните sp_changepublication, указав свойство публикации для изменения в параметре @property и новое значение этого свойства в параметре @value .

    Замечание

    Если изменения потребуют создания нового моментального снимка, необходимо также указать значение 1 для @force_invalidate_snapshot, а если изменения потребуют повторной инициализации подписчиков, необходимо указать значение 1 для @force_reinit_subscription. Дополнительную информацию о свойствах, которые при изменении требуют нового моментального снимка или повторной инициализации, см. в разделе «Изменение свойств публикации и статьи».

Чтобы просмотреть свойства публикации объединения

  1. Выполните sp_helpmergepublication, указав имя публикации для параметра @publication . Если этот параметр не указан, возвращается информация обо всех публикациях у издателя.

Чтобы изменить свойства публикации слияния

  1. Выполните sp_changemergepublication, указав свойство публикации в параметре @property и новое значение этого свойства в параметре @value .

    Замечание

    Если для изменения потребуется создание нового моментального снимка, необходимо также указать значение 1 для @force_invalidate_snapshot, а если изменение потребует повторной инициализации подписчиков, необходимо указать значение 1 для @force_reinit_subscription Для получения дополнительных сведений о свойствах, которые при изменении требуют нового моментального снимка или повторной инициализации. см. статью "Изменить публикацию" и "Свойства статьи".

Просмотр свойств моментального снимка

  1. Выполните sp_helppublication_snapshot, указав имя публикации для параметра @publication .

Изменение свойств моментального снимка

  1. Выполните sp_changepublication_snapshot, указав одно или несколько новых свойств моментального снимка для соответствующих параметров моментального снимка.

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

Этот пример репликации транзакций возвращает свойства публикации.

DECLARE @myTranPub AS sysname
SET @myTranPub = N'AdvWorksProductTran' 

USE [AdventureWorks2012]
EXEC sp_helppublication @publication = @myTranPub
GO

Этот пример репликации транзакций отключает репликацию схемы для публикации.

DECLARE @publication AS sysname
SET @publication = N'AdvWorksProductTran' 

-- Turn off DDL replication for the transactional publication.
USE [AdventureWorks2012]
EXEC sp_changepublication 
  @publication = @publication, 
  @property = N'replicate_ddl', 
  @value = 0
GO

В этом примере репликации слиянием возвращаются свойства публикации.

DECLARE @publication AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';

USE [AdventureWorks2012]
EXEC sp_helpmergepublication @publication = @publication;
GO

Этот пример репликации слиянием отключает репликацию схемы для публикации.

DECLARE @publication AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge'; 

-- Disable DDL replication for the publication.
USE [AdventureWorks2012]
EXEC sp_changemergepublication 
  @publication = @publication, 
  @property = N'replicate_ddl', 
  @value = 0,
  @force_invalidate_snapshot = 0, 
  @force_reinit_subscription = 0;
GO

Использование объектов управления репликацией (RMO)

Публикации и доступ к их свойствам можно изменять программным способом с помощью объектов управления репликацией (RMO). Классы RMO, используемые для просмотра или изменения свойств публикации, зависят от типа публикации.

Для просмотра или изменения свойств публикации моментального снимка или публикации транзакции

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

  2. Создайте экземпляр класса TransPublication, задайте свойства Name и DatabaseName для публикации, и установите свойство ConnectionContext на соединение, созданное на шаге 1.

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

  4. (Необязательно) Чтобы изменить свойства, установите новое значение для одного или нескольких изменяемых свойств. Используйте логический оператор AND (& в Microsoft Visual C# и And в Microsoft Visual Basic), чтобы определить, задано ли данное PublicationAttributes значение для Attributes свойства. Используйте инклюзивный логический оператор OR (| в Visual C# и Or Visual Basic) и эксклюзивный логический ОПЕРАТОР OR (^ в Visual C# и Xor Visual Basic), чтобы изменить PublicationAttributes значения свойства Attributes .

  5. (Необязательно) Если вы указали значение true для CachePropertyChanges, вызовите CommitPropertyChanges метод для фиксации изменений на сервере. Если вы указали значение false ( CachePropertyChanges по умолчанию), изменения отправляются на сервер немедленно.

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

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

  2. Создайте экземпляр класса MergePublication, задайте свойства Name и DatabaseName для публикации, и установите свойство ConnectionContext как соединение, созданное на шаге 1.

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

  4. (Необязательно) Чтобы изменить свойства, задайте новое значение для одного или нескольких настраиваемых свойств. Используйте логический оператор AND (& в Visual C# и And Visual Basic), чтобы определить, задано ли заданное PublicationAttributes значение для Attributes свойства. Используйте инклюзивный логический оператор OR (| в Visual C# и Or Visual Basic) и эксклюзивный логический ОПЕРАТОР OR (^ в Visual C# и Xor Visual Basic), чтобы изменить PublicationAttributes значения свойства Attributes .

  5. (Необязательно) Если вы указали значение true для CachePropertyChanges, вызовите CommitPropertyChanges метод для фиксации изменений на сервере. Если вы указали значение false ( CachePropertyChanges по умолчанию), изменения отправляются на сервер немедленно.

Примеры (RMO)

В этом примере задаются атрибуты публикации для публикации транзакций. Изменения кэшируются до явной отправки на сервер.

// Define the server, database, and publication names
string publisherName = publisherInstance;
string publicationName = "AdvWorksProductTran";
string publicationDbName = "AdventureWorks2012";

TransPublication publication;

// Create a connection to the Publisher.
ServerConnection conn = new ServerConnection(publisherName);

try
{
    // Connect to the Publisher.
    conn.Connect();

    // Set the required properties for the publication.
    publication = new TransPublication();
    publication.ConnectionContext = conn;
    publication.Name = publicationName;
    publication.DatabaseName = publicationDbName;

    // Explicitly enable caching of property changes on this object.
    publication.CachePropertyChanges = true;

    // If we can't get the properties for this publication, 
    // throw an application exception.
    if (publication.LoadProperties())
    {
        // Enable support for push subscriptions and disable support 
        // for pull subscriptions.
        if ((publication.Attributes & PublicationAttributes.AllowPull) != 0)
        {
            publication.Attributes ^= PublicationAttributes.AllowPull;
        }
        if ((publication.Attributes & PublicationAttributes.AllowPush) == 0)
        {
            publication.Attributes |= PublicationAttributes.AllowPush;
        }

        // Send changes to the server.
        publication.CommitPropertyChanges();
    }
    else
    {
        throw new ApplicationException(String.Format(
            "Settings could not be retrieved for the publication. " +
            "Ensure that the publication {0} exists on {1}.",
            publicationName, publisherName));
    }
}
catch (Exception ex)
{
    // Do error handling here.
    throw new ApplicationException(
        "The publication property could not be changed.", ex);
}
finally
{
    conn.Disconnect();
}
' Define the server, database, and publication names
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksProductTran"
Dim publicationDbName As String = "AdventureWorks2012"

Dim publication As TransPublication

' Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)

Try
    ' Connect to the Publisher.
    conn.Connect()

    ' Set the required properties for the publication.
    publication = New TransPublication()
    publication.ConnectionContext = conn
    publication.Name = publicationName
    publication.DatabaseName = publicationDbName

    ' Explicitly enable caching of property changes on this object.
    publication.CachePropertyChanges = True

    ' If we can't get the properties for this publication, 
    ' throw an application exception.
    If publication.LoadProperties() Then
        ' Enable support for push subscriptions and disable support 
        ' for pull subscriptions.
        If (publication.Attributes And PublicationAttributes.AllowPull) <> 0 Then
            publication.Attributes = publication.Attributes _
            Xor PublicationAttributes.AllowPull
        End If
        If (publication.Attributes And PublicationAttributes.AllowPush) = 0 Then
            publication.Attributes = publication.Attributes _
            Or PublicationAttributes.AllowPush
        End If

        ' Send changes to the server.
        publication.CommitPropertyChanges()
    Else
        Throw New ApplicationException(String.Format( _
         "Settings could not be retrieved for the publication. " + _
         "Ensure that the publication {0} exists on {1}.", _
         publicationName, publisherName))
    End If
Catch ex As Exception
    ' Do error handling here.
    Throw New ApplicationException( _
        "The publication property could not be changed.", ex)
Finally
    conn.Disconnect()
End Try

В этом примере репликация DDL отключается для публикации объединения.

// Define the server, database, and publication names
string publisherName = publisherInstance;
string publicationName = "AdvWorksSalesOrdersMerge";
string publicationDbName = "AdventureWorks2012";

MergePublication publication;

// Create a connection to the Publisher.
ServerConnection conn = new ServerConnection(publisherName);

try
{
    // Connect to the Publisher.
    conn.Connect();

    // Set the required properties for the publication.
    publication = new MergePublication();
    publication.ConnectionContext = conn;
    publication.Name = publicationName;
    publication.DatabaseName = publicationDbName;


    // If we can't get the properties for this merge publication, then throw an application exception.
    if (publication.LoadProperties())
    {
        // If DDL replication is currently enabled, disable it.
        if (publication.ReplicateDdl == DdlReplicationOptions.All)
        {
            publication.ReplicateDdl = DdlReplicationOptions.None;
        }
        else
        {
            publication.ReplicateDdl = DdlReplicationOptions.All;
        }
    }
    else
    {
        throw new ApplicationException(String.Format(
            "Settings could not be retrieved for the publication. " +
            "Ensure that the publication {0} exists on {1}.",
            publicationName, publisherName));
    }
}
catch (Exception ex)
{
    // Do error handling here.
    throw new ApplicationException(
        "The publication property could not be changed.", ex);
}
finally
{
    conn.Disconnect();
}
' Define the server, database, and publication names
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim publicationDbName As String = "AdventureWorks2012"

Dim publication As MergePublication

' Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)

Try
    ' Connect to the Publisher.
    conn.Connect()

    ' Set the required properties for the publication.
    publication = New MergePublication()
    publication.ConnectionContext = conn
    publication.Name = publicationName
    publication.DatabaseName = publicationDbName

    ' If we can't get the properties for this merge publication, then throw an application exception.
    If publication.LoadProperties() Then
        ' If DDL replication is currently enabled, disable it.
        If publication.ReplicateDdl = DdlReplicationOptions.All Then
            publication.ReplicateDdl = DdlReplicationOptions.None
        Else
            publication.ReplicateDdl = DdlReplicationOptions.All
        End If
    Else
        Throw New ApplicationException(String.Format( _
         "Settings could not be retrieved for the publication. " + _
         "Ensure that the publication {0} exists on {1}.", _
         publicationName, publisherName))
    End If
Catch ex As Exception
    ' Do error handling here.
    Throw New ApplicationException( _
        "The publication property could not be changed.", ex)
Finally
    conn.Disconnect()
End Try

См. также

Публикация объектов данных и баз данных
Изменение свойств публикации и статьи
Изменение схем на публикационных базах данных
Основные понятия хранимых процедур системы репликации
Добавление статей в публикацию и удаление статей
Просмотр сведений и выполнение задач с помощью монитора репликации
View and Modify Article Properties (Просмотр и изменение свойств статьи)