Bagikan melalui


Agen Distribusi Replikasi

Berlaku untuk: SQL ServerAzure SQL Database

Agen Distribusi Replikasi adalah agen yang dapat dieksekusi yang memindahkan snapshot (untuk replikasi snapshot dan replikasi transaksional) dan transaksi yang disimpan dalam tabel database distribusi (untuk replikasi transaksional) ke tabel tujuan di Pelanggan.

Catatan

Parameter dapat ditentukan dalam urutan apa pun. Ketika parameter opsional tidak ditentukan, nilai dari pengaturan registri yang telah ditentukan sebelumnya di komputer lokal digunakan.

Sintaks

distrib [ -? ]
-Publisher server_name [ \instance_name ]
-PublisherDB publisher_database
-Subscriber server_name [ \instance_name ]
-SubscriberDB subscriber_database
[ -AltSnapshotFolder alt_snapshot_folder_path ]
[ -BcpBatchSize bcp_batch_size ]
[ -CommitBatchSize commit_batch_size ]
[ -CommitBatchThreshold commit_batch_threshold ]
[ -Continuous ]
[ -DefinitionFile def_path_and_file_name ]
[ -Distributor distributor ]
[ -DistributorLogin distributor_login ]
[ -DistributorPassword distributor_password ]
[ -DistributorSecurityMode [ 0 | 1 ] ]
[ -EncryptionLevel [ 0 | 1 | 2 | 3 | 4 ] ]
[ -ErrorFile error_path_and_file_name ]
[ -ExtendedEventConfigFile configuration_path_and_file_name ]
[ -FileTransferType [ 0 | 1 ] ]
[ -FtpAddress ftp_address ]
[ -FtpPassword ftp_password ]
[ -FtpPort ftp_port ]
[ -FtpUserName ftp_user_name ]
[ -HistoryVerboseLevel [ 0 | 1 | 2 | 3 ] ]
[ -Hostname host_name ]
[ -KeepAliveMessageInterval keep_alive_message_interval_seconds ]
[ -LoginTimeOut login_time_out_seconds ]
[ -MaxBcpThreads ]
[ -MaxDeliveredTransactions number_of_transactions ]
[ -MessageInterval message_interval ]
[ -MultiSubnetFailover [ 0 | 1 ] ]
[ -OledbStreamThreshold oledb_stream_threshold ]
[ -Output output_path_and_file_name ]
[ -OutputVerboseLevel [ 0 | 1 | 2 ] ]
[ -PacketSize packet_size ]
[ -PollingInterval polling_interval ]
[ -ProfileName profile_name ]
[ -Publication publication ]
[ -QueryTimeOut query_time_out_seconds ]
[ -QuotedIdentifier quoted_identifier ]
[ -SkipErrors native_error_id [ :...n ] ]
[ -SubscriberDatabasePath subscriber_path ]
[ -SubscriberLogin subscriber_login ]
[ -SubscriberPassword subscriber_password ]
[ -SubscriberSecurityMode [ 0 | 1 ] ]
[ -SubscriberType [ 0 | 1 | 3 ] ]
[ -SubscriptionStreams [ 1 | 2 | ...64 ] ]
[ -SubscriptionTableName subscription_table ]
[ -SubscriptionType [ 0 | 1 | 2 ] ]
[ -TransactionsPerHistory [ 0 | 1 | ...10000 ] ]
[ -UseDTS ]
[ -UseInprocLoader ]
[ -UseOledbStreaming ]

Argumen

-?

Mencetak semua parameter yang tersedia.

-Penerbit server_name [ \instance_name ]

Nama Publisher. Tentukan <server_name> untuk instans default Microsoft SQL Server di server tersebut. Tentukan <server_name>\<instance_name> untuk instans SQL Server bernama di server tersebut. Jika database penerbit Anda berada dalam grup ketersediaan (AG), ini masih mencerminkan nama server penerbit utama asli karena sp_redirect_publisher. Ini tidak mencerminkan nama pendengar AG.

-PublisherDB publisher_database

Nama database Publisher.

-Pelanggan server_name [ \instance_name ]

