Mengukur Latensi dan Memvalidasi Koneksi untuk Replikasi Transaksional

Berlaku untuk:SQL ServerAzure SQL Managed Instance

Topik ini menjelaskan cara mengukur latensi dan memvalidasi koneksi untuk replikasi transaksional di SQL Server dengan menggunakan Monitor Replikasi, Transact-SQL, atau Objek Manajemen Replikasi (RMO). Replikasi transaksional menyediakan fitur token pelacak, yang menyediakan cara mudah untuk mengukur latensi dalam topologi replikasi transaksional dan untuk memvalidasi koneksi antara Penerbit, Distributor, dan Pelanggan. Token (sejumlah kecil data) ditulis ke log transaksi database publikasi, ditandai seolah-olah itu adalah transaksi yang direplikasi biasa, dan dikirim melalui sistem, memungkinkan perhitungan:

  • Berapa banyak waktu yang berlalu antara transaksi yang dilakukan di Penerbit dan perintah terkait yang dimasukkan dalam database distribusi di Distributor.

  • Berapa banyak waktu yang berlalu antara perintah yang dimasukkan dalam database distribusi dan transaksi yang sesuai yang dilakukan pada Pelanggan.

Dari perhitungan ini, Anda dapat menjawab sejumlah pertanyaan, termasuk:

  • Pelanggan mana yang membutuhkan waktu paling lama untuk menerima perubahan dari Penerbit?

  • Dari Pelanggan yang diharapkan untuk menerima token pelacak, yang, jika ada, belum menerimanya?

Dalam Topik Ini

Sebelum Anda mulai

Batasan dan Pembatasan

Token pelacak juga dapat berguna saat menghentikan sistem, yang melibatkan penghentian semua aktivitas dan memverifikasi bahwa semua simpul telah menerima semua perubahan yang luar biasa. Untuk informasi selengkapnya, lihat Menghentikan Topologi Replikasi (Pemrograman Transact-SQL Replikasi).

Untuk menggunakan token pelacak, Anda harus menggunakan versi Microsoft SQL Server tertentu:

  • Distributor harus Microsoft SQL Server 2005 (9.x) atau yang lebih baru.

  • Penerbit harus SQL Server 2005 (9.x) atau yang lebih baru atau menjadi Penerbit Oracle.

  • Untuk langganan push, statistik token pelacak dikumpulkan dari Penerbit, Distributor, dan Pelanggan jika Pelanggan adalah Microsoft SQL Server 7.0 atau yang lebih baru.

  • Untuk langganan penarikan, statistik token pelacak dikumpulkan dari Pelanggan hanya jika Pelanggan adalah SQL Server 2005 (9.x) atau yang lebih baru. Jika Pelanggan adalah SQL Server 7.0 atau Microsoft SQL Server 2000 (8.x), statistik dikumpulkan hanya dari Penerbit dan Distributor.

Ada juga sejumlah masalah dan batasan lain yang perlu diperhatikan:

  • Langganan harus aktif untuk menerima token pelacak. Langganan aktif jika telah diinisialisasi.

  • Reinitialisasi menghapus token pelacak yang tertunda untuk langganan yang relevan.

  • Pelanggan hanya menerima token tracer yang dibuat setelah sinkronisasi awal mereka.

  • Token tracer tidak diteruskan oleh penerbitan ulang Pelanggan.

  • Setelah failover ke sekunder, Monitor Replikasi tidak dapat menyesuaikan nama instans penerbitan SQL Server dan akan terus menampilkan informasi replikasi dengan nama instans utama asli SQL Server. Setelah failover, token pelacak tidak dapat dimasukkan dengan menggunakan Monitor Replikasi, namun token pelacak yang dimasukkan pada penerbit baru dengan menggunakan Transact-SQL, terlihat di Monitor Replikasi.

Menggunakan Monitor Replikasi SQL Server

Untuk informasi tentang memulai Monitor Replikasi, lihat Memulai Monitor Replikasi.

Untuk menyisipkan token pelacak dan melihat informasi pada token

  1. Perluas grup Publisher di panel kiri, perluas Publisher, lalu klik publikasi.

  2. Klik tab Token Tracer.

  3. Klik Sisipkan Pelacak.

  4. Lihat waktu yang berlalu untuk token pelacak di kolom berikut: Publisher ke Distributor, Distributor ke Pelanggan, Total Latensi. Nilai Tertunda menunjukkan bahwa token belum mencapai titik tertentu.

Untuk melihat informasi tentang token pelacak yang disisipkan sebelumnya

  1. Perluas grup Publisher di panel kiri, perluas Publisher, lalu klik publikasi.

  2. Klik tab Token Tracer.

  3. Pilih waktu dari daftar drop-down Waktu yang disisipkan .

  4. Lihat waktu yang berlalu untuk token pelacak di kolom berikut: Publisher ke Distributor, Distributor ke Pelanggan, Total Latensi. Nilai Tertunda menunjukkan bahwa token belum mencapai titik tertentu.

    Catatan

    Informasi token tracer dipertahankan untuk periode waktu yang sama dengan data historis lainnya, yang diatur oleh periode retensi riwayat database distribusi. Untuk informasi tentang mengubah properti database distribusi, lihat Menampilkan dan Mengubah Properti Distributor dan Penerbit.

Menggunakan T-SQL

