Visa och ändra publikationsegenskaper

gäller för:SQL ServerAzure 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

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

  1. Anslut till Publisher i Management Studio och expandera sedan servernoden.

  2. Expandera mappen Replikering och expandera sedan mappen Lokala publikationer .

  3. Högerklicka på en publikation och klicka sedan på Egenskaper.

  4. Ändra eventuella egenskaper om det behövs och klicka sedan på OK.

För att se och ändra publiceringsegenskaper i Replication Monitor

  1. Expandera en Publisher-grupp i vänstra panelen i Replication Monitor, och expandera sedan en Publisher.

  2. Högerklicka på en publikation och klicka sedan på Egenskaper.

  3. Ä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

  1. 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

  1. 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

  1. 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

  1. 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

  1. Utför sp_helppublication_snapshot och ange namnet på publikationen för den @publication parametern.

För att ändra egenskaperna hos en snapshot

  1. 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

  1. Skapa en anslutning till Publisher med hjälp av klassen ServerConnection.

  2. 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.

  3. 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.

  4. (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# och And i Microsoft Visual Basic) för att avgöra om ett givet vä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.

  5. (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

  1. Skapa en anslutning till Publisher med hjälp av klassen ServerConnection.

  2. 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.

  3. 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.

  4. (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# och And i Visual Basic) för att avgöra om ett givet vä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.

  5. (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