Visualizzare e modificare le proprietà della pubblicazione
Si applica a: SQL Server Istanza gestita di SQL di Azure
Questo argomento descrive come visualizzare e modificare le proprietà di pubblicazione in SQL Server tramite SQL Server Management Studio, Transact-SQL o Replication Management Objects (RMO).
Contenuto dell'articolo
Prima di iniziare:
Per visualizzare e modificare le proprietà delle pubblicazioni tramite:
Prima di iniziare
Limitazioni e restrizioni
- Alcune proprietà non possono essere modificate dopo la creazione di una pubblicazione, mentre altre proprietà non possono essere modificate se sono presenti sottoscrizioni alla pubblicazione. Le proprietà che non possono essere modificate vengono visualizzate come di sola lettura.
Consigli
- Dopo la creazione di una pubblicazione, per alcune modifiche delle proprietà è necessario un nuovo snapshot. Se la pubblicazione dispone di sottoscrizioni, per alcune modifiche è inoltre necessario reinizializzare tutte le sottoscrizioni. Per altre informazioni, vedere Modificare le proprietà di pubblicazioni e articoli e Aggiungere ed eliminare articoli in pubblicazioni esistenti.
Utilizzo di SQL Server Management Studio
Le proprietà delle pubblicazioni possono essere visualizzate e modificate nella finestra di dialogo Proprietà pubblicazione - <Pubblicazione> disponibile in SQL Server Management Studio e Monitoraggio replica. Per informazioni sull'avvio di Monitoraggio replica, vedere Avviare Monitoraggio replica.
La finestra di dialogo Proprietà pubblicazione - <Pubblicazione> include le pagine seguenti:
Nella pagina Generale sono presenti il nome e la descrizione della pubblicazione, il nome del database, il tipo di pubblicazione e le impostazioni di scadenza della sottoscrizione.
La pagina Articoli corrisponde alla pagina Articoli presente nella Creazione guidata nuova pubblicazione. Utilizzare questa pagina per aggiungere ed eliminare articoli e per modificare le proprietà e l'applicazione di filtri a colonne per gli articoli.
La pagina Filtra righe corrisponde alla pagina Filtro righe tabella presente nella Creazione guidata nuova pubblicazione. Utilizzare questa pagina per aggiungere, modificare ed eliminare filtri di righe statici per tutti i tipi di pubblicazioni e aggiungere, modificare ed eliminare filtri di righe con parametri e filtri join per le pubblicazioni di tipo merge.
La pagina Snapshot consente di specificare il formato e la posizione dello snapshot, se comprimere lo snapshot e gli script da eseguire prima e dopo l'applicazione dello snapshot.
La pagina Snapshot FTP , per le pubblicazioni snapshot e transazionali e per le pubblicazioni di tipo merge nei server di pubblicazione che eseguono versioni precedenti a SQL Server 2005, consente di specificare se i Sottoscrittori possono scaricare file di snapshot tramite FTP (File Transfer Protocol).
La pagina Snapshot FTP e Internet , per le pubblicazioni di tipo merge da server di pubblicazione che eseguono SQL Server 2005 o versione successiva, consente di specificare se i Sottoscrittori possono scaricare file di snapshot tramite FTP e sincronizzare le sottoscrizioni tramite HTTPS.
Nella pagina Opzioni della sottoscrizione è possibile impostare alcune opzioni che si applicano a tutte le sottoscrizioni. Le opzioni variano in relazione al tipo di pubblicazione.
La pagina Elenco accesso pubblicazione consente di specificare quali account di accesso e gruppi possono accedere a una pubblicazione.
La pagina Sicurezza agente consente di accedere alle impostazioni degli account utilizzati per l'esecuzione degli agenti seguenti e per la creazione di connessioni ai computer in una topologia di replica: l'agente snapshot per tutte le pubblicazioni, l'agente di lettura log per tutte le pubblicazioni transazionali e l'agente di lettura coda per le pubblicazioni transazionali che consentono sottoscrizioni ad aggiornamento in coda.
La pagina Partizioni dati , per le pubblicazioni di tipo merge da server di pubblicazione che eseguono SQL Server 2005 o versione successiva, consente di specificare se i Sottoscrittori delle pubblicazioni con filtri con parametri possono richiedere uno snapshot qualora non ne fosse disponibile uno. In questa pagina è inoltre possibile generare snapshot per una o più partizioni, una sola volta o in base a una pianificazione periodica.
Per visualizzare e modificare le proprietà delle pubblicazioni in Management Studio
Connettersi al server di pubblicazione in Management Studio e quindi espandere il nodo del server.
Espandere la cartella Replica e quindi la cartella Pubblicazioni locali .
Fare clic con il pulsante destro del mouse su una pubblicazione e quindi scegliere Proprietà.
Se necessario, modificare le proprietà e quindi fare clic su OK.
Per visualizzare e modificare le proprietà delle pubblicazioni in Monitoraggio replica
Espandere un gruppo di server di pubblicazione nel riquadro sinistro di Monitoraggio replica e quindi espandere un server di pubblicazione.
Fare clic con il pulsante destro del mouse su una pubblicazione e quindi scegliere Proprietà.
Se necessario, modificare le proprietà e quindi fare clic su OK.
Utilizzo di Transact-SQL
È possibile modificare le pubblicazioni e restituire a livello di programmazione le relative proprietà tramite le stored procedure di replica. Le stored procedure utilizzate dipenderanno dal tipo di pubblicazione.
Per visualizzare le proprietà di una pubblicazione snapshot o transazionale
- Eseguire sp_helppublication, specificando il nome della pubblicazione per il parametro @publication . Se questo parametro viene omesso, verranno restituite le informazioni su tutte le pubblicazioni disponibili nel server di pubblicazione.
Per modificare le proprietà di una pubblicazione snapshot o transazionale
Eseguire sp_changepublication, specificando la proprietà della pubblicazione da modificare nel parametro @property e il nuovo valore di questa proprietà nel parametro @value .
Nota
Se la modifica richiederà la generazione di un nuovo snapshot, è necessario specificare anche il valore 1 per @force_invalidate_snapshote se richiederà la reinizializzazione dei Sottoscrittori, è necessario specificare il valore 1 per @force_reinit_subscription. Per altre informazioni sulle proprietà che, in caso di modifica, richiedono un nuovo snapshot o una reinizializzazione, vedere Modificare le proprietà di pubblicazioni e articoli.
Per visualizzare le proprietà di una pubblicazione di tipo merge
- Eseguire sp_helpmergepublication, specificando il nome della pubblicazione per il parametro @publication . Se questo parametro viene omesso, verranno restituite le informazioni su tutte le pubblicazioni disponibili nel server di pubblicazione.
Per modificare le proprietà di una pubblicazione di tipo merge
Eseguire sp_changemergepublication, specificando la proprietà della pubblicazione da modificare nel parametro @property e il nuovo valore di questa proprietà nel parametro @value .
Nota
Se la modifica richiederà la generazione di un nuovo snapshot, è necessario specificare anche il valore 1 per @force_invalidate_snapshot e se richiederà la reinizializzazione dei Sottoscrittori, è necessario specificare il valore 1 per @force_reinit_subscription. Per altre informazioni sulle proprietà che, in caso di modifica, richiedono un nuovo snapshot o una reinizializzazione, vedere Modificare le proprietà di pubblicazioni e articoli.
Per visualizzare le proprietà di uno snapshot
- Eseguire sp_helppublication_snapshot, specificando il nome della pubblicazione per il parametro @publication .
Per modificare le proprietà di uno snapshot
- Eseguire sp_changepublication_snapshot, specificando una o più delle nuove proprietà dello snapshot per i parametri appropriati dello snapshot.
Esempi (Transact-SQL)
In questo esempio di replica transazionale vengono restituite le proprietà della pubblicazione.
DECLARE @myTranPub AS sysname
SET @myTranPub = N'AdvWorksProductTran'
USE [AdventureWorks2022]
EXEC sp_helppublication @publication = @myTranPub
GO
In questo esempio di replica transazionale viene disabilitata la replica dello schema per la pubblicazione.
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
In questo esempio di replica di tipo merge vengono restituite le proprietà della pubblicazione.
DECLARE @publication AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
USE [AdventureWorks2022]
EXEC sp_helpmergepublication @publication = @publication;
GO
In questo esempio di replica di tipo merge viene disabilitata la replica dello schema per la pubblicazione.
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
Utilizzo di RMO (Replication Management Objects)
È possibile modificare le pubblicazioni e accedere alle relative proprietà a livello di programmazione utilizzando oggetti RMO (Replication Management Objects). Le classi RMO utilizzate per visualizzare o modificare le proprietà della pubblicazione dipendono dal tipo di pubblicazione.
Per visualizzare o modificare le proprietà di una pubblicazione snapshot o transazionale
Creare una connessione al server di pubblicazione tramite la classe ServerConnection .
Creare un'istanza della classe TransPublication , impostare le proprietà Name e DatabaseName per la pubblicazione, quindi impostare la proprietà ConnectionContext sulla connessione creata al passaggio 1.
Chiamare il metodo LoadProperties per recuperare le proprietà dell'oggetto. Se questo metodo restituisce false, le proprietà della pubblicazione sono state definite in modo non corretto nel passaggio 2 oppure la pubblicazione non esiste.
(Facoltativo) Per modificare le proprietà, specificare un nuovo valore per una o più proprietà che è possibile impostare. Utilizzare l'operatore AND logico (& in Microsoft Visual C# e And in Microsoft Visual Basic) per determinare se per la proprietà Attributes è impostato un valore PublicationAttributes specificato. Utilizzare l'operatore logico OR inclusivo (| in Visual C# e Or in Visual Basic) e l'operatore logico OR esclusivo (^ in Visual C# e Xor in Visual Basic) per modificare i valori di PublicationAttributes per la proprietà Attributes specificato.
(Facoltativo) Se si specifica un valore true per CachePropertyChanges, chiamare il metodo CommitPropertyChanges per eseguire il commit delle modifiche nel server. Se si specifica un valore false per CachePropertyChanges (impostazione predefinita), le modifiche vengono inviate immediatamente al server.
Per visualizzare o modificare le proprietà di una pubblicazione di tipo merge
Creare una connessione al server di pubblicazione tramite la classe ServerConnection .
Creare un'istanza della classe MergePublication , impostare le proprietà Name e DatabaseName per la pubblicazione, quindi impostare la proprietà ConnectionContext sulla connessione creata al passaggio 1.
Chiamare il metodo LoadProperties per recuperare le proprietà dell'oggetto. Se questo metodo restituisce false, le proprietà della pubblicazione sono state definite in modo non corretto nel passaggio 2 oppure la pubblicazione non esiste.
(Facoltativo) Per modificare le proprietà, specificare un nuovo valore per una o più proprietà che è possibile impostare. Utilizzare l'operatore AND logico (& in Visual C# e And in Visual Basic) per determinare se per la proprietà Attributes è impostato un valore PublicationAttributes specificato. Utilizzare l'operatore logico OR inclusivo (| in Visual C# e Or in Visual Basic) e l'operatore logico OR esclusivo (^ in Visual C# e Xor in Visual Basic) per modificare i valori di PublicationAttributes per la proprietà Attributes specificato.
(Facoltativo) Se si specifica un valore true per CachePropertyChanges, chiamare il metodo CommitPropertyChanges per eseguire il commit delle modifiche nel server. Se si specifica un valore false per CachePropertyChanges (impostazione predefinita), le modifiche vengono inviate immediatamente al server.
Esempi (RMO)
In questo esempio vengono impostati gli attributi di pubblicazione per una pubblicazione transazionale. Le modifiche vengono memorizzate nella cache finché non vengono inviate al server in modo esplicito.
// 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
In questo esempio viene disabilitata la replica DDL per una pubblicazione di tipo merge.
// 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
Contenuto correlato
- Pubblicare dati e oggetti di database
- Modificare le proprietà di pubblicazioni e articoli
- Apportare modifiche allo schema nei database di pubblicazione
- Replication System Stored Procedures Concepts
- Aggiungere ed eliminare articoli in una pubblicazione (SQL Server Management Studio)
- Visualizzare le informazioni ed eseguire attività usando Monitoraggio replica
- Visualizzare e modificare le proprietà degli articoli