Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Managed Instance
Tworzy zadanie agenta, które generuje przefiltrowany migawkę danych dla publikacji z parametryzowanymi filtrami wierszowymi. Ta procedura składowana jest wykonywana w programie Publisher w bazie danych publikacji. Ta procedura przechowywana jest wykorzystywana przez administratora do ręcznego tworzenia zadań snapshotów z filtrowanymi danymi dla subskrybentów.
Note
Aby stworzyć zadanie snapshot z filtrowanymi danymi, standardowe zadanie snapshotu musi już istnieć.
Więcej informacji można znaleźć w artykule Utwórz migawkę dla publikacji Merge z filtrami parametryzowanymi.
Transact-SQL konwencje składni
Syntax
sys.sp_adddynamicsnapshot_job
[ @publication = ] N'publication'
[ , [ @suser_sname = ] N'suser_sname' ]
[ , [ @host_name = ] N'host_name' ]
[ , [ @dynamic_snapshot_jobname = ] N'dynamic_snapshot_jobname' OUTPUT ]
[ , [ @dynamic_snapshot_jobid = ] 'dynamic_snapshot_jobid' OUTPUT ]
[ , [ @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 ]
[ ; ]
Arguments
[ @publication = ] N'publikacja'
Nazwa publikacji, do której dodaje się zadanie snapshot z filtrowanymi danymi. @publication to sysname, bez domyślnego zapisu.
[ @suser_sname = ] N'suser_sname'
Wartość używana przy tworzeniu filtrowanego migawki danych dla subskrypcji, która jest filtrowana przez wartość funkcji SUSER_SNAME u abonenta.
@suser_sname to nazwa systemu, z domyślnym .NULL
@suser_sname powinno być NULL , jeśli ta funkcja nie jest używana do dynamicznego filtrowania publikacji.
[ @host_name = ] N'host_name'
Wartość używana przy tworzeniu filtrowanego migawki danych dla subskrypcji, która jest filtrowana przez wartość funkcji HOST_NAME u Abonenta.
@host_name to nazwa systemu z domyślnym .NULL
@host_name powinno być NULL , jeśli ta funkcja nie jest używana do dynamicznego filtrowania publikacji.
[ @dynamic_snapshot_jobname = ] WYJŚCIE N'dynamic_snapshot_jobname'
Nazwa zadania snapshot z filtrowanych danych, które zostało utworzone.
@dynamic_snapshot_jobname jest parametrem OUTPUT typu sysname. Jeśli zostanie to określone @dynamic_snapshot_jobname do konkretnego stanowiska w Dystrybutorze. Jeśli nie jest określona, nazwa zadania jest automatycznie generowana w zbiorze wyników, gdzie nazwa jest tworzona w następujący sposób:
'dyn_' + <name of the standard snapshot job> + <GUID>
Note
Generując nazwę dynamicznego zadania snapshot, możesz skrócić nazwę standardowego zadania snapshot.
[ @dynamic_snapshot_jobid = ] WYJŚCIE 'dynamic_snapshot_jobid'
Identyfikator dla zadania snapshot z filtrowanymi danymi.
@dynamic_snapshot_jobid jest parametrem OUTPUT typu uniqueidentifier, z domyślnym parametrem NULL.
[ @frequency_type = ] frequency_type
Określa częstotliwość, o jaką zadanie migawki danych filtrowanych jest zaplanowane. @frequency_type jest int i może być jedną z tych wartości.
| Value | Description |
|---|---|
1 |
Jeden raz |
2 (ustawienie domyślne) |
Na żądanie |
4 |
Codziennie |
8 |
Co tydzień |
16 |
Miesięczny |
32 |
Miesięczny pokrewny |
64 |
Autostart |
128 |
Płatność cykliczna |
[ @frequency_interval = ] frequency_interval
Okres, mierzony w dniach, w którym wykonywane jest zadanie snapshotu z filtrowanymi danymi. @frequency_interval jest int i zależy od wartości @frequency_type.
| Wartość @frequency_type | Wpływ na @frequency_interval |
|---|---|
1 (ustawienie domyślne) |
@frequency_interval jest nieużywana. |
4 |
Co @frequency_interval dni. |
8 |
@frequency_interval to jedna lub więcej z następujących (połączonych z | (BITOWO-OR) operator logiczny):1 = Niedziela2 = Poniedziałek4 = Wtorek8 = Środa16 = Czwartek32 = Piątek64 = Sobota |
16 |
W @frequency_interval dnia miesiąca. |
32 |
@frequency_interval jest jedną z następujących opcji:1 = Niedziela2 = Poniedziałek3 = Wtorek4 = Środa5 = Czwartek6 = Piątek7 = Sobota8 = Dzień9 = Dzień powszednie10 = Dzień weekendowy |
64 |
@frequency_interval jest nieużywana. |
128 |
@frequency_interval jest nieużywana. |
[ @frequency_subday = ] frequency_subday
Określa jednostki dla @frequency_subday_interval. @frequency_subday jest int i może być jedną z tych wartości.
| Value | Description |
|---|---|
1 (ustawienie domyślne) |
Raz |
2 |
Second |
4 |
Minuta |
8 |
Godzina |
[ @frequency_subday_interval = ] frequency_subday_interval
Liczba @frequency_subday okresów, które występują między każdym wykonaniem zadania.
@frequency_subday_interval jest int, z domyślnym .1
[ @frequency_relative_interval = ] frequency_relative_interval
Występowanie zadania z przefiltrowanym danym w każdym miesiącu. Parametr ten jest używany, gdy @frequency_type jest ustawione na 32 (miesięczny relatyw).
@frequency_relative_interval jest int i może być jedną z tych wartości.
| Value | Description |
|---|---|
1 (ustawienie domyślne) |
First |
2 |
Second |
4 |
Third |
8 |
Fourth |
16 |
Ostatni |
[ @frequency_recurrence_factor = ] frequency_recurrence_factor
Współczynnik powtarzalności używany przez @frequency_type.
@frequency_recurrence_factor jest int, z domyślnym .1
[ @active_start_date = ] active_start_date
Data, kiedy zadanie snapshotu z filtrowanymi danymi jest po raz pierwszy zaplanowane, jest sformatowane jako yyyyMMdd.
@active_start_date jest int, z domyślnym .0
[ @active_end_date = ] active_end_date
Data, w której zadanie przestaje być planowane dla przefiltrowanego zdjęcia danych, sformatowane jako yyyyMMdd.
@active_end_date jest int, z domyślnym .0
[ @active_start_time_of_day = ] active_start_time_of_day
Pora dnia, w której zadanie snapshotu z filtrowanym danym jest po raz pierwszy zaplanowane, sformatowane jako HHmmss.
@active_start_time_of_day jest int, z domyślnym .0
[ @active_end_time_of_day = ] active_end_time_of_day
Pora dnia, w której zadanie snapshot z filtrowanymi danymi przestaje być planowane, sformatowane jako HHmmss.
@active_end_time_of_day jest int, z domyślnym obciążeniem 0.
Zestaw wyników
| Nazwa kolumny | Typ danych | Description |
|---|---|---|
id |
int | Identyfikuje zadanie snapshot z filtrowanymi danymi w tabeli systemu MSdynamicsnapshotjobs . |
dynamic_snapshot_jobname |
sysname | Nazwa zadania snapshot z filtrowanych danych. |
dynamic_snapshot_jobid |
uniqueidentifier | Unikalnie identyfikuje stanowisko SQL Server Agent u Dystrybutora. |
Zwracanie wartości kodu
0 (powodzenie) lub 1 (niepowodzenie).
Remarks
sp_adddynamicsnapshot_job jest używany w replikacji scalania publikacji wykorzystujących filtr parametryzowany.
Examples
-- To avoid storing the login and password in the script file, the value
-- is passed into SQLCMD as a scripting variable. 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".
--Add a new merge publication.
DECLARE @publicationdb AS sysname;
DECLARE @publication AS sysname;
DECLARE @table1 AS sysname;
DECLARE @table2 AS sysname;
DECLARE @filter AS sysname;
DECLARE @schema_hr AS sysname;
DECLARE @schema_sales AS sysname;
SET @publicationdb = N'AdventureWorks2022';
SET @publication = N'AdvWorksSalesPersonMerge';
SET @table1 = N'Employee';
SET @table2 = N'SalesPerson';
SET @filter = N'SalesPerson_Employee';
SET @schema_hr = N'HumanResources';
SET @schema_sales = N'Sales';
USE [AdventureWorks2022];
-- Enable AdventureWorks2022 for merge replication.
EXEC sp_replicationdboption
@dbname = @publicationdb,
@optname = N'merge publish',
@value = N'true';
-- Create new merge publication.
EXEC sp_addmergepublication
@publication = @publication,
@description = N'Merge publication of AdventureWorks2022.',
@allow_subscriber_initiated_snapshot = N'false';
-- Create a new snapshot job for the publication, using the
-- default schedule. Pass credentials at runtime using
-- sqlcmd scripting variables.
EXEC sp_addpublication_snapshot
@publication = @publication,
@job_login = $(Login),
@job_password = $(password);
-- Add an article for the Employee table,
-- which is horizontally partitioned using
-- a parameterized row filter.
EXEC sp_addmergearticle
@publication = @publication,
@article = @table1,
@source_owner = @schema_hr,
@source_object = @table1,
@type = N'table',
@description = 'contains employee information',
@subset_filterclause = N'[LoginID] = HOST_NAME()';
-- Add an article for the SalesPerson table,
-- which is partitioned based on a join filter.
EXEC sp_addmergearticle
@publication = @publication,
@article = @table2,
@source_owner = @schema_sales,
@source_object = @table2,
@type = N'table',
@description = 'contains customer information';
-- Add a join filter between the two articles.
EXEC sp_addmergefilter
@publication = @publication,
@article = @table1,
@filtername = @filter,
@join_articlename = @table2,
@join_filterclause = N'[Employee].[BusinessEntityID] = [SalesPerson].[SalesPersonID]',
@join_unique_key = 1,
@filter_type = 1;
GO
-- Start the snapshot agent job.
DECLARE @publication AS sysname;
SET @publication = N'AdvWorksSalesPersonMerge';
EXEC sp_startpublication_snapshot
@publication = @publication;
GO
PRINT '*** Waiting for the initial snapshot.';
GO
-- Create a temporary table to store the filtered data snapshot
-- job information.
CREATE TABLE #temp (id int,
job_name sysname,
job_id uniqueidentifier,
dynamic_filter_login sysname NULL,
dynamic_filter_hostname sysname NULL,
dynamic_snapshot_location nvarchar(255),
frequency_type int,
frequency_interval int,
frequency_subday_type int,
frequency_subday_interval int,
frequency_relative_interval int,
frequency_recurrence_factor int,
active_start_date int,
active_end_date int,
active_start_time int,
active_end_time int
)
-- Create each snapshot for a partition
-- The initial snapshot must already be generated.
DECLARE @publication AS sysname;
DECLARE @jobname AS sysname
DECLARE @hostname AS sysname
SET @publication = N'AdvWorksSalesPersonMerge';
SET @hostname = N'adventure-works\Fernando';
WHILE NOT EXISTS(SELECT * FROM sysmergepublications
WHERE [name] = @publication
AND snapshot_ready = 1)
BEGIN
WAITFOR DELAY '00:00:05'
END
-- Create a data partition by overriding HOST_NAME().
EXEC sp_addmergepartition
@publication = @publication,
@host_name = @hostname;
-- Create the filtered data snapshot job, and use the returned
-- information to start the job.
EXEC sp_adddynamicsnapshot_job
@publication = @publication,
@host_name = @hostname;
INSERT INTO #temp (id, job_name, job_id, dynamic_filter_login,
dynamic_filter_hostname, dynamic_snapshot_location,
frequency_type, frequency_interval, frequency_subday_type,
frequency_subday_interval, frequency_relative_interval,
frequency_recurrence_factor, active_start_date, active_end_date,
active_start_time,active_end_time)
EXEC sp_helpdynamicsnapshot_job;
SELECT @jobname = (SELECT DISTINCT job_name FROM #temp WHERE dynamic_filter_hostname = @hostname);
EXEC msdb..sp_start_job @job_name = @jobname;
DROP TABLE #temp;
GO
uprawnienia
Tylko członkowie roli stałego serwera systemowego lub roli db_owner stałej bazy danych mogą wykonywać sp_adddynamicsnapshot_job.