Nama Pelanggan. Tentukan <server_name> untuk instans default SQL Server di server tersebut. Tentukan <server_name>\<instance_name> untuk instans SQL Server bernama di server tersebut. Jika database pelanggan Anda berada dalam AG, ini harus mencerminkan nama pendengar AG.

-SubscriberDB subscriber_database

Nama database Pelanggan.

-AltSnapshotFolder alt_snapshot_folder_path

Jalur ke folder yang berisi rekam jepret awal untuk langganan.

-BcpBatchSize bcp_batch_size

Jumlah baris yang akan dikirim dalam operasi penyalinan massal. Saat Anda melakukan bcp in operasi, ukuran batch adalah jumlah baris yang akan dikirim ke server sebagai satu transaksi, dan juga jumlah baris yang harus dikirim sebelum Agen Distribusi mencatat pesan kemajuan bcp . Saat Anda melakukan bcp out operasi, ukuran 1000 batch tetap digunakan.

-KomitBatchSize commit_batch_size

Jumlah transaksi yang akan dikeluarkan kepada Pelanggan sebelum pernyataan COMMIT diterbitkan. Defaultnya adalah 100 dan maksnya adalah 10000. Parameter ini diabaikan ketika rekam jepret diterapkan pada pelanggan oleh Agen Distribusi.

-CommitBatchThreshold commit_batch_threshold

Jumlah perintah replikasi yang akan dikeluarkan kepada Pelanggan sebelum pernyataan COMMIT dikeluarkan. Defaultnya adalah 1000 dan maksnya adalah 10000. Parameter ini diabaikan ketika rekam jepret diterapkan pada pelanggan oleh Agen Distribusi.

-Terus-menerus

Menentukan apakah agen terus mencoba melakukan polling transaksi yang direplikasi. Jika ditentukan, agen melakukan polling transaksi yang direplikasi dari sumber pada interval polling, bahkan jika tidak ada transaksi yang tertunda.

-DefinisiFile def_path_and_file_name

