Просмотр и изменение свойств публикации
Область применения: SQL Server Управляемый экземпляр SQL Azure
В этом разделе описывается, как просматривать и изменять свойства публикации в SQL Server с помощью 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.
Страница Параметры подписки позволяет устанавливать ряд параметров, которые применяются ко всем подпискам. Параметры отличаются в зависимости от типа публикации.
Страница Список доступа к публикации позволяет указать, какие имена входа и группы имеют доступ к публикации.
Страница Безопасность агентов предоставляет доступ к настройкам учетных записей, под которыми запускаются и устанавливают соединения с компьютерами в топологии репликации следующие агенты: агент моментальных снимков для всех публикаций, агент чтения журнала для всех публикаций транзакций и агент чтения очереди для публикаций транзакций, в которых допускаются подписки, обновляемые посредством очередей.
Страница Секции данных (для публикаций слиянием от издателей, использующих версию SQL Server 2005 или более позднюю) позволяет указать, могут ли подписчики на публикации с параметризованными фильтрами запрашивать моментальный снимок, если он не доступен. Эта страница также позволяет создавать моментальные снимки для одной или нескольких секций либо однократно, либо по расписанию.
Просмотр и изменение свойств публикации в среде Management Studio
Подключитесь к издателю в Management Studio и разверните узел сервера.
Раскройте папку Репликация , а затем папку Локальные публикации .
Щелкните правой кнопкой мыши публикацию и выберите Свойства.
Измените свойства, если необходимо, и нажмите кнопку ОК.
Просмотр и изменение свойств публикации в мониторе репликации
Раскройте группу издателей в левой панели монитора репликации, а затем раскройте издатель.
Щелкните правой кнопкой мыши публикацию и выберите Свойства.
Измените свойства, если необходимо, и нажмите кнопку ОК.
Использование 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 [AdventureWorks2022]
EXEC sp_helppublication @publication = @myTranPub
GO
В этом примере репликации транзакций отключается репликация схемы для публикации.
DECLARE @publication AS sysname
SET @publication = N'AdvWorksProductTran'
-- Turn off DDL replication for the transactional publication.
USE [AdventureWorks2022]
EXEC sp_changepublication
@publication = @publication,
@property = N'replicate_ddl',
@value = 0
GO
В этом примере репликации слиянием возвращаются свойства публикации.
DECLARE @publication AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
USE [AdventureWorks2022]
EXEC sp_helpmergepublication @publication = @publication;
GO
В этом примере репликации слиянием отключается репликация схемы для публикации.
DECLARE @publication AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
-- Disable DDL replication for the publication.
USE [AdventureWorks2022]
EXEC sp_changemergepublication
@publication = @publication,
@property = N'replicate_ddl',
@value = 0,
@force_invalidate_snapshot = 0,
@force_reinit_subscription = 0;
GO
При помощи объектов RMO
Публикации можно изменять и получать доступ к их свойствам программно с помощью объектов RMO. Классы RMO, которые используются для просмотра или изменения публикации, зависят от типа публикации.
Просмотр или изменение свойств публикации моментальных снимков или публикации транзакций
Создайте соединение с издателем с помощью класса ServerConnection .
Создайте экземпляр класса TransPublication , установите для публикации свойства Name и DatabaseName , а также установите созданное на шаге 1 соединение в качестве значения свойства ConnectionContext .
Чтобы получить свойства объекта, вызовите метод LoadProperties . Если этот метод возвращает false, то либо на шаге 2 были неверно определены свойства публикации, либо публикация не существует.
Чтобы изменить свойства, задайте новые значения для устанавливаемых свойств (необязательно). Используйте логический оператор AND (> в Microsoft Visual C# и в Microsoft Visual Basic), чтобы определить, задано ли данное PublicationAttributes значение для Attributes свойства. С помощью операторов включающего логического ИЛИ (| в Visual C# и Or в Visual Basic) и исключающего логического ИЛИ (^ в Visual C# и Xor в Visual Basic) измените значения PublicationAttributes для свойства Attributes в Microsoft Visual Basic).
Если для свойства true в параметре CachePropertyChanges, то для фиксирования изменений на сервере необходимо вызвать метод CommitPropertyChanges (необязательно). Если для свойства false в параметре CachePropertyChanges (по умолчанию), изменения будут отправлены на сервер немедленно.
Просмотр или изменение свойств публикации слиянием
Создайте соединение с издателем с помощью класса ServerConnection .
Создайте экземпляр класса MergePublication , установите для публикации свойства Name и DatabaseName , а также установите созданное на шаге 1 соединение в качестве значения свойства ConnectionContext .
Чтобы получить свойства объекта, вызовите метод LoadProperties . Если этот метод возвращает false, то либо на шаге 2 были неверно определены свойства публикации, либо публикация не существует.
Чтобы изменить свойства, задайте новые значения для устанавливаемых свойств (необязательно). Используйте логический оператор AND (> в Visual C# и Visual Basic), чтобы определить, задано ли заданное PublicationAttributes значение для Attributes свойства. С помощью операторов включающего логического ИЛИ (| в Visual C# и Or в Visual Basic) и исключающего логического ИЛИ (^ в Visual C# и Xor в Visual Basic) измените значения PublicationAttributes для свойства Attributes в Microsoft Visual Basic).
Если для свойства true в параметре CachePropertyChanges, то для фиксирования изменений на сервере необходимо вызвать метод CommitPropertyChanges (необязательно). Если для свойства false в параметре CachePropertyChanges (по умолчанию), изменения будут отправлены на сервер немедленно.
Примеры (объекты RMO)
В этом примере устанавливаются атрибуты публикации для публикации транзакций. Изменения кэшируются до тех пор, пока явно не отправляются на сервер.
// Define the server, database, and publication names
string publisherName = publisherInstance;
string publicationName = "AdvWorksProductTran";
string publicationDbName = "AdventureWorks2022";
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 = "AdventureWorks2022"
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 = "AdventureWorks2022";
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 = "AdventureWorks2022"
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
Связанный контент
- Публикация данных и объектов базы данных
- Изменение свойств публикации и статьи
- Внесение изменений в схемы баз данных публикации
- Replication System Stored Procedures Concepts
- Добавление и удаление статей в публикации (среда SQL Server Management Studio)
- Просмотр сведений и выполнение задач с помощью монитора репликации
- View and Modify Article Properties (Просмотр и изменение свойств статьи)