Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Managed Instance
Detta ämne beskriver hur man kan visa och ändra publiceringsegenskaper i SQL Server genom att använda SQL Server Management Studio, Transact-SQL eller Replication Management Objects (RMO).
Begränsningar och restriktioner
- Vissa egenskaper kan inte ändras efter att en publikation har skapats, och andra kan inte ändras om det finns prenumerationer på publikationen. Egenskaper som inte kan ändras visas som skrivskyddade.
Recommendations
- När en publikation har skapats kräver vissa egenskapsändringar en ny ögonblicksbild. Om en publikation har prenumerationer kräver vissa ändringar också att alla prenumerationer initieras på nytt. Mer information finns i Ändra publikations- och artikelegenskaper och Lägg till artiklar i och ta bort artiklar från befintliga publikationer.
Använda SQL Server Management Studio
Visa och ändra publiceringsegenskaper i dialogrutan Publication Properties - <Publication>, som finns tillgänglig i SQL Server Management Studio och Replication Monitor. Information om hur du startar Replikeringsövervakaren finns i Starta replikeringsövervakaren.
Dialogrutan Publikationsegenskaper - <Publikation> innehåller följande sidor:
Allmänna sidan innehåller publikationens namn och beskrivning, databasens namn, publikationstyp och prenumerationens utgångsläge.
Artiklarsidanmotsvarar artikelsidan i Guiden för ny publikation. Använd denna sida för att lägga till och ta bort artiklar samt för att ändra egenskaper och kolumnfiltrering för artiklar.
Sidan Filter Rows motsvarar sidan Filter Table Rows i New Publication Wizard. Använd denna sida för att lägga till, redigera och ta bort statiska radfilter för alla typer av publikationer, samt för att lägga till, redigera och ta bort parameteriserade radfilter och join-filter för sammanslagna publikationer.
Snapshot-sidan låter dig ange format och plats för snapshoten, om snapshoten ska komprimeras och skript som ska köras före och efter att snapshoten appliceras.
FTP Snapshot-sidan (för snapshot- och transaktionspublikationer, samt sammanslagningspublikationer för utgivare som kör versioner före SQL Server 2005) låter dig specificera om prenumeranter kan ladda ner snapshot-filer via File Transfer Protocol (FTP).
FTP Snapshot och Internet-sidan (för sammanslagningspublikationer från förlag som kör SQL Server 2005 eller senare) låter dig ange om prenumeranter kan ladda ner snapshot-filer via FTP, och om prenumeranter kan synkronisera prenumerationer via HTTPS.
Sidan för prenumerationsalternativ låter dig ställa in ett antal alternativ som gäller för alla prenumerationer. Alternativen varierar beroende på vilken publikation det är.
Sidan Publication Access List låter dig ange vilka inloggningar och grupper som kan komma åt en publikation.
Sidan Agent Security låter dig komma åt inställningar för de konton under vilka följande agenter körs och skapa anslutningar till datorerna i en replikationstopologi: Snapshot Agent för alla publikationer; Log Reader Agent för alla transaktionella publikationer; och Queue Reader Agent för transaktionella publikationer som tillåter köade uppdateringsprenumerationer.
Datapartitionssidan (för sammanslagna publikationer från förlag som kör SQL Server 2005 eller senare) låter dig ange om prenumeranter på publikationer med parameteriserade filter kan begära en snapshot om en sådan inte finns tillgänglig. Det låter dig också generera snapshots för en eller flera partitioner, antingen en gång eller på ett återkommande schema.
För att se och ändra publikationsegenskaper i Management Studio
Anslut till Publisher i Management Studio och expandera sedan servernoden.
Expandera mappen Replikering och expandera sedan mappen Lokala publikationer .
Högerklicka på en publikation och klicka sedan på Egenskaper.
Ändra eventuella egenskaper om det behövs och klicka sedan på OK.
För att se och ändra publiceringsegenskaper i Replication Monitor
Expandera en Publisher-grupp i vänstra panelen i Replication Monitor, och expandera sedan en Publisher.
Högerklicka på en publikation och klicka sedan på Egenskaper.
Ändra eventuella egenskaper om det behövs och klicka sedan på OK.
Använda Transact-SQL
Publikationer kan modifieras och deras egenskaper returneras programmatiskt med hjälp av replikationslagrade procedurer. De lagrade procedurer du använder beror på vilken typ av publikation det är.
För att se egenskaperna hos en snapshot eller transaktionell publikation
- Kör sp_helppublication och specificera namnet på publikationen för @publication parameter. Om du inte anger denna parameter returneras information om alla publikationer hos Publisher.
Att ändra egenskaperna hos en ögonblicksbild eller transaktionell publikation
Utför sp_changepublication, och specificera publiceringsegenskapen att ändra i den @property parametern samt det nya värdet av denna egenskap i den @value parametern.
Anmärkning
Om ändringen kräver generering av en ny snapshot måste du också ange värdet 1 för @force_invalidate_snapshot, och om ändringen kräver att prenumeranter reinitieras måste du ange värdet 1 för @force_reinit_subscription. För mer information om de egenskaper som, när de ändras, kräver en ny snapshot eller ominitialisering, se Ändra publikation och Artikelegenskaper.
För att se egenskaperna hos en sammanslagningspublikation
- Utför sp_helpmergepublication och specificera namnet på publikationen för den @publication parametern. Om du inte anger denna parameter returneras information om alla publikationer hos Publisher.
Att ändra egenskaperna hos en sammanslagningspublikation
Kör sp_changemergepublication, och specificera publiceringsegenskapen som ändras i @property-parametern samt det nya värdet av denna egenskap i @value-parametern .
Anmärkning
Om ändringen kräver generering av en ny snapshot måste du också ange värdet 1 för @force_invalidate_snapshot, och om ändringen kräver att Abonnenter initieras om måste du ange värdet 1 för @force_reinit_subscription För mer information om egenskaper som, när de ändras, kräver en ny snapshot eller ominitialisering, se Ändra publikation och artikelegenskaper.
För att se egenskaperna hos en snapshot
- Utför sp_helppublication_snapshot och ange namnet på publikationen för den @publication parametern.
För att ändra egenskaperna hos en snapshot
- Kör sp_changepublication_snapshot och specificera en eller flera av de nya snapshot-egenskaperna för lämpliga snapshot-parametrar.
Exempel (Transact-SQL)
Detta transaktionella replikationsexempel återger publikationens egenskaper.
DECLARE @myTranPub AS sysname
SET @myTranPub = N'AdvWorksProductTran'
USE [AdventureWorks2022]
EXEC sp_helppublication @publication = @myTranPub
GO
Detta exempel på transaktionell replikation inaktiverar schemareplikering för publikationen.
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
Detta exempel på sammanfogningsreplikering returnerar publikationens egenskaper.
DECLARE @publication AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
USE [AdventureWorks2022]
EXEC sp_helpmergepublication @publication = @publication;
GO
Detta exempel på kopplingsreplikering inaktiverar replikering av schema för publikationen.
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
Använda replikeringshanteringsobjekt (RMO)
Du kan modifiera publikationer och komma åt deras egenskaper programmatiskt genom att använda Replication Management Objects (RMO). De RMO-klasser du använder för att se eller ändra publiceringsegenskaper beror på vilken typ av publikation det är.
För att se eller ändra egenskaper hos en snapshot eller transaktionell publikation
Skapa en anslutning till Publisher med hjälp av klassen ServerConnection.
Skapa en instans av klassen TransPublication, ställ in egenskaperna DatabaseName och Name för publikationen och sätt egenskapen ConnectionContext till den anslutning som skapades i steg 1.
Anropa metoden LoadProperties för att hämta objektets egenskaper. Om den här metoden returnerar falsehar publikationsegenskaperna i steg 2 definierats felaktigt eller så finns publikationen inte.
(Valfritt) För att byta egenskaper, sätt ett nytt värde för en eller flera av de ställbara egenskaperna. Använd den logiska OCH-operatorn (
& i Microsoft Visual C# ochAnd i Microsoft Visual Basic) för att avgöra om ett givetvärde är satt för egenskapen . Använd den inkluderande logiska ELLER-operatorn (|i Visual C# och Or i Visual Basic) och den exklusiva logiska ELLER-operatorn (^i Visual C# och Xor i Visual Basic) för att ändra värdena PublicationAttributes för egenskapenAttributes. (Valfritt) Om du specificerat ett värde på true för CachePropertyChanges, anropar CommitPropertyChanges metoden för att commita ändringar på servern. Om du angav ett falskt värde förCachePropertyChanges (standard), skickas ändringarna omedelbart till servern.
För att visa eller ändra egenskaper hos en sammanslagningspublikation
Skapa en anslutning till Publisher med hjälp av klassen ServerConnection.
Skapa en instans av klassen MergePublication, ställ in egenskaperna DatabaseName och Name för publikationen och sätt egenskapen ConnectionContext till den anslutning som skapades i steg 1.
Anropa metoden LoadProperties för att hämta objektets egenskaper. Om den här metoden returnerar falsehar publikationsegenskaperna i steg 2 definierats felaktigt eller så finns publikationen inte.
(Valfritt) För att byta egenskaper, sätt ett nytt värde för en eller flera av de ställbara egenskaperna. Använd den logiska AND-operatorn (
& i Visual C# ochAnd i Visual Basic) för att avgöra om ett givetvärde är satt för egenskapen . Använd den inkluderande logiska ELLER-operatorn (|i Visual C# och Or i Visual Basic) och den exklusiva logiska ELLER-operatorn (^i Visual C# och Xor i Visual Basic) för att ändra värdena PublicationAttributes för egenskapenAttributes. (Valfritt) Om du specificerat ett värde på true för CachePropertyChanges, anropar CommitPropertyChanges metoden för att commita ändringar på servern. Om du angav ett falskt värde förCachePropertyChanges (standard), skickas ändringarna omedelbart till servern.
Exempel (RMO)
Detta exempel anger publiceringsattribut för en transaktionell publikation. Ändringarna cachas tills de uttryckligen skickas till servern.
// 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
Detta exempel inaktiverar DDL-replikering för en sammanslagningspublicering.
// 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
Relaterat innehåll
- Publicera data och databasobjekt
- Ändra publikation och artikelegenskaper
- Göra schemaändringar i publikationsdatabaser
- Begrepp för lagrade procedurer för replikeringssystem
- Lägg till artiklar i och ta bort artiklar från en publikation
- Visa information och utföra uppgifter med replikeringsövervakaren
- Visa och ändra artikelegenskaper