Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server
Devolve o valor do número de sequência logarítmica (LSN) da start_lsn coluna na tabela do sistema cdc.lsn_time_mapping para o tempo especificado. Pode usar esta função para mapear sistematicamente intervalos de data-hora para o intervalo baseado em LSN necessário pelas funções de captura de dados de alteração cdc.fn_cdc_get_all_changes_<capture_instance> e cdc.fn_cdc_get_net_changes_<capture_instance> para devolver alterações de dados dentro desse intervalo.
Transact-SQL convenções de sintaxe
Syntax
sys.fn_cdc_map_time_to_lsn ( '<relational_operator>', tracking_time )
<relational_operator> ::=
{ largest less than
| largest less than or equal
| smallest greater than
| smallest greater than or equal
}
Arguments
'<relational_operator>' { maior menor que | maior menor ou igual | menor maior que | menor maior que | menor maior que ou igual }
Usado para identificar um valor LSN distinto dentro da cdc.lsn_time_mapping tabela com um associado tran_end_time que satisfaz a relação quando comparado com o valor tracking_time .
relational_operator é Nvarchar(30).
tracking_time
É o valor data-hora para corresponder. tracking_time é hora do encontro.
Tipo de retorno
binary(10)
Observações
Para compreender como a sys.fn_cdc_map_time_to_lsn função pode ser usada para mapear intervalos de data-hora para intervalos de LSN, considere o seguinte cenário.
Assuma que um consumidor quer extrair dados de alterações diariamente. Ou seja, o consumidor só quer alterações para um determinado dia até à meia-noite inclusive. O limite inferior do intervalo temporal seria até, mas não incluindo, a meia-noite do dia anterior. O limite superior seria até e incluindo a meia-noite do dia em questão. O exemplo seguinte mostra como a função sys.fn_cdc_map_time_to_lsn pode ser usada para mapear sistematicamente este intervalo baseado no tempo para o intervalo baseado em LSN necessário pelas funções de enumeração de captura de dados de alteração para devolver todas as alterações dentro desse intervalo.
DECLARE @begin_time DATETIME,
@end_time DATETIME,
@begin_lsn BINARY (10),
@end_lsn BINARY (10);
SET @begin_time = '2007-01-01 12:00:00.000';
SET @end_time = '2007-01-02 12:00:00.000';
SELECT @begin_lsn = sys.fn_cdc_map_time_to_lsn('smallest greater than', @begin_time);
SELECT @end_lsn = sys.fn_cdc_map_time_to_lsn('largest less than or equal', @end_time);
SELECT *
FROM cdc.fn_cdc_get_net_changes_HR_Department(@begin_lsn, @end_lsn, 'all` `');
O operador smallest greater than relacional é usado para restringir alterações às que ocorreram após a meia-noite do dia anterior. Se múltiplas entradas com valores diferentes de LSN partilharem o tran_end_time valor identificado como o limite inferior na tabela de cdc.lsn_time_mapping , a função devolverá a menor LSN, garantindo que todas as entradas estão incluídas. Para o limite superior, o operador largest less than or equal to relacional é usado para garantir que o intervalo inclui todas as entradas do dia, incluindo aquelas que têm a meia-noite como valor tran_end_time . Se múltiplas entradas com valores diferentes de LSN partilharem o tran_end_time valor identificado como limite superior, a função devolverá a maior LSN, garantindo que todas as entradas estão incluídas.
Permissions
Requer adesão à função pública de .
Examples
O exemplo seguinte utiliza a sys.fn_cdc_map_time_to_lsn função para determinar se existem linhas na tabela cdc.lsn_time_mapping com valor tran_end_time maior ou igual à meia-noite. Esta consulta pode ser usada para determinar, por exemplo, se o processo de captura já processou as alterações comprometidas até à meia-noite do dia anterior, de modo a que a extração dos dados das alterações desse dia possa avançar.
DECLARE @extraction_time DATETIME,
@lsn BINARY (10);
SET @extraction_time = '2007-01-01 12:00:00.000';
SELECT @lsn = sys.fn_cdc_map_time_to_lsn('smallest greater than or equal', @extraction_time);
IF @lsn IS NOT NULL
BEGIN
<some action>
END