Untuk memposting token pelacak ke publikasi transaksi

  1. (Opsional) Di Publisher pada database publikasi, jalankan sp_helppublication (Transact-SQL). Verifikasi bahwa publikasi ada dan statusnya aktif.

  2. (Opsional) Di Publisher pada database publikasi, jalankan sp_helpsubscription (Transact-SQL). Verifikasi bahwa langganan ada dan statusnya aktif.

  3. Di Publisher pada database publikasi, jalankan sp_posttracertoken (Transact-SQL), menentukan @publication. Perhatikan nilai parameter output @tracer_token_id .

Untuk menentukan latensi dan memvalidasi koneksi untuk publikasi transaksional

  1. Posting token pelacak ke publikasi menggunakan prosedur sebelumnya.

  2. Di Publisher pada database publikasi, jalankan sp_helptracertokens (Transact-SQL), menentukan @publication. Ini mengembalikan daftar semua token pelacak yang diposting ke publikasi. Perhatikan tracer_id yang diinginkan dalam tataan hasil.

  3. Di Publisher pada database publikasi, jalankan sp_helptracertokenhistory (Transact-SQL), menentukan @publication dan ID token pelacak dari langkah 2 untuk @tracer_id. Ini mengembalikan informasi latensi untuk token pelacak yang dipilih.

Untuk menghapus token pelacak

  1. Di Publisher pada database publikasi, jalankan sp_helptracertokens (Transact-SQL), menentukan @publication. Ini mengembalikan daftar semua token pelacak yang diposting ke publikasi. Perhatikan tracer_id agar token pelacak dihapus dalam tataan hasil.

  2. Di Penerbit pada database publikasi, jalankan sp_deletetracertokenhistory (Transact-SQL), menentukan @publication dan ID pelacak yang akan dihapus dari langkah 2 untuk @tracer_id.

Contoh (Transact-SQL)

Contoh ini memposting rekaman token pelacak dan menggunakan ID yang dikembalikan dari token pelacak yang diposting untuk melihat informasi latensi.

DECLARE @publication AS sysname;
DECLARE @tokenID AS int;
SET @publication = N'AdvWorksProductTran'; 

USE [AdventureWorks2022]

-- Insert a new tracer token in the publication database.
EXEC sys.sp_posttracertoken 
  @publication = @publication,
  @tracer_token_id = @tokenID OUTPUT;
SELECT 'The ID of the new tracer token is ''' + 
    CONVERT(varchar,@tokenID) + '''.'
GO

-- Wait 10 seconds for the token to make it to the Subscriber.
WAITFOR DELAY '00:00:10';
GO

-- Get latency information for the last inserted token.
DECLARE @publication AS sysname;
DECLARE @tokenID AS int;
SET @publication = N'AdvWorksProductTran'; 

CREATE TABLE #tokens (tracer_id int, publisher_commit datetime)

-- Return tracer token information to a temp table.
INSERT #tokens (tracer_id, publisher_commit)
EXEC sys.sp_helptracertokens @publication = @publication;
SET @tokenID = (SELECT TOP 1 tracer_id FROM #tokens
ORDER BY publisher_commit DESC)
DROP TABLE #tokens

-- Get history for the tracer token.
EXEC sys.sp_helptracertokenhistory 
  @publication = @publication, 
  @tracer_id = @tokenID;
GO

Menggunakan Objek Manajemen Replikasi (RMO)

Untuk memposting token pelacak ke publikasi transaksi

  1. Buat koneksi ke Publisher dengan menggunakan ServerConnection kelas .

  2. Membuat instans kelas TransPublication.

  3. Atur Name properti dan DatabaseName untuk publikasi, dan atur ConnectionContext properti ke koneksi yang dibuat di langkah 1.

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

  5. Panggil PostTracerToken metode. Metode ini menyisipkan token pelacak ke dalam log transaksi publikasi.

Untuk menentukan latensi dan memvalidasi koneksi untuk publikasi transaksional

  1. Buat koneksi ke Distributor dengan menggunakan ServerConnection kelas .

  2. Membuat instans kelas PublicationMonitor.

  3. Atur Nameproperti , DistributionDBName, PublisherName, dan PublicationDBName , dan atur ConnectionContext properti ke koneksi yang dibuat di langkah 1.

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

  5. Panggil EnumTracerTokens metode. Transmisikan objek yang dikembalikan ArrayList ke array TracerToken objek.

  6. Panggil EnumTracerTokenHistory metode. Berikan nilai TracerTokenId untuk token pelacak dari langkah 5. Ini mengembalikan informasi latensi untuk token pelacak yang dipilih sebagai DataSet objek. Jika semua informasi token pelacak dikembalikan, koneksi antara Penerbit dan Distributor dan koneksi antara Distributor dan Pelanggan baik ada dan topologi replikasi berfungsi.

Untuk menghapus token pelacak

  1. Buat koneksi ke Distributor dengan menggunakan ServerConnection kelas .

  2. Membuat instans kelas PublicationMonitor.

  3. Atur Nameproperti , DistributionDBName, PublisherName, dan PublicationDBName , dan atur ConnectionContext properti ke koneksi yang dibuat di langkah 1.

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

  5. Panggil EnumTracerTokens metode. Transmisikan objek yang dikembalikan ArrayList ke array TracerToken objek.

  6. Panggil CleanUpTracerTokenHistory metode. Teruskan salah satu nilai berikut:

    • TracerTokenId untuk token pelacak dari langkah 5. Ini menghapus informasi untuk token yang dipilih.

    • Objek DateTime. Ini menghapus informasi untuk semua token yang lebih lama dari tanggal dan waktu yang ditentukan.