Οι επιδιορθώσεις του Microsoft SQL Server 2012 Service Pack 1 διανέμονται ως ένα αρχείο με δυνατότητα λήψης. Δεδομένου ότι οι επιδιορθώσεις είναι αθροιστικές, κάθε νέα έκδοση περιέχει όλες τις άμεσες επιδιορθώσεις και όλες τις επιδιορθώσεις ασφαλείας που περιλαμβάνονταν στην προηγούμενη έκδοση επιδιόρθωσης του Service Pack 1 SQL Server 2012.
Συμπτώματα
Όταν εκτελείτε μια πρόταση Transact-SQL στο SQL Server 2012, λαμβάνετε το ακόλουθο μήνυμα σφάλματος:
Λανθασμένη σύνταξη κοντά στο "begi".
Αυτό το πρόβλημα παρουσιάζεται όταν ισχύουν οι ακόλουθες συνθήκες:
-
Η πρόταση περιέχει μια συνθήκη IF.
-
Η συνθήκη IF δεν περιέχει προτάσεις BEGIN και END.
-
Η συνθήκη IF ακολουθείται από ένα μπλοκ BEGIN TRY.
-
Το μπλοκ IF μεταγλωττίζεται εκ νέου κατά την εκτέλεση του ερωτήματος.
Επίλυση
Πληροφορίες συγκεντρωτικής ενημέρωσης
Συγκεντρωτική ενημέρωση 4 για SQL Server 2012 SP1
Η επιδιόρθωση για αυτό το πρόβλημα κυκλοφόρησε για πρώτη φορά στην Αθροιστική ενημέρωση 4. Για περισσότερες πληροφορίες σχετικά με τον τρόπο λήψης αυτού του πακέτου συγκεντρωτικής ενημέρωσης για SQL Server 2012 SP1, κάντε κλικ στον αριθμό του άρθρου παρακάτω για να μεταβείτε στο άρθρο της Γνωσιακής βάσης της Microsoft:
2833645 Συγκεντρωτική ενημέρωση 4 για SQL Server 2012 SP1Note Δεδομένου ότι οι εκδόσεις είναι αθροιστικές, κάθε νέα έκδοση επιδιόρθωσης περιέχει όλες τις άμεσες επιδιορθώσεις και όλες τις επιδιορθώσεις ασφαλείας που περιλαμβάνονταν στην προηγούμενη έκδοση επιδιόρθωσης του SQL Server 2012 SP1. Συνιστάται να εξετάσετε το ενδεχόμενο εφαρμογής της πιο πρόσφατης έκδοσης επιδιόρθωσης που περιέχει αυτήν την άμεση επιδιόρθωση. Για περισσότερες πληροφορίες, κάντε κλικ στον αριθμό του παρακάτω άρθρου, για να προβάλετε το άρθρο της Γνωσιακής βάσης της Microsoft:
2772858 Οι εκδόσεις SQL Server 2012 που κυκλοφόρησαν μετά την κυκλοφορία του Service Pack 1 SQL Server 2012
Κατάσταση
Η Microsoft έχει επιβεβαιώσει ότι πρόκειται για πρόβλημα στα προϊόντα της Microsoft που αναφέρονται στην ενότητα "Ισχύει για".
Περισσότερες πληροφορίες
Για να αναπαραγάγετε αυτό το πρόβλημα, εκτελέστε τις ακόλουθες προτάσεις Transact-SQL στο SQL Server 2012: DECLARE @i INTIF object_id('tempdb.. #temptable') IS NOT NULLDROP TABLE #temptableCREATE TABLE #temptable (id INT)INSERT INTO #temptable VALUES (1);(2);(3);IF year(getdate())=2012 SELECT @i=(SELECT COUNT(*) AS nr FROM #temptable).ΕΝΑΡΧΕΙ ΔΟΚΙΜΗΕΠΙΛΕΞΤΕ ΤΟ "MESSAGE' END TRY TRYBEGIN CATCHSELECT ERROR_MESSAGE()END CATCH
Λύση
Για να επιλύσετε αυτό το ζήτημα, προσθέστε προτάσεις BEGIN και END στη συνθήκη IF.
Αναφορές
Για περισσότερες πληροφορίες σχετικά με το μοντέλο επαυξητικής συντήρησης για SQL Server, κάντε κλικ στον αριθμό του άρθρου που ακολουθεί για να μεταβείτε στο άρθρο της Γνωσιακής βάσης της Microsoft:
935897 Ένα μοντέλο επαυξητικής συντήρησης είναι διαθέσιμο από την ομάδα SQL Server για την παράδοση άμεσων επιδιορθώσεων για προβλήματα που αναφέρθηκαν Για περισσότερες πληροφορίες σχετικά με το σχήμα ονοματοθεσιών για SQL Server ενημερώσεις, κάντε κλικ στον αριθμό του άρθρου παρακάτω για να μεταβείτε στο άρθρο της Γνωσιακής βάσης της Microsoft:
822499 Διάταξη ονομασίας για πακέτα ενημέρωσης λογισμικού της Microsoft SQL Server Για περισσότερες πληροφορίες σχετικά με την ορολογία ενημέρωσης λογισμικού, κάντε κλικ στον αριθμό του παρακάτω άρθρου για να μεταβείτε στο άρθρο της Γνωσιακής βάσης της Microsoft:
824684 Περιγραφή της τυπικής ορολογίας που χρησιμοποιείται για την περιγραφή ενημερώσεων λογισμικού της Microsoft