Delen via


sys.fn_all_changes_<capture_instance> (Transact-SQL)

Van toepassing op:SQL Server

Wrappers voor alle wijzigingen queryfuncties. De scripts die nodig zijn om deze functies te maken, worden gegenereerd door de sys.sp_cdc_generate_wrapper_function opgeslagen procedure. Voor meer informatie over de opgeslagen procedure die is gebruikt om te creëren sys.fn_all_changes_<capture_instance>, zie sys.sp_cdc_generate_wrapper_function (Transact-SQL).

Transact-SQL syntaxis-conventies

Syntaxis

fn_all_changes_<capture_instance> ('start_time' ,'end_time', '<row_filter_option>' )  
  
<capture_instance> ::= The name of the capture instance.  
<row_filter_option> ::=  
{ all  
  | all update old  
}  

Arguments

start_time

De datum-tijdwaarde die het lage eindpunt van het bereik van wijzigingstabelvermeldingen weergeeft dat in de resultaatset moet worden opgenomen.

Alleen rijen in de cdc.<capture_instance>_CT wijzigingstabel die een bijbehorende commit-tijd groter dan start_time hebben, worden opgenomen in de resultaatset.

Als een waarde van NULL voor dit argument wordt opgegeven, zal het lage eindpunt van het querybereik overeenkomen met het laagste eindpunt van het geldige bereik voor de capture-instantie.

Als de waarde van een van de of-parameter @start_time@end_time voorbij de tijd van de laagste of hoogste LSN ligt, zal de uitvoering van gegenereerde wrapperfuncties teruggeven in fout 313: Msg 313, Level 16, State 3, Line 1 An insufficient number of arguments were supplied for the procedure or function. Deze fout moet worden verwerkt door de ontwikkelaar.

end_time

De datum-tijdwaarde die het hoogste eindpunt van het bereik van wijzigingstabelvermeldingen in de resultatenset vertegenwoordigt.

Deze parameter kan een van twee mogelijke betekenissen aannemen, afhankelijk van de waarde die wordt gekozen voor @closed_high_end_point wanneer sys.sp_cdc_generate_wrapper_function wordt aangeroepen om het create-script voor de wrapperfunctie te genereren:

  • @closed_high_end_point = 1

    Alleen rijen in de cdc.<capture_instance>_CT wijzigingstabel die een bijbehorende commit-tijd hebben die kleiner is dan of gelijk is aan end_time worden opgenomen in de resultaatset.

  • @closed_high_end_point = 0

    Alleen rijen in de cdc.capture_instance_CT wijzigingstabel die een bijbehorende committijd hebben die strikt minder dan end_time is, worden opgenomen in de resultaatset.

Als een waarde van NULL voor dit argument wordt gegeven, zal het hoge eindpunt van het querybereik overeenkomen met het hoge eindpunt van het geldige bereik voor de capture-instantie.

Als de waarde van een van de of-parameter @start_time@end_time voorbij de tijd van de laagste of hoogste LSN ligt, zal de uitvoering van gegenereerde wrapperfuncties teruggeven in fout 313: Msg 313, Level 16, State 3, Line 1 An insufficient number of arguments were supplied for the procedure or function. Deze fout moet worden verwerkt door de ontwikkelaar.

<row_filter_option> ::= { alle | alle updaten oud }

Een optie die de inhoud van de metadatakolommen en de rijen die in de resultaatset worden teruggegeven, beheerst.

Dit kan een van de volgende opties zijn:

all
Retourneert alle wijzigingen binnen het opgegeven LSN-bereik. Voor wijzigingen die plaatsvinden als gevolg van een update-operatie, geeft deze optie alleen de rij terug die de nieuwe waarden bevat nadat de update is toegepast.

Alle updates oud
Retourneert alle wijzigingen binnen het opgegeven LSN-bereik. Voor wijzigingen die plaatsvinden door een update-operatie, geeft deze optie de twee rijen terug die de kolomwaarden bevatten vóór en na de update.

Tabel geretourneerd

Kolomnaam Kolomtype Description
__CDC_STARTLSN binary(10) De commit-LSN van de transactie die aan de wijziging is gekoppeld. Alle wijzigingen die in dezelfde transactie worden gecommandeerd, delen hetzelfde commit-LSN.
__CDC_SEQVAL binary(10) Sequentiewaarde die wordt gebruikt om de rijwijzigingen in een transactie te ordenen.
<Kolommen van @column_list> varieert De kolommen die in het column_list-argument worden geïdentificeerd, genereren sp_cdc_generate_wrapper_function het script dat de wrapperfunctie creëert.
__CDC_OPERATION nvarchar(2) Operatiecode die aangeeft welke bewerking nodig is om de rij toe te passen op de doelomgeving. Het zal variëren afhankelijk van de waarde van het argument dat in de call row_filter_option geleverd:

row_filter_option = 'alle'

'D' - verwijderingsoperatie

