Menampilkan dan Mengubah Properti Publikasi

Berlaku untuk:SQL ServerAzure SQL Managed Instance

Topik ini menjelaskan cara melihat dan memodifikasi properti publikasi di SQL Server dengan menggunakan SQL Server Management Studio, Transact-SQL, atau Replication Management Objects (RMO).

Dalam Topik Ini

Sebelum Anda mulai

Batasan dan Pembatasan

  • Beberapa properti tidak dapat dimodifikasi setelah publikasi dibuat, dan properti lain tidak dapat dimodifikasi jika ada langganan untuk publikasi. Properti yang tidak dapat dimodifikasi ditampilkan sebagai baca-saja.

Rekomendasi

Menggunakan SQL Server Management Studio

Tampilkan dan ubah properti publikasi dalam kotak dialog Properti Publikasi - <Publikasi> , yang tersedia di SQL Server Management Studio dan Monitor Replikasi. Untuk informasi tentang memulai Monitor Replikasi, lihat Memulai Monitor Replikasi.

Kotak dialog Properti Publikasi - <Publikasi> menyertakan halaman berikut ini:

  • Halaman Umum menyertakan nama dan deskripsi publikasi, nama database, jenis publikasi, dan pengaturan kedaluwarsa langganan.

  • Halaman Artikel sesuai dengan halaman Artikel di Panduan Publikasi Baru. Gunakan halaman ini untuk menambahkan dan menghapus artikel, dan untuk mengubah properti dan pemfilteran kolom untuk artikel.

  • Halaman Filter Baris sesuai dengan halaman Filter Baris Tabel di Panduan Publikasi Baru. Gunakan halaman ini untuk menambahkan, mengedit, dan menghapus filter baris statis untuk semua jenis publikasi, dan untuk menambahkan, mengedit, dan menghapus filter baris berparameter dan menggabungkan filter untuk publikasi gabungan.

  • Halaman Rekam Jepret memungkinkan Anda menentukan format dan lokasi rekam jepret, apakah rekam jepret harus dikompresi, dan skrip untuk dijalankan sebelum dan sesudah rekam jepret diterapkan.

  • Halaman Rekam Jepret FTP (untuk rekam jepret dan publikasi transaksi, dan menggabungkan publikasi untuk Penerbit yang menjalankan versi sebelum SQL Server 2005) memungkinkan Anda menentukan apakah Pelanggan dapat mengunduh file rekam jepret melalui Protokol Transfer File (FTP).

  • Halaman Rekam Jepret dan Internet FTP (untuk menggabungkan publikasi dari Penerbit yang menjalankan SQL Server 2005 atau yang lebih baru) memungkinkan Anda menentukan apakah Pelanggan dapat mengunduh file rekam jepret melalui FTP, dan apakah Pelanggan dapat menyinkronkan langganan melalui HTTPS.

  • Halaman Opsi Langganan memungkinkan Anda mengatur sejumlah opsi yang berlaku untuk semua langganan. Opsi berbeda tergantung pada jenis publikasi.

  • Halaman Daftar Akses Publikasi memungkinkan Anda menentukan login dan grup mana yang dapat mengakses publikasi.

  • Halaman Keamanan Agen memungkinkan Anda mengakses pengaturan untuk akun tempat agen berikut menjalankan dan membuat koneksi ke komputer dalam topologi replikasi: Agen Rekam Jepret untuk semua publikasi; Agen Pembaca Log untuk semua publikasi transaksional; dan Agen Pembaca Antrean untuk publikasi transaksional yang memungkinkan pembaruan langganan antrean.

  • Halaman Partisi Data (untuk menggabungkan publikasi dari Penerbit yang menjalankan SQL Server 2005 atau yang lebih baru) memungkinkan Anda menentukan apakah Pelanggan ke publikasi dengan filter berparameter dapat meminta rekam jepret jika tidak tersedia. Ini juga memungkinkan Anda untuk menghasilkan rekam jepret untuk satu atau beberapa partisi, baik sekali atau pada jadwal berulang.

Untuk melihat dan mengubah properti publikasi di Management Studio

  1. Koneksi ke Publisher di Management Studio, lalu perluas simpul server.

  2. Perluas folder Replikasi, lalu perluas folder Publikasi Lokal.

  3. Klik kanan publikasi, lalu klik Properti.

  4. Ubah properti apa pun jika perlu, lalu klik OK.

Untuk melihat dan mengubah properti publikasi di Monitor Replikasi

  1. Perluas grup Publisher di panel kiri Monitor Replikasi, lalu perluas Publisher.

  2. Klik kanan publikasi, lalu klik Properti.

  3. Ubah properti apa pun jika perlu, lalu klik OK.

Menggunakan T-SQL

Publikasi dapat dimodifikasi dan propertinya dikembalikan secara terprogram menggunakan prosedur tersimpan replikasi. Prosedur tersimpan yang Anda gunakan akan bergantung pada jenis publikasi.

Untuk melihat properti rekam jepret atau publikasi transaksi

  1. Jalankan sp_helppublication, menentukan nama publikasi untuk parameter @publication . Jika Anda tidak menentukan parameter ini, informasi tentang semua publikasi di Publisher dikembalikan.

Untuk mengubah properti rekam jepret atau publikasi transaksi

  1. Jalankan sp_changepublication, menentukan properti publikasi untuk diubah dalam parameter @property dan nilai baru properti ini dalam parameter @value.

    Catatan

    Jika perubahan akan memerlukan pembuatan rekam jepret baru, Anda juga harus menentukan nilai 1 untuk @force_invalidate_snapshot, dan jika perubahan akan mengharuskan Pelanggan diinisialisasi ulang, Anda harus menentukan nilai 1 untuk @force_reinit_subscription. Untuk informasi selengkapnya tentang properti yang, saat diubah, memerlukan rekam jepret atau reinisialisasi baru, lihat Mengubah Publikasi dan Properti Artikel.

