Συμπτώματα
Ας υποθέσουμε ότι έχετε εφαρμόσει τον Microsoft SQL Server 2012 Service Pack 2 (SP2) στον υπολογιστή σας. Καλείτε το cdc.fn_cdc_get_net_changes_<capture_instance> να αλλάξετε το ΕΡΏΤΗΜΑ καταγραφής δεδομένων (CDC) στη sp_executesql αποθηκευμένη διαδικασία και μπορεί να προέρχεται από μια προέλευση εφαρμογών, όπως το SQL Server Management Studio Server (SSMS), το ίδιο το CDC ή τα πακέτα υπηρεσιών ενοποίησης του SQL Server (SSIS). Σε αυτήν την περίπτωση, αντιμετωπίζετε χαμηλές επιδόσεις στον SQL Server 2012.Σημείωση Η μείωση των επιδόσεων μπορεί να είναι μεγάλη. Για παράδειγμα, ένα ερώτημα μπορεί να ολοκληρωθεί σε λίγα δευτερόλεπτα στον SQL Server 2012 SP1. Ωστόσο, το ίδιο ερώτημα μπορεί να διαρκέσει αρκετές ώρες για να εκτελεστεί στον SQL Server 2012 SP2. Επιπλέον, η ενημέρωση στατιστικών στοιχείων δεν σας βοηθά με το πρόβλημα.
Αιτία
Αυτό το πρόβλημα παρουσιάζεται εξαιτίας ενός προβλήματος στην εκτίμηση της προτεραιότητα που επηρεάζει σημαντικά την απόδοση του cdc.fn_cdc_get_net_changes_<capture_instance> ερώτημα.
Επίλυση
Το πρόβλημα διορθώθηκε για πρώτη φορά με την ακόλουθη αθροιστική ενημέρωση του SQL Server.
Αθροιστική ενημερωμένη έκδοση 3 για τον SQL Server 2012 SP2 /en-us/help/3002049
Κάθε νέα αθροιστική ενημέρωση για τον SQL Server περιέχει όλες τις επείγουσες επιδιορθώσεις και όλες τις επιδιορθώσεις ασφαλείας που συμπεριλήφθηκαν στην προηγούμενη αθροιστική ενημέρωση. Ανάληψη ελέγχου των πιο πρόσφατων αθροιστικών ενημερώσεων για τον SQL Server:
Λύση
Για να επιλύσετε αυτό το ζήτημα, χρησιμοποιήστε την υπόδειξη ερωτήματος Option (μεταγλωττίστε) στο ερώτημά σας. Σε περίπτωση που το ερώτημα ενεργοποιείται από τα στοιχεία του SSIS CDC, η υπόδειξη Option (μεταγλωττίστε) μπορεί να αναγκαστεί με τη δημιουργία ενός οδηγού σχεδίου, όπως στο ακόλουθο παράδειγμα:Exec sp_create_plan_guide @name = N'CDC_Query1_PlanGuide', @stmt = N'select [__$start_lsn],[__$operation],[__$update_mask],[Column1],[Column2],[Column3] from [cdc].[fn_cdc_get_net_changes_dbo_Table1](CONVERT(binary(10), @cs, 1), CONVERT(binary(10), @ce, 1), @mode)',@type = N'SQL',@module_or_batch = NULL, @params = N'@ce nvarchar(22),@mode nvarchar(14),@cs nvarchar(22)', @hints = N'OPTION (RECOMPILE)'; Σημείωση Πρέπει να αντικαταστήσετε το παράδειγμα ερωτήματος με το ερώτημα με το οποίο αντιμετωπίζετε πρόβλημα. Μπορείτε να το αρπάξετε από την ανίχνευση Profiler , επομένως δεν προστίθεται τυχαία κανένας επιπλέον χαρακτήρας. Επιπλέον, βεβαιωθείτε ότι το ερώτημα επιλογής τοποθετείται σε μία γραμμή (για παράδειγμα, δεν θα πρέπει να έχει καμία επιστροφή ή τροφοδοσία γραμμής), έτσι ώστε ο οδηγός σχεδίου να μπορεί να λειτουργήσει με επιτυχία. Ίσως χρειαστεί επίσης να χρησιμοποιήσετε την εντολή DBCC FREEPROCCACHE για να απωθήσετε το παλιό πρόγραμμα από το cache.
Κατάσταση
Η Microsoft έχει επιβεβαιώσει ότι πρόκειται για ένα πρόβλημα στα προϊόντα της Microsoft που παρατίθενται στην ενότητα "ισχύει για".