Zobacz i modyfikuj właściwości publikacji

Dotyczy:SQL ServerAzure SQL Managed Instance

Ten temat opisuje, jak przeglądać i modyfikować właściwości publikacji w SQL Server za pomocą SQL Server Management Studio, Transact-SQL lub Replication Management Objects (RMO).

Ograniczenia i ograniczenia

  • Niektóre własności nie mogą być modyfikowane po utworzeniu publikacji, a inne nie mogą być modyfikowane, jeśli istnieją subskrypcje publikacji. Właściwości, których nie można zmienić, są wyświetlane jako tylko do odczytu.

Zalecenia

Korzystanie z programu SQL Server Management Studio

Zobacz i modyfikuj właściwości publikacji w oknie dialogowym Właściwości Publikacji – <Publikacja>, które jest dostępne w SQL Server Management Studio i Monitorze replikacji. Aby uzyskać informacje na temat uruchamiania monitora replikacji, zobacz Uruchamianie monitora replikacji.

Okno dialogowe Właściwości Publikacji - <Publikacja> zawiera następujące strony:

  • Strona ogólna zawiera nazwę i opis publikacji, nazwę bazy danych, typ publikacji oraz ustawienia wygaśnięcia subskrypcji.

  • Strona Artykuły odpowiada stronie Artykuły w Kreatorze nowej publikacji. Użyj tej strony do dodawania i usuwania artykułów oraz zmiany właściwości i filtrowania kolumn dla artykułów.

  • Strona Filtruj wiersze odpowiada stronie Filtruj wiersze tabeli w kreatorze nowej publikacji. Użyj tej strony do dodawania, edytowania i usuwania statycznych filtrów wierszy dla wszystkich typów publikacji oraz do dodawania, edytowania i usuwania parametryzowanych filtrów wierszowych oraz filtrów łączenia dla publikacji scalanych.

  • Strona Snapshot pozwala określić format i lokalizację snapshota, czy migawka powinna być skompresowana oraz skrypty uruchamiane przed i po jej zastosowaniu.

  • Strona FTP Snapshot (dla publikacji migawkowych i transakcyjnych oraz publikacji typu merge dla wydawców korzystających z wersji wcześniejszych niż SQL Server 2005) umożliwia określenie, czy subskrybenci mogą pobierać pliki migawki za pośrednictwem protokołu FTP (File Transfer Protocol).

  • Strona FTP Snapshot i Internet (do łączenia publikacji od wydawców działających na SQL Server 2005 lub nowszych) pozwala określić, czy subskrybenci mogą pobierać pliki snapshot przez FTP oraz czy subskrybenci mogą synchronizować subskrypcje przez HTTPS.

  • Strona Opcje subskrypcji pozwala ustawić szereg opcji obowiązujących dla wszystkich subskrypcji. Opcje różnią się w zależności od rodzaju publikacji.

  • Strona Listy Dostępu do Publikacji pozwala określić, które logowania i grupy mają dostęp do publikacji.

  • Strona Agent Security pozwala uzyskać dostęp do ustawień kont, pod którymi działają poniżsi agenci, oraz nawiązywać połączenia z komputerami w topologii replikacji: Snapshot Agent dla wszystkich publikacji; Log Reader Agent dla wszystkich publikacji transakcyjnych; oraz Queue Reader Agent dla publikacji transakcyjnych umożliwiających kolejkowe aktualizacje subskrypcji.

  • Strona Data Partitions (w przypadku publikacji scalanych od wydawców korzystających z programu SQL Server 2005 lub nowszego) umożliwia określenie, czy subskrybenci publikacji z filtrami sparametryzowanymi mogą żądać migawki, jeśli nie jest ona dostępna. Umożliwia także generowanie migawek dla jednej bądź wielu partycji, jednorazowo albo zgodnie z harmonogramem cyklicznym.

