sp_addpublication_snapshot (T-SQL)

Berlaku untuk:SQL ServerAzure SQL Managed Instance

Membuat Agen Rekam Jepret untuk publikasi yang ditentukan. Prosedur tersimpan ini dijalankan di Publisher pada database publikasi.

Penting

Saat mengonfigurasi Penerbit dengan Distributor jarak jauh, nilai yang disediakan untuk semua parameter, termasuk job_login dan job_password, dikirim ke Distributor sebagai teks biasa. Anda harus mengenkripsi koneksi antara Publisher dan Distributor jarak jauhnya sebelum menjalankan prosedur tersimpan ini. Untuk informasi selengkapnya, lihat Mengonfigurasi Mesin Database SQL Server untuk mengenkripsi koneksi.

Konvensi sintaks transact-SQL

Sintaks

sp_addpublication_snapshot
    [ @publication = ] N'publication'
    [ , [ @frequency_type = ] frequency_type ]
    [ , [ @frequency_interval = ] frequency_interval ]
    [ , [ @frequency_subday = ] frequency_subday ]
    [ , [ @frequency_subday_interval = ] frequency_subday_interval ]
    [ , [ @frequency_relative_interval = ] frequency_relative_interval ]
    [ , [ @frequency_recurrence_factor = ] frequency_recurrence_factor ]
    [ , [ @active_start_date = ] active_start_date ]
    [ , [ @active_end_date = ] active_end_date ]
    [ , [ @active_start_time_of_day = ] active_start_time_of_day ]
    [ , [ @active_end_time_of_day = ] active_end_time_of_day ]
    [ , [ @snapshot_job_name = ] N'snapshot_job_name' ]
    [ , [ @publisher_security_mode = ] publisher_security_mode ]
    [ , [ @publisher_login = ] N'publisher_login' ]
    [ , [ @publisher_password = ] N'publisher_password' ]
    [ , [ @job_login = ] N'job_login' ]
    [ , [ @job_password = ] N'job_password' ]
    [ , [ @publisher = ] N'publisher' ]
    [ , [ @distributor_security_mode = ] distributor_security_mode ]
    [ , [ @distributor_login = ] N'distributor_login' ]
    [ , [ @distributor_password = ] N'distributor_password' ]
[ ; ]

Argumen

[ @publication = ] N'publikasi'

Nama publikasi. @publication adalah sysname, tanpa default.

[ @frequency_type = ] frequency_type

Frekuensi di mana Agen Rekam Jepret dijalankan. @frequency_type int, dan bisa menjadi salah satu nilai berikut.

Nilai Deskripsi
1 Satu kali
4 (default) Harian
8 Mingguan
16 Bulanan
32 Bulanan, relatif terhadap interval frekuensi
64 Ketika SQL Server Agent dimulai
128 Jalankan ketika komputer diam

[ @frequency_interval = ] frequency_interval

Nilai yang akan diterapkan ke frekuensi yang ditetapkan oleh @frequency_type. @frequency_interval int, dan bisa menjadi salah satu nilai berikut.

Nilai frequency_type Pengaruh pada frequency_interval
1 @frequency_interval tidak digunakan.
4 (default) Setiap @frequency_interval hari, dengan default harian.
8 @frequency_interval adalah satu atau beberapa hal berikut (dikombinasikan dengan | (Bitwise ATAU) operator logis):

1 = Minggu |

2 = Senin |

4 = Selasa |

8 = Rabu |

16 = Kamis |

32 = Jumat |

64 = Sabtu
16 Pada hari @frequency_interval dalam sebulan.
32 @frequency_interval adalah salah satu nilai berikut:

1 = Minggu |

2 = Senin |

3 = Selasa |

4 = Rabu |

5 = Kamis |

6 = Jumat |

7 = Sabtu |

8 = Hari |

9 = Hari kerja |

10 = Hari akhir pekan
64 @frequency_interval tidak digunakan.
128 @frequency_interval tidak digunakan.