'I' - invoegen bewerking

'UN' - update operatie nieuwe waarden

row_filter_option = 'alle updaten oud'

'D' - verwijderingsoperatie

'I' - invoegen bewerking

'UN' - update operatie nieuwe waarden

'UO' - update operatie oude waarden
<Kolommen van @update_flag_list> bit Een bitvlag wordt benoemd door _uflag toe te voegen aan de kolomnaam. De vlag staat altijd op NULL wanneer __CDC_OPERATION 'D', 'I', van 'UO' is. Wanneer __CDC_OPERATION 'UN' is, wordt deze ingesteld op 1 als de update een wijziging in de overeenkomstige kolom heeft veroorzaakt. Anders 0.

Opmerkingen

De fn_all_changes_<capture_instance> functie fungeert als een wrapper voor de cdc.fn_cdc_get_all_changes_<capture_instance> queryfunctie. De sys.sp_cdc_generate_wrapper opgeslagen procedure wordt gebruikt om het script te genereren dat de wrapper maakt.

Wrapperfuncties worden niet automatisch aangemaakt. Er zijn twee dingen die je moet doen om wrapper-functies te maken:

  1. Voer de opgeslagen procedure uit om het script te genereren dat de wrapper maakt.

  2. Voer het script uit om daadwerkelijk de wrapperfunctie te maken.

Wrapperfuncties stellen gebruikers in staat systematisch te zoeken naar wijzigingen die plaatsvonden binnen een interval begrensd door datum-tijdwaarden in plaats van door LSN-waarden. De wrapperfuncties voeren alle vereiste conversies uit tussen de opgegeven datetime-waarden en de LSN-waarden die intern als argumenten nodig zijn voor de queryfuncties. Wanneer de wrapperfuncties seriëel worden gebruikt om een stroom veranderingsgegevens te verwerken, zorgen ze ervoor dat er geen gegevens verloren gaan of zich herhalen, mits de volgende conventie wordt gevolgd: de @end_time waarde van het interval dat aan één aanroep hoort, wordt gegeven als de @start_time waarde voor het interval dat bij de volgende aanroep hoort.

Door de @closed_high_end_point parameter te gebruiken bij het aanmaken van het script, kun je wrappers genereren om een gesloten bovengrens of een open bovengrens te ondersteunen in het opgegeven queryvenster. Dat wil zeggen, je kunt beslissen of elementen met een commit-tijd gelijk aan de bovengrens van het extractieinterval in het interval worden opgenomen. Standaard is de bovengrens opgenomen.

De resultaatset die wordt teruggegeven door de all changes-wrapperfunctie geeft de __$start_lsn en __$seqval-kolommen van de wijzigingstabel terug als kolommen __CDC_STARTLSN en __CDC_SEQVAL. Daarna volgt alleen die gevolgde kolommen die in de @column_list-parameter verschenen toen de wrapper werd gegenereerd. Als @column_list NULL is, worden alle gevolgde bronkolommen teruggegeven. De bronkolommen worden gevolgd door een operatiekolom, __CDC_OPERATION, een kolom van één of twee tekens die de operatie identificeert.

Bitvlaggen worden vervolgens toegevoegd aan de resultaatset voor elke kolom die in de @update_flag_list parameter is geïdentificeerd. Voor de all changes-wrapper zijn de bitvlaggen altijd NULL als __CDC_OPERATION 'D', 'I' of 'UO' is. Als __CDC_OPERATION 'UN' is, wordt de vlag ingesteld op 1 of 0, afhankelijk van of de update-operatie een wijziging in de kolom heeft veroorzaakt.

Het configuratiesjabloon voor wijzigingsdata-opname 'Instantiate CDC Wrapper TVFs for Schema' laat zien hoe je de sp_cdc_generate_wrapper_function opgeslagen procedure gebruikt om CREATE-scripts te verkrijgen voor alle wrapperfuncties voor de gedefinieerde queryfuncties van een schema. De template maakt vervolgens die scripts aan. Voor meer informatie over sjablonen, zie Template Explorer.

De wrapperfuncties sys.fn_all_changes_<capture_instance> en sys.fn_net_changes_<capture_instance> zijn afhankelijk van de systeemfuncties cdc.fn_cdc_get_all_changes_<capture_instance> en cdc.fn_cdc_get_net_changes_<capture_instance>. Fout 313 wordt verwacht als het LSN-bereik niet geschikt is bij het aanroepen cdc.fn_cdc_get_all_changes_<capture_instance> van of cdc.fn_cdc_get_net_changes_<capture_instance>. Als de lsn_value parameter voorbij de tijd van de laagste of hoogste LSN ligt, dan zal de uitvoering van deze functies fout 313 teruggeven: Msg 313, Level 16, State 3, Line 1 An insufficient number of arguments were supplied for the procedure or function. Deze fout moet worden verwerkt door de ontwikkelaar.

Zie ook