Aby przeglądać i modyfikować właściwości publikacji w Management Studio

  1. Połącz się z programem Publisher w programie Management Studio, a następnie rozwiń węzeł serwera.

  2. Rozwiń folder Replikacja , a następnie rozwiń folder Publikacje lokalne .

  3. Kliknij prawym przyciskiem myszy na publikację, a następnie kliknij Właściwości.

  4. W razie potrzeby zmodyfikuj wszelkie właściwości, a następnie kliknij przycisk OK.

Aby przeglądać i modyfikować właściwości publikacji w Monitorze Replikacji

  1. Rozwiń grupę Publisher w lewym panelu Monitora replikacji, a następnie rozwiń Publisher.

  2. Kliknij prawym przyciskiem myszy na publikację, a następnie kliknij Właściwości.

  3. W razie potrzeby zmodyfikuj wszelkie właściwości, a następnie kliknij przycisk OK.

Korzystanie z Transact-SQL

Publikacje mogą być modyfikowane, a ich właściwości mogą być programowo pobierane za pomocą procedur składowanych replikacji. Procedury przechowywane, których używasz, zależą od rodzaju publikacji.

Aby zobaczyć właściwości snapshotu lub publikacji transakcyjnej

  1. Wykonaj sp_helppublication, określając nazwę publikacji dla parametru @publication . Jeśli nie określisz tego parametru, zwracane są informacje o wszystkich publikacjach w Publisher.

Aby zmienić właściwości migawki lub publikacji transakcyjnej

  1. Wykonaj sp_changepublication, określając właściwość publikacji do zmiany parametru @property oraz nową wartość tej właściwości w parametrze @value .

    Uwaga / Notatka

    Jeśli zmiana będzie wymagała wygenerowania nowego snapshota, musisz również określić wartość 1 dla @force_invalidate_snapshot, a jeśli zmiana będzie wymagać ponownej inicjalizacji Subscribers, musisz określić wartość 1 dla @force_reinit_subscription. Więcej informacji o właściwościach, które po zmianie wymagają nowego snapshotu lub ponownej inicjalizacji, można znaleźć w sekcji Zmień publikację i właściwości artykułu.

Aby wyświetlić właściwości publikacji scalanej

  1. Wykonaj sp_helpmergepublication, określając nazwę publikacji jako parametr @publication . Jeśli nie określisz tego parametru, zwracane są informacje o wszystkich publikacjach w Publisher.

Aby zmienić właściwości publikacji scalonej

  1. Wykonaj sp_changemergepublication, określając zmianę właściwości publikacji w parametrze @property oraz nową wartość tej właściwości w parametrze @value .

    Uwaga / Notatka

    Jeśli zmiana będzie wymagać wygenerowania nowego snapshota, musisz również określić wartość 1 dla @force_invalidate_snapshot, a jeśli zmiana będzie wymagać ponownej inicjalizacji subskrybentów, musisz podać wartość 1 dla @force_reinit_subscription Aby uzyskać więcej informacji o właściwościach, które po zmianie wymagają nowego snapshotu lub reinicjalizacji, zobacz Zmień publikację i Właściwości artykułu.

Aby wyświetlić właściwości migawki

  1. Wykonaj sp_helppublication_snapshot, określając nazwę publikacji jako parametr @publication .

Aby zmienić właściwości migawki

  1. Wykonaj sp_changepublication_snapshot, określając jedną lub więcej nowych właściwości snapshotu dla odpowiednich parametrów snapshotu.

Przykłady (Transact-SQL)

Ten przykład replikacji transakcyjnej zwraca właściwości publikacji.

DECLARE @myTranPub AS sysname
SET @myTranPub = N'AdvWorksProductTran' 

USE [AdventureWorks2022]
EXEC sp_helppublication @publication = @myTranPub
GO

Ten przykład replikacji transakcyjnej wyłącza replikację schematu dla publikacji.

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

W tym przykładzie replikacji scalającej zwracane są właściwości publikacji.

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