[ @frequency_subday = ] frequency_subday

Unit untuk freq_subday_interval. @frequency_subday int, dan bisa menjadi salah satu nilai ini.

Nilai Deskripsi
1 Satu kali
2 Detik
4 (default) Menit
8 Jam

[ @frequency_subday_interval = ] frequency_subday_interval

Interval untuk frequency_subday, dalam hitungan menit. @frequency_subday_interval int, dengan default 5.

[ @frequency_relative_interval = ] frequency_relative_interval

Tanggal Agen Rekam Jepret berjalan. @frequency_relative_interval int, dengan default 1.

[ @frequency_recurrence_factor = ] frequency_recurrence_factor

Faktor pengulangan yang digunakan oleh frequency_type. @frequency_recurrence_factor int, dengan default 0.

[ @active_start_date = ] active_start_date

Tanggal ketika Agen Rekam Jepret pertama kali dijadwalkan, diformat sebagai yyyyMMdd. @active_start_date int, dengan default 0.

[ @active_end_date = ] active_end_date

Tanggal ketika Agen Rekam Jepret berhenti dijadwalkan, diformat sebagai yyyyMMdd. @active_end_date int, dengan default 99991231,yang berarti 31 Desember 9999.

[ @active_start_time_of_day = ] active_start_time_of_day

Waktu hari ketika Agen Rekam Jepret pertama kali dijadwalkan, diformat sebagai HHmmss. @active_start_time_of_day int, dengan default 0.

[ @active_end_time_of_day = ] active_end_time_of_day

Waktu hari ketika Agen Rekam Jepret berhenti dijadwalkan, diformat sebagai HHmmss. @active_end_time_of_day int, dengan default 235959, yang berarti 11:59:59 P.M. sebagaimana diukur pada jam 24 jam.

[ @snapshot_job_name = ] N'snapshot_job_name'

Nama nama pekerjaan Agen Rekam Jepret yang ada jika pekerjaan yang ada sedang digunakan. @snapshot_job_name adalah nvarchar(100), dengan default NULL. Parameter ini untuk penggunaan internal dan tidak boleh ditentukan saat membuat publikasi baru. Jika @snapshot_agent_name ditentukan, maka @job_login dan @job_password harus NULL.

[ @publisher_security_mode = ] publisher_security_mode

Catatan

ID Microsoft Entra sebelumnya dikenal sebagai Azure Active Directory (Azure AD).

Mode keamanan yang digunakan oleh agen saat menyambungkan ke Publisher. @publisher_security_mode int, dengan default 1. Nilai 0 harus ditentukan untuk Penerbit non-SQL Server. Jika memungkinkan, gunakan autentikasi Windows.. Nilai berikut menentukan mode keamanan:

  • 0 menentukan autentikasi SQL Server.
  • 1 menentukan autentikasi Windows.
  • 2 menentukan autentikasi kata sandi Microsoft Entra, dimulai dengan SQL Server 2022 (16.x) CU 6.
  • 3 menentukan autentikasi terintegrasi Microsoft Entra, dimulai dengan SQL Server 2022 (16.x) CU 6.
  • 4 menentukan autentikasi token Microsoft Entra, dimulai dengan SQL Server 2022 (16.x) CU 6.

[ @publisher_login = ] N'publisher_login'

Login yang digunakan saat menyambungkan ke Publisher. @publisher_login adalah sysname, dengan default NULL. @publisher_login harus ditentukan ketika @publisher_security_mode adalah 0. Jika @publisher_login adalah NULL dan @publisher_security_mode adalah 1, maka akun yang ditentukan dalam @job_login digunakan saat menyambungkan ke Publisher.

[ @publisher_password = ] N'publisher_password'

Kata sandi yang digunakan saat menyambungkan ke Publisher. @publisher_password adalah sysname, dengan default NULL.

Penting