Untuk melihat properti publikasi gabungan

  1. Jalankan sp_helpmergepublication, menentukan nama publikasi untuk parameter @publication . Jika Anda tidak menentukan parameter ini, informasi tentang semua publikasi di Publisher dikembalikan.

Untuk mengubah properti publikasi gabungan

  1. Jalankan sp_changemergepublication, menentukan properti publikasi yang diubah dalam parameter @property dan nilai baru properti ini dalam parameter @value.

    Catatan

    Jika perubahan akan memerlukan pembuatan rekam jepret baru, Anda juga harus menentukan nilai 1 untuk @force_invalidate_snapshot, dan jika perubahan akan mengharuskan Pelanggan diinisialisasi ulang, Anda harus menentukan nilai 1 untuk @force_reinit_subscription Untuk informasi lebih lanjut tentang properti yang, ketika diubah, memerlukan rekam jepret atau reinitialisasi baru, lihat Mengubah Publikasi dan Properti Artikel.

Untuk melihat properti rekam jepret

  1. Jalankan sp_helppublication_snapshot, menentukan nama publikasi untuk parameter @publication .

Untuk mengubah properti rekam jepret

  1. Jalankan sp_changepublication_snapshot, menentukan satu atau beberapa properti rekam jepret baru untuk parameter rekam jepret yang sesuai.

Contoh (Transact-SQL)

Contoh replikasi transaksional ini mengembalikan properti publikasi.

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

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

Contoh replikasi transaksional ini menonaktifkan replikasi skema untuk publikasi.

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

Contoh replikasi penggabungan ini mengembalikan properti publikasi.

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

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

Contoh replikasi penggabungan ini menonaktifkan replikasi skema untuk publikasi.

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

Menggunakan Objek Manajemen Replikasi (RMO)

Anda dapat mengubah publikasi dan mengakses propertinya secara terprogram dengan menggunakan Objek Manajemen Replikasi (RMO). Kelas RMO yang Anda gunakan untuk melihat atau mengubah properti publikasi bergantung pada jenis publikasi.

Untuk melihat atau mengubah properti rekam jepret atau publikasi transaksi

  1. Buat koneksi ke Publisher dengan menggunakan ServerConnection kelas .

  2. Buat instans TransPublication kelas, atur Name properti dan DatabaseName untuk publikasi, dan atur ConnectionContext properti ke koneksi yang dibuat di langkah 1.

  3. LoadProperties Panggil metode untuk mendapatkan properti objek. Jika metode ini mengembalikan false, properti publikasi di langkah 2 didefinisikan dengan tidak benar atau publikasi tidak ada.

  4. (Opsional) Untuk mengubah properti, atur nilai baru untuk satu atau beberapa properti yang dapat diatur. Gunakan operator AND logis (& di Microsoft Visual C# dan Dan di Microsoft Visual Basic) untuk menentukan apakah nilai tertentu PublicationAttributes diatur untuk Attributes properti . Gunakan operator OR logis inklusif (| di Visual C# dan Atau di Visual Basic) dan operator OR logis eksklusif (^ di Visual C# dan Xor di Visual Basic) untuk mengubah PublicationAttributes nilai untuk Attributes properti.

  5. (Opsional) Jika Anda menentukan nilai true untuk CachePropertyChanges, panggil CommitPropertyChanges metode untuk menerapkan perubahan pada server. Jika Anda menentukan nilai false untuk CachePropertyChanges (default), perubahan akan segera dikirim ke server.

Untuk melihat atau mengubah properti publikasi gabungan

  1. Buat koneksi ke Publisher dengan menggunakan ServerConnection kelas .

  2. Buat instans MergePublication kelas, atur Name properti dan DatabaseName untuk publikasi, dan atur ConnectionContext properti ke koneksi yang dibuat di langkah 1.

  3. LoadProperties Panggil metode untuk mendapatkan properti objek. Jika metode ini mengembalikan false, properti publikasi di langkah 2 didefinisikan dengan tidak benar atau publikasi tidak ada.

  4. (Opsional) Untuk mengubah properti, atur nilai baru untuk satu atau beberapa properti yang dapat diatur. Gunakan operator AND logis (& di Visual C# dan Dan di Visual Basic) untuk menentukan apakah nilai tertentu PublicationAttributes diatur untuk Attributes properti . Gunakan operator OR logis inklusif (| di Visual C# dan Atau di Visual Basic) dan operator OR logis eksklusif (^ di Visual C# dan Xor di Visual Basic) untuk mengubah PublicationAttributes nilai untuk Attributes properti.

  5. (Opsional) Jika Anda menentukan nilai true untuk CachePropertyChanges, panggil CommitPropertyChanges metode untuk menerapkan perubahan pada server. Jika Anda menentukan nilai false untuk CachePropertyChanges (default), perubahan akan segera dikirim ke server.

Contoh (RMO)

Contoh ini menetapkan atribut publikasi untuk publikasi transaksi. Perubahan di-cache hingga dikirim secara eksplisit ke server.

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

Contoh ini menonaktifkan replikasi DDL untuk publikasi gabungan.

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

Lihat Juga

Menerbitkan Objek Data dan Database
Mengubah Properti Publikasi dan Artikel
Membuat Perubahan Skema pada Database Publikasi
Konsep Prosedur Tersimpan Sistem Replikasi
Menambahkan Artikel ke dan Menghapus Artikel dari Publikasi (SQL Server Management Studio)
Menampilkan Informasi dan Melakukan Tugas menggunakan Monitor Replikasi
Menampilkan dan Mengubah Properti Artikel