Jalur file definisi agen. File definisi agen berisi argumen prompt perintah untuk agen. Konten file diurai sebagai file yang dapat dieksekusi. Gunakan tanda kutip ganda (") untuk menentukan nilai argumen yang berisi karakter arbitrer.

- Distributor distributor

Nama Distributor. Untuk distribusi Distributor (pendorongan), nama default ke nama Distributor lokal. Jika database distributor Anda berada di AG, ini harus mencerminkan nama pendengar AG.

-DistributorLogin distributor_login

Nama login Distributor.

-DistributorPassword distributor_password

Kata sandi Distributor.

-DistributorSecurityMode [ 0 | 1 ]

Menentukan mode keamanan Distributor. Nilai 0 menunjukkan Mode Autentikasi SQL Server, dan nilai 1 menunjukkan Mode Autentikasi Windows (default).

-Tingkat Enkripsi [ 0 | 1 | 2 | 3 | 4 ]

Tingkat Keamanan Lapisan Transportasi (TLS), sebelumnya dikenal sebagai Secure Sockets Layer (SSL), enkripsi yang digunakan oleh Agen Distribusi saat membuat koneksi.

Nilai EncryptionLevel Deskripsi
0 Menentukan bahwa TLS tidak digunakan.
1 Menentukan bahwa TLS 1.2 digunakan, tetapi agen tidak memverifikasi bahwa sertifikat server TLS ditandatangani oleh penerbit tepercaya.
2 Menentukan bahwa TLS 1.2 digunakan, dan sertifikat diverifikasi.
3 Menentukan bahwa untuk koneksi dari Azure SQL Managed Instance, atau SQL Server 2025 dan versi yang lebih baru, ke Azure SQL Managed Instance, TLS 1.3 digunakan, dan sertifikat diverifikasi. Untuk koneksi ke SQL Server (versi apa pun yang didukung), TLS 1.3 tidak diberlakukan dengan opsi 3.
4 Menentukan bahwa untuk koneksi dari Azure SQL Managed Instance, atau SQL Server 2025 dan versi yang lebih baru, ke Azure SQL Managed Instance, TLS 1.3 digunakan, dan sertifikat diverifikasi. Untuk koneksi dari Azure SQL Managed Instance, atau SQL Server 2025 dan versi yang lebih baru, ke SQL Server (versi apa pun yang didukung), TLS 1.3 digunakan, dan sertifikat diverifikasi. Memerlukan penginstalan sertifikat pada host SQL Server yang menerima koneksi dengan EncryptionLevel diatur ke4.

Sertifikat TLS yang valid ditentukan dengan nama domain SQL Server yang sepenuhnya memenuhi syarat. Agar agen berhasil tersambung saat mengatur -EncryptionLevel ke 2, buat alias di SQL Server lokal. Parameter 'Nama Alias' harus berupa nama server dan parameter 'Server' harus diatur ke nama SQL Server yang sepenuhnya memenuhi syarat.

Untuk informasi selengkapnya, lihat Menampilkan dan Mengubah Pengaturan Keamanan Replikasi.

-File Kesalahan error_path_and_file_name

Jalur dan nama file file kesalahan yang dihasilkan oleh Agen Distribusi. File ini dihasilkan kapan saja di mana kegagalan terjadi saat menerapkan transaksi replikasi pada Pelanggan; kesalahan yang terjadi di Publisher atau Distributor tidak dicatat dalam file ini. File ini berisi transaksi replikasi yang gagal dan pesan kesalahan terkait. Ketika tidak ditentukan, file kesalahan dihasilkan di direktori Agen Distribusi saat ini. Nama file kesalahan adalah nama Agen Distribusi dengan ekstensi .err. Jika nama file yang ditentukan ada, pesan kesalahan ditambahkan ke file. Parameter ini bisa maksimal 256 karakter Unicode.

-ExtendedEventConfigFile configuration_path_and_file_name

Menentukan jalur dan nama file untuk file konfigurasi XML peristiwa yang diperluas. File konfigurasi peristiwa yang diperluas memungkinkan Anda mengonfigurasi sesi dan mengaktifkan peristiwa untuk pelacakan.

-FileTransferType [ 0 | 1 ]

Menentukan jenis transfer file. Nilai 0 menunjukkan UNC (konvensi penamaan 1 universal), dan nilai menunjukkan FTP (protokol transfer file).

-FtpAlamat ftp_address

Alamat jaringan layanan FTP untuk Distributor. Ketika tidak ditentukan, DistributorAddress digunakan. Jika DistributorAddress tidak ditentukan, Distributor digunakan.

-FtpPassword ftp_password

Kata sandi pengguna yang digunakan untuk menyambungkan ke layanan FTP.

-FtpPort ftp_port

Nomor port layanan FTP untuk Distributor. Ketika tidak ditentukan, nomor port default untuk layanan FTP (21) digunakan.

-FtpUserName ftp_user_name

Nama pengguna yang digunakan untuk menyambungkan ke layanan FTP. Ketika tidak ditentukan, anonymous digunakan.

-SejarahVerboseLevel [ 0 | 1 | 2 | 3 ]

Menentukan jumlah riwayat yang dicatat selama operasi distribusi. Anda dapat meminimalkan efek performa pencatatan riwayat dengan memilih 1.

Nilai HistoryVerboseLevel Deskripsi
0 Pesan kemajuan ditulis baik ke konsol atau ke file output. Rekaman riwayat tidak dicatat dalam database distribusi.
1 (standar) Selalu perbarui pesan riwayat sebelumnya dengan status yang sama (startup, progress, success, dan sebagainya). Jika tidak ada rekaman sebelumnya dengan status yang sama, sisipkan rekaman baru.
2 Sisipkan rekaman riwayat baru kecuali rekaman untuk hal-hal seperti pesan diam atau pesan pekerjaan yang berjalan lama, dalam hal ini memperbarui rekaman sebelumnya.
3 Selalu sisipkan rekaman baru, kecuali untuk pesan diam.

-Nama host host_name

Nama host yang digunakan saat menyambungkan ke Publisher. Parameter ini bisa maksimal 128 karakter Unicode.

-KeepAliveMessageInterval keep_alive_message_interval_seconds

Jumlah detik sebelum utas riwayat memeriksa apakah salah satu koneksi yang ada sedang menunggu respons dari server. Nilai ini dapat dikurangi untuk menghindari agen pemeriksaan menandai Agen Distribusi sebagai tersangka saat menjalankan batch yang berjalan lama. Defaultnya adalah 300 detik.

-LoginTimeOut login_time_out_seconds

Jumlah detik sebelum waktu masuk habis. Defaultnya adalah 15 detik.

-MaxBcpThreads number_of_threads

Menentukan jumlah operasi penyalinan massal yang dapat dilakukan secara paralel. Jumlah maksimum utas dan koneksi ODBC yang ada secara bersamaan adalah lebih MaxBcpThreads sedikit atau jumlah permintaan salinan massal yang muncul dalam transaksi sinkronisasi dalam database distribusi. MaxBcpThreads harus memiliki nilai yang lebih besar dari 0 dan tidak memiliki batas atas yang dikodekan secara permanen. Defaultnya adalah 1, hingga nilai 8maksimum . Saat menerapkan rekam jepret yang dihasilkan di Publisher menggunakan opsi rekam jepret bersamaan, satu utas digunakan, terlepas dari jumlah yang Anda tentukan untuk MaxBcpThreads.

-MaxDeliveredTransactions number_of_transactions

Jumlah maksimum transaksi pendorongan atau penarikan yang diterapkan kepada Pelanggan dalam satu sinkronisasi. Nilai 0 menunjukkan bahwa maksimum adalah jumlah transaksi yang tak terbatas. Nilai lain dapat digunakan oleh Pelanggan untuk mempersingkat durasi sinkronisasi yang ditarik dari Penerbit.

Jika -MaxDeliveredTransactions dan -Continuous keduanya ditentukan, Agen Distribusi memberikan jumlah transaksi yang ditentukan dan kemudian berhenti (meskipun -Continuous ditentukan). Anda harus memulai ulang Agen Distribusi setelah pekerjaan selesai.

-Interval Pesan message_interval

Interval waktu yang digunakan untuk pengelogan riwayat. Peristiwa riwayat dicatat ketika salah satu parameter ini tercapai:

  • Nilai TransactionsPerHistory tercapai setelah peristiwa riwayat terakhir dicatat.

  • Nilai MessageInterval tercapai setelah peristiwa riwayat terakhir dicatat.

Jika tidak ada transaksi yang direplikasi yang tersedia di sumbernya, agen melaporkan pesan tanpa transaksi ke Distributor. Opsi ini menentukan berapa lama agen menunggu sebelum melaporkan pesan tanpa transaksi lain. Agen selalu melaporkan pesan tidak ada transaksi ketika mereka mendeteksi bahwa tidak ada transaksi yang tersedia di sumber setelah sebelumnya memproses transaksi yang direplikasi. Defaultnya adalah 60 detik.

-MultiSubnetFailover

Berlaku untuk: SQL Server 2019 (15.x) dan versi yang lebih baru.

Menentukan apakah properti MultiSubnetFailover diaktifkan atau tidak. Jika aplikasi Anda tersambung ke AG pada subnet yang berbeda, pengaturan MultiSubnetFailover=true memberikan deteksi dan koneksi yang lebih cepat ke server aktif (saat ini).

-OledbStreamThreshold oledb_stream_threshold

Menentukan ukuran minimum, dalam byte, untuk data objek besar biner di atas tempat data terikat sebagai aliran. Anda harus menentukan -UseOledbStreaming untuk menggunakan parameter ini. Nilai dapat berkisar dari 400 byte hingga 1.048.576 byte, dengan default 16.384 byte.

-Keluaran output_path_and_file_name

Jalur file output agen. Jika nama file tidak disediakan, output dikirim ke konsol. Jika nama file yang ditentukan ada, output ditambahkan ke file.

-OutputVerboseLevel [ 0 | 1 | 2 ]

Menentukan apakah output harus verbose. Jika tingkat verbose adalah 0, hanya pesan kesalahan yang dicetak. Jika tingkat verbose adalah 1, semua pesan laporan kemajuan dicetak. Jika tingkat verbose adalah 2 (default), semua pesan kesalahan dan pesan laporan kemajuan dicetak, yang berguna untuk penelusuran kesalahan.

-Ukuran Paket packet_size

Ukuran paket, dalam byte. Defaultnya adalah 4096 (byte).

-PollingInterval polling_interval

Seberapa sering, dalam detik, database distribusi dikueri untuk transaksi yang direplikasi. Defaultnya adalah 5 detik.

-Nama Profil profile_name

Menentukan profil agen yang akan digunakan untuk parameter agen. Jika ProfileName adalah NULL, profil agen dinonaktifkan. Jika ProfileName tidak ditentukan, profil default untuk jenis agen digunakan. Untuk informasi, lihat Profil Agen Replikasi.

-Publikasi publikasi

Nama publikasi. Parameter ini hanya valid jika publikasi diatur untuk selalu memiliki rekam jepret yang tersedia untuk langganan baru atau yang diinisialisasi ulang.

-QueryTimeOut query_time_out_seconds

Jumlah detik sebelum waktu kueri habis. Defaultnya adalah 1.800 detik.

-QuotedIdentifier quoted_identifier

Menentukan karakter pengidentifikasi yang dikutip untuk digunakan. Karakter pertama dari nilai menunjukkan nilai yang digunakan Agen Distribusi. Jika QuotedIdentifier digunakan tanpa nilai, Agen Distribusi menggunakan spasi. Jika QuotedIdentifier tidak digunakan, Agen Distribusi menggunakan pengidentifikasi apa pun yang didukung Pelanggan.

-SkipErrors native_error_id [ :... n ]

Daftar yang dipisahkan titik dua yang menentukan nomor kesalahan yang akan dilewati oleh agen ini. Parameter ini diabaikan ketika rekam jepret sedang diterapkan pada pelanggan oleh Agen Distribusi.

-SubscriberDatabasePath subscriber_database_path

Jalur ke database Jet (file .mdb) jika SubscriberType ( 2 memungkinkan koneksi ke database Jet tanpa Nama Sumber Data ODBC (DSN)).

-SubscriberLogin subscriber_login

Nama login Pelanggan. Jika SubscriberSecurityMode adalah 0 (untuk Autentikasi SQL Server), parameter ini harus ditentukan.

-SubscriberPassword subscriber_password

Kata sandi Pelanggan. Jika SubscriberSecurityMode adalah 0 (untuk Autentikasi SQL Server), parameter ini harus ditentukan.

-SubscriberSecurityMode [ 0 | 1 ]

Menentukan mode keamanan Pelanggan. Nilai 0 menunjukkan Autentikasi SQL Server, dan nilai 1 menunjukkan Mode Autentikasi Windows (default).

-SubscriberType [ 0 | 1 | 3 ]

Menentukan jenis koneksi Pelanggan yang digunakan oleh Agen Distribusi.

Nilai SubscriberType Deskripsi
0 SQL Server
1 Sumber data ODBC
3 Sumber data OLE DB

-SubscriptionStreams [ 0 | 1 | 2 | ... 64 ]

Jumlah koneksi yang diizinkan per Agen Distribusi untuk menerapkan batch perubahan secara paralel ke Pelanggan, sambil mempertahankan banyak karakteristik transaksional yang ada saat menggunakan satu utas. Untuk Penerbit SQL Server, rentang nilai dari 1 hingga 64 didukung.

Parameter ini tidak didukung atau harus 0 untuk langganan non-Pelanggan SQL Server atau peer-to-peer. Parameter ini diabaikan ketika rekam jepret sedang diterapkan pada pelanggan oleh Agen Distribusi.

Jika salah satu koneksi gagal dijalankan atau diterapkan, semua koneksi membatalkan batch saat ini, dan agen menggunakan satu aliran untuk mencoba kembali batch yang gagal. Sebelum fase coba lagi ini selesai, mungkin ada inkonsistensi transaksional sementara di Pelanggan. Setelah batch yang gagal berhasil diterapkan, Pelanggan dibawa kembali ke keadaan konsistensi transaksional.

Penting

Ketika Anda menentukan nilai 2 atau lebih besar untuk -SubscriptionStreams, urutan transaksi diterima di Pelanggan mungkin berbeda dari urutan pembuatannya di Penerbit. Jika perilaku ini menyebabkan pelanggaran batasan selama sinkronisasi, Anda harus menggunakan NOT FOR REPLICATION opsi untuk menonaktifkan penegakan batasan selama sinkronisasi. Untuk informasi selengkapnya, lihat Perilaku Kontrol Pemicu dan Batasan dalam Sinkronisasi.

Aliran langganan tidak berfungsi untuk artikel yang dikonfigurasi untuk mengirimkan Transact-SQL. Untuk menggunakan aliran langganan, konfigurasikan artikel untuk mengirimkan panggilan prosedur tersimpan sebagai gantinya.

-SubscriptionTableName subscription_table

Nama tabel langganan yang dihasilkan atau digunakan di Pelanggan yang diberikan. Ketika tidak ditentukan, tabel MSreplication_subscriptions digunakan. Gunakan opsi ini untuk sistem manajemen database (DBMS) yang tidak mendukung nama file panjang.

-Jenis Langganan [ 0 | 1 | 2 ]

Menentukan jenis langganan untuk distribusi. Nilai 0 menunjukkan langganan push, nilai 1 menunjukkan langganan penarikan, dan nilai 2 menunjukkan langganan anonim.

-TransactionsPerHistory [ 0 | 1 | ... 10000 ]

Menentukan interval transaksi untuk pengelogan riwayat. Jika jumlah transaksi yang diterapkan setelah instans terakhir pengelogan riwayat lebih besar dari opsi ini, pesan riwayat dicatat. Nilai defaultnya adalah 100. Nilai 0 menunjukkan tak terbatas TransactionsPerHistory. Lihat parameter sebelumnya –MessageInterval .

-UseDTS

Harus ditentukan sebagai parameter untuk publikasi yang memungkinkan transformasi data.

-UseInprocLoader

Meningkatkan performa rekam jepret awal dengan menyebabkan Agen Distribusi menggunakan perintah INSERT MASSAL saat menerapkan file rekam jepret ke Pelanggan. Parameter ini tidak digunakan lagi karena tidak kompatibel dengan jenis data XML. Jika Anda tidak mereplikasi data XML, parameter ini dapat digunakan. Parameter ini tidak dapat digunakan dengan rekam jepret mode karakter atau pelanggan non-SQL Server. Jika Anda menggunakan parameter ini, akun layanan SQL Server di Pelanggan memerlukan izin baca pada direktori tempat file data rekam jepret .bcp berada. Ketika parameter ini tidak digunakan, agen (untuk Pelanggan non-SQL Server) atau driver ODBC yang dimuat oleh agen (untuk Pelanggan SQL Server) membaca dari file, sehingga konteks keamanan akun layanan SQL Server tidak digunakan.

-UseOledbStream

Ketika ditentukan, mengaktifkan pengikatan data objek besar biner sebagai aliran. Gunakan -OledbStreamThreshold untuk menentukan ukuran, dalam byte, di atas tempat aliran digunakan. UseOledbStreaming diaktifkan secara default.

Di SQL Server 2017 (14.x) CU 22 dan versi yang lebih baru, UseOledbStreaming tulis ke C:\Users\<DistributionAgentAccount>\AppData\Temp folder .

Sebelum SQL Server 2017 (14.x) CU 22, UseOledbStreaming tulis ke C:\Program Files\Microsoft SQL Server\<version>\COM folder .

Di SQL Server 2019 (15.x) CU 29, SQL Server 2022 (16.x) CU 16, dan versi yang lebih baru, Anda dapat menonaktifkan streaming OLE DB dengan memperbarui -UseOledbStreaming untuk 0 menghindari kesalahan yang disebutkan dalam Pesan kesalahan saat Anda menjalankan Agen Distribusi di SQL Server.

Keterangan

Jika Anda menginstal SQL Server Agent untuk dijalankan di bawah akun sistem lokal daripada di bawah akun pengguna domain (default), layanan hanya dapat mengakses komputer lokal. Jika Agen Distribusi yang berjalan di bawah SQL Server Agent dikonfigurasi untuk menggunakan Mode Autentikasi Windows saat masuk ke instans SQL Server, Agen Distribusi gagal. Pengaturan defaultnya adalah Autentikasi SQL Server. Untuk informasi tentang mengubah akun keamanan, lihat Menampilkan dan Mengubah Pengaturan Keamanan Replikasi.

Untuk memulai Agen Distribusi, jalankan distrib.exe dari prompt perintah. Untuk informasi, lihat Konsep Executables Agen Replikasi.