Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Wrappers voor het net verandert 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_net_changes_<capture_instance>, zie sys.sp_cdc_generate_wrapper_function (Transact-SQL).
Transact-SQL syntaxis-conventies
Syntaxis
fn_net_changes_<capture_instance> ('start_time', 'end_time', '<row_filter_option>' )
<capture_instance> ::= The name of the capture instance.
<row_filter_option> ::=
{ all
| all with mask
| all with merge
}
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 hebben die strikt groter is dan start_time 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 betekenissen krijgen, afhankelijk van de waarde die wordt gekozen voor @closed_high_end_point wanneer sys.sp_cdc_generate_wrapper_function wordt aangeroepen om het script te genereren dat de wrapperfunctie maakt:
@closed_high_end_point = 1
Alleen rijen in de
cdc.<capture_instance>_CTwijzigingstabel die een waarde hebben in __$start_lsn en een overeenkomstige committ-tijd kleiner dan of gelijk aan start_time worden opgenomen in de resultaatset.@closed_high_end_point = 0
Alleen rijen in de
cdc.<capture_instance>_CTwijzigingstabel die een waarde in __$start_lsn hebben en een overeenkomstige committijd strikt kleiner dan start_time zijn, 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 met masker | allemaal met merge }
Een optie die de inhoud van de metadatakolommen beheert, evenals de rijen die in de resultaatset worden teruggegeven. Dit kan een van de volgende opties zijn:
all
Geeft de definitieve inhoud van een gewijzigde rij terug in de inhoudskolommen, en de bewerking die nodig is om de rij in de metadatakolom toe te passen __CDC_OPERATION.
Allen met masker
Geeft de definitieve inhoud van alle gewijzigde rijen in de inhoudskolommen terug, en de bewerking die nodig is om elke rij in de metadatakolom toe te passen __CDC_OPERATION. Als een update-vlaglijst werd gespecificeerd toen je het script genereerde om de wrapper-functie te maken, is deze optie nodig om het updatemasker te vullen.
Allemaal met samenvoeging
Geeft de definitieve inhoud van alle gewijzigde rijen terug in de inhoudskolommen.
De kolom __CDC_OPERATION zal een van de volgende twee waarden zijn:
D, als de rij verwijderd moet worden.
M, als de rij moet worden ingevoegd of bijgewerkt.
De logica om te bepalen of een insert of update nodig is om een wijziging aan het doel toe te passen, verhoogt de querycomplexiteit. Gebruik deze optie voor betere prestaties wanneer het niet nodig is om onderscheid te maken tussen insert- en update-operaties. Deze aanpak werkt het beste in doelomgevingen waar een samenvoegingsoperatie direct beschikbaar is.
Tabel geretourneerd
| Kolomnaam | Kolomtype | Description |
|---|---|---|
| <Kolommen van @column_list> | varieert | De kolommen die in het column_list-argument worden geïdentificeerd tot wanneer sp_cdc_generate_wrapper_function het wordt aangeroepen om het script te genereren om de wrapper te maken. Als column_list NULL is, verschijnen alle gevolgde bronkolommen in de resultaatset. |
| __CDC_OPERATION | nvarchar(2) | Een bewerkingscode die aangeeft welke bewerking nodig is om de rij toe te passen op de doelomgeving. De bewerking varieert op basis van de waarde van het argument row_filter_option dat wordt geleverd in de volgende aanroep: row_filter_option = 'allen', 'allen met masker' 'D' - verwijderingsoperatie 'I' - invoegen bewerking 'UN' - update-operatie row_filter_option = 'alles met samenvoeging' 'D' - verwijderingsoperatie 'M' - ofwel invoegoperatie of updateoperatie |
| <Kolommen van @update_flag_list> | bit | Een bitvlag die wordt benoemd door _uflag toe te voegen aan de kolomnaam. De vlag krijgt een niet-NULL waarde alleen wanneer row_filter_option= 'allen met masker' en __CDC_OPERATION = 'UN'. Het wordt ingesteld op 1 als de overeenkomstige kolom binnen het queryvenster is gewijzigd. Anders 0. |
Opmerkingen
De fn_net_changes_<capture_instance> functie fungeert als een wrapper voor de cdc.fn_cdc_get_net_changes_<capture_instance> queryfunctie. De sys.sp_cdc_generate_wrapper opgeslagen procedure wordt gebruikt om het script voor de wrapper te maken.
Wrapperfuncties worden niet automatisch aangemaakt. Er zijn twee dingen die je moet doen om wrapper-functies te maken:
Voer de opgeslagen procedure uit om het script te genereren dat de wrapper maakt.
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 netto changes wrapperfunctie , geeft alleen die gevolgde kolommen terug die in de @column_list waren 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 parameter @update_flag_listis geïdentificeerd. Voor de net changes-wrapper zullen de bitvlaggen altijd NULL zijn als de @row_filter_option die wordt gebruikt in de aanroep naar de wrapperfunctie 'all' of 'all with merge' is. Als de @row_filter_option is ingesteld op 'alle met masker', en __CDC_OPERATION is 'D' of 'I', zal de waarde van de vlag ook NULL zijn. Als __CDC_OPERATION 'UN' is, wordt de vlag ingesteld op 1 of 0, afhankelijk van of de netupdate-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.