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

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

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

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

    Ограничения

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

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

    Среда SQL Server Management Studio

    Transact-SQL

    объекты RMO;

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

Ограничения

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. На странице Статьи диалогового окна Свойства публикации — <публикация> выберите статью, а затем щелкните Свойства статьи.

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

    • Щелкните Указать свойства выделенной статьи <ObjectType>, чтобы вызвать диалоговое окно Свойства статьи — <ObjectName>. Изменения свойств, сделанные в этом диалоговом окне, применяются только к объектам, выделенным на панели объектов на странице Статьи.

    • Щелкните Установить свойства всех статей типа <ObjectType>, чтобы открыть диалоговое окно Свойства всех статей типа <ObjectType>; изменения свойств в данном диалоговом окне применяются ко всем объектам соответствующего типа на панели объектов на странице Статьи, включая еще не выбранные для публикации.

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

      Изменения свойств, сделанные в диалоговом окне Свойства всех статей <тип_объекта>, отменяют изменения, сделанные ранее в диалоговом окне Свойства статей — <имя_объекта>. Если, например необходимо установить количество по умолчанию для всех статей типа объекта, а также задать свойства отдельным объектам, сначала установите значения по умолчанию для всех статей. Затем установите свойства для отдельных объектов.

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

  4. Нажмите кнопку ОК в диалоговом окне Свойства публикации — <публикация>.

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

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

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

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

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

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

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

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

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

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

Просмотр свойств статьи, принадлежащей публикации слиянием

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

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

Изменение свойств статьи, принадлежащей публикации слиянием

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

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

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

Пример (Transact-SQL)

Следующий пример репликации транзакций производит получение свойств опубликованной статьи.

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

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

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

DECLARE @publication AS sysname;
DECLARE @article AS sysname;
DECLARE @option AS int;
SET @publication = N'AdvWorksProductTran';
SET @article = N'Product';
SET @option = (SELECT CAST(0x0000000002030073 AS int));

-- Change the schema options to replicate schema with XML.
USE [AdventureWorks2012]
EXEC sp_changearticle 
  @publication = @publication,
  @article = @article, 
  @property = N'schema_option', 
  @value = @option,
  @force_invalidate_snapshot = 1;
GO

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

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

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

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

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

-- Enable column-level conflict tracking.
-- Changing this property requires that existing subscriptions
-- be reinitialized and that a new snapshot be generated.
USE [AdventureWorks2012]
EXEC sp_changemergearticle 
  @publication = @publication,
  @article = @article, 
  @property = N'column_tracking', 
  @value = N'true',
  @force_invalidate_snapshot = 1,
  @force_reinit_subscription = 1;
GO

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

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

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

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

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

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

  3. Установите свойства Name, PublicationName и DatabaseName.

  4. Установите полученное на шаге 1 соединение в качестве значения свойства ConnectionContext.

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

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

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

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

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

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

  3. Установите свойства Name, PublicationName и DatabaseName.

  4. Установите полученное на шаге 1 соединение в качестве значения свойства ConnectionContext.

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

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

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

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

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

         // Define the Publisher, publication, and article names.
            string publisherName = publisherInstance;
            string publicationName = "AdvWorksSalesOrdersMerge";
            string publicationDbName = "AdventureWorks2012";
            string articleName = "SalesOrderHeader";
            
            // Set the friendly name of the business logic handler.
            string customLogic = "OrderEntryLogic";

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

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

                // Set the required properties for the article.
                article.ConnectionContext = conn;
                article.Name = articleName;
                article.DatabaseName = publicationDbName;
                article.PublicationName = publicationName;

                // Load the article properties.
                if (article.LoadProperties())
                {
                    article.ArticleResolver = customLogic;
                }
                else
                {
                    // Throw an exception of the article does not exist.
                    throw new ApplicationException(String.Format(
                    "{0} is not published in {1}", articleName, publicationName));
                }
                
            }
            catch (Exception ex)
            {
                // Do error handling here and rollback the transaction.
                throw new ApplicationException(String.Format(
                    "The business logic handler {0} could not be associated with " +
                    " the {1} article.",customLogic,articleName), ex);
            }
            finally
            {
                conn.Disconnect();
            }
' Define the Publisher, publication, and article names.
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim publicationDbName As String = "AdventureWorks2012"
Dim articleName As String = "SalesOrderHeader"

' Set the friendly name of the business logic handler.
Dim customLogic As String = "OrderEntryLogic"

Dim article As MergeArticle = New MergeArticle()

' 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 article.
    article.ConnectionContext = conn
    article.Name = articleName
    article.DatabaseName = publicationDbName
    article.PublicationName = publicationName

    ' Load the article properties.
    If article.LoadProperties() Then
        article.ArticleResolver = customLogic
    Else
        ' Throw an exception of the article does not exist.
        Throw New ApplicationException(String.Format( _
         "{0} is not published in {1}", articleName, publicationName))
    End If

Catch ex As Exception
    ' Do error handling here and rollback the transaction.
    Throw New ApplicationException(String.Format( _
     "The business logic handler {0} could not be associated with " + _
     " the {1} article.", customLogic, articleName), ex)
Finally
    conn.Disconnect()
End Try

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

См. также

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

Реализация обработчика бизнес-логики для статьи публикации слиянием

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

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

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

Расширенное обнаружение и разрешение конфликтов репликации слиянием