Поделиться через


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

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

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

  • Перед началом работы выполните следующие действия.

    Ограничения

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

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

    Среда SQL Server Management Studio

    Transact-SQL

    объекты RMO;

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

Ограничения

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

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

Значок стрелки, используемый со ссылкой «В начало»[Top]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Значок стрелки, используемый со ссылкой «В начало»[Top]

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

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

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

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

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

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

    ПримечаниеПримечание

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

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

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

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

  • Выполните хранимую процедуру sp_changemergepublication, указав свойство публикации, которое нужно изменить, в параметре @property, а новое значение этого свойства — в параметре @value.

    ПримечаниеПримечание

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

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

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

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

  • Выполните хранимую процедуру 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

Значок стрелки, используемый со ссылкой «В начало»[Top]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Примеры (объекты 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

Значок стрелки, используемый со ссылкой «В начало»[Top]

См. также

Задания

Добавление и удаление статей в публикации (среда SQL Server Management Studio)

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

Основные понятия

Публикация данных и объектов базы данных

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

Внесение изменений схем в базы данных публикации

Основные понятия системных хранимых процедур репликации

Просмотр и изменение свойств статьи