USE [AdventureWorks2022]
EXEC sp_helpmergepublication @publication = @publication;
GO

Ten przykład replikacji złączonej wyłącza replikację schematu w publikacji.

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

Korzystanie z obiektów zarządzania replikacją (RMO)

Możesz modyfikować publikacje i programowo uzyskiwać dostęp do ich właściwości, korzystając z Obiektów Zarządzania Replikacją (RMO). Klasy RMO, których używasz do przeglądania lub modyfikowania właściwości publikacji, zależą od rodzaju publikacji.

Aby zobaczyć lub modyfikować właściwości migawki lub publikacji transakcyjnej

  1. Utwórz połączenie z programem Publisher przy użyciu klasy ServerConnection.

  2. Utwórz instancję klasy TransPublication, ustaw właściwości Name i DatabaseName dla publikacji oraz ustaw właściwość ConnectionContext na połączenie utworzone w kroku 1.

  3. Wywołaj metodę LoadProperties, aby uzyskać właściwości obiektu. Jeśli ta metoda zwraca false, właściwości publikacji w kroku 2 zostały niepoprawnie zdefiniowane lub publikacja nie istnieje.

  4. (Opcjonalnie) Aby zmienić właściwości, ustaw nową wartość dla jednej lub więcej z właściwości, które można ustawić. Użyj logicznego operatora AND (& w Microsoft Visual C# oraz And w Microsoft Visual Basic), aby określić, czy dla właściwości ustawiono wartość . Użyj inkluzywnego logicznego operatora OR (|w Visual C# i Or w Visual Basic) oraz wyłącznego operatora logicznego OR (^w Visual C# i Xor w Visual Basic), aby zmienić PublicationAttributes wartości dla tej Attributes właściwości.

  5. (Opcjonalnie) Jeśli określiłeś wartość true dla CachePropertyChanges, wywołaj metodę CommitPropertyChanges zatwierdzania zmian na serwerze. Jeśli określiłeś wartość false dla CachePropertyChanges (domyślnie), zmiany są natychmiast wysyłane na serwer.

Aby zobaczyć lub modyfikować właściwości publikacji scalonej

  1. Utwórz połączenie z programem Publisher przy użyciu klasy ServerConnection.

  2. Utwórz instancję klasy MergePublication, ustaw właściwości Name i DatabaseName dla publikacji oraz ustaw właściwość ConnectionContext na połączenie utworzone w kroku 1.

  3. Wywołaj metodę LoadProperties, aby uzyskać właściwości obiektu. Jeśli ta metoda zwraca false, właściwości publikacji w kroku 2 zostały niepoprawnie zdefiniowane lub publikacja nie istnieje.

  4. (Opcjonalnie) Aby zmienić właściwości, ustaw nową wartość dla jednej lub więcej z właściwości, które można ustawić. Użyj operatora logicznego AND (& w Visual C# oraz And w Visual Basic), aby określić, czy określona wartość jest ustawiona dla właściwości . Użyj inkluzywnego logicznego operatora OR (|w Visual C# i Or w Visual Basic) oraz wyłącznego operatora logicznego OR (^w Visual C# i Xor w Visual Basic), aby zmienić PublicationAttributes wartości dla tej Attributes właściwości.

  5. (Opcjonalnie) Jeśli określiłeś wartość true dla CachePropertyChanges, wywołaj metodę CommitPropertyChanges zatwierdzania zmian na serwerze. Jeśli określiłeś wartość false dla CachePropertyChanges (domyślnie), zmiany są natychmiast wysyłane na serwer.

Przykłady (RMO)

Ten przykład ustala atrybuty publikacji dla publikacji transakcyjnej. Zmiany są przechowywane w pamięci podręcznej, dopóki nie zostaną wysłane bezpośrednio na serwer.

// 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

Ten przykład wyłącza replikację DDL dla publikacji scalanej.

// 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