Jangan simpan informasi autentikasi dalam file skrip. Untuk membantu meningkatkan keamanan, kami sarankan Anda memberikan nama login dan kata sandi pada waktu proses.

[ @job_login = ] N'job_login'

Login untuk akun tempat agen berjalan. Di Azure SQL Managed Instance, gunakan akun SQL Server. @job_login adalah nvarchar(257), dengan default NULL. Akun ini selalu digunakan untuk koneksi agen ke Distributor. Anda harus menyediakan parameter ini saat membuat pekerjaan Agen Rekam Jepret baru.

Untuk Penerbit non-SQL Server, ini harus merupakan login yang sama yang ditentukan dalam sp_adddistpublisher (Transact-SQL).

[ @job_password = ] N'job_password'

Kata sandi untuk akun Windows tempat agen berjalan. @job_password adalah sysname, tanpa default. Anda harus menyediakan parameter ini saat membuat pekerjaan Agen Rekam Jepret baru.

Penting

Jangan simpan informasi autentikasi dalam file skrip. Untuk membantu meningkatkan keamanan, kami sarankan Anda memberikan nama login dan kata sandi pada waktu proses.

[ @publisher = ] N'publisher'

Menentukan Penerbit Non-SQL Server. @publisher adalah sysname, dengan default NULL.

@publisher tidak boleh digunakan saat membuat Agen Rekam Jepret di Penerbit SQL Server.

[ @distributor_security_mode = ] distributor_security_mode

Diidentifikasi hanya untuk tujuan informasi. Tidak didukung. Kompatibilitas di masa mendatang tidak dijamin.

[ @distributor_login = ] N'distributor_login'

Diidentifikasi hanya untuk tujuan informasi. Tidak didukung. Kompatibilitas di masa mendatang tidak dijamin.

[ @distributor_password = ] N'distributor_password'

Diidentifikasi hanya untuk tujuan informasi. Tidak didukung. Kompatibilitas di masa mendatang tidak dijamin.

Mengembalikan nilai kode

0 (berhasil) atau 1 (kegagalan).

Keterangan

sp_addpublication_snapshot digunakan dalam replikasi rekam jepret, replikasi transaksional, dan replikasi penggabungan.

Contoh

-- To avoid storing the login and password in the script file, the values 
-- are passed into SQLCMD as scripting variables. For information about 
-- how to use scripting variables on the command line and in SQL Server
-- Management Studio, see the "Executing Replication Scripts" section in
-- the topic "Programming Replication Using System Stored Procedures".

DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'AdventureWorks'; 
SET @publication = N'AdvWorksProductTran'; 
-- Windows account used to run the Log Reader and Snapshot Agents.
SET @login = $(Login); 
-- This should be passed at runtime.
SET @password = $(Password); 

-- Enable transactional or snapshot replication on the publication database.
EXEC sp_replicationdboption 
    @dbname=@publicationDB, 
    @optname=N'publish',
    @value = N'true';

-- Execute sp_addlogreader_agent to create the agent job. 
EXEC sp_addlogreader_agent 
    @job_login = @login, 
    @job_password = @password,
    -- Explicitly specify the use of Windows Integrated Authentication (default) 
    -- when connecting to the Publisher.
    @publisher_security_mode = 1;

-- Create a new transactional publication with the required properties. 
EXEC sp_addpublication 
    @publication = @publication, 
    @status = N'active',
    @allow_push = N'true',
    @allow_pull = N'true',
    @independent_agent = N'true';

-- Create a new snapshot job for the publication, using a default schedule.
EXEC sp_addpublication_snapshot 
    @publication = @publication, 
    @job_login = @login, 
    @job_password = @password,
    -- Explicitly specify the use of Windows Integrated Authentication (default) 
    -- when connecting to the Publisher.
    @publisher_security_mode = 1;
GO

Izin

Hanya anggota peran server tetap sysadmin atau peran database tetap db_owner yang dapat menjalankan sp_addpublication_snapshot.