Μετάβαση στο κύριο περιεχόμενο
Υποστήριξη
Είσοδος με Microsoft
Είσοδος ή δημιουργία λογαριασμού.
Γεια σας,
Επιλέξτε διαφορετικό λογαριασμό.
Έχετε πολλούς λογαριασμούς
Επιλέξτε τον λογαριασμό με τον οποίο θέλετε να εισέλθετε.

Συμπτώματα

Ας υποθέσουμε ότι χρησιμοποιείτε το Microsoft SQL Server 2016 ή 2017. Όταν επεξεργάζεστε συναλλαγές δεδομένων με βελτιστοποίηση μνήμης, χρησιμοποιώντας μεταβλητές πίνακα με βελτιστοποίηση μνήμης με την πρόταση where exists , ενδέχεται να λάβετε λάθος αποτέλεσμα.

Για παράδειγμα:

Βήμα1: Δημιουργήστε μια βάση δεδομένων και έναν πίνακα με βελτιστοποίηση μνήμης.

Δημιουργία επίδειξης ΒΆΣΕΩΝ ΔΕΔΟΜΈΝΩΝ

ALTER DATABASE επίδειξη ADD FILEGROUP demo_mod CONTAINS MEMORY_OPTIMIZED_DATA 

ALTER DATABASE επίδειξη ADD FILE (name='demo_mod1', filename='C:\DATA\demo_mod1') TO FILEGROUP demo_mod 

Χρήση επίδειξης

Πάει

CREATE TYPE dbo. IN_MEMORY_TABLE_TYPE AS TABLE

( source_col INT NULL,

target_col INT not NULL

INDEX ix_InMemoryTable NONCLUSTERED (target_col)

) WITH (MEMORY_OPTIMIZED = ΕΝΕΡΓΟΠΟΙΗΜΕΝΟ)

ΠΆΕΙ

Βήμα2: Εισαγωγή δεδομένων και ενημέρωση δεδομένων.

DECLARE @t dbo. IN_MEMORY_TABLE_TYPE

INSERT @t ( source_col, target_col ) VALUES (10, 0);(0; 0)

επιλέξτε * από @t

ΕΝΗΜΕΡΩΣΗ r1 SET target_col = -1 FROM @t r1

WHERE EXISTS (SELECT * FROM @t r2 WHERE r2.source_col > 0 )

ΕΠΙΛΟΓΉ * FROM @t

ΠΆΕΙ

Βήμα3: Έλεγχος αποτελεσμάτων.

Πραγματικά αποτελέσματα: Δεν ενημερώνονται όλες οι γραμμές της μεταβλητής πίνακα @t .

source_col | target_col

----------------------

10 | -1

0 | 0

Τα αναμενόμενα αποτελέσματα: Όλες οι γραμμές θα πρέπει να ενημερωθούν ώστε να έχουν target_col = -1.

source_col | target_col

----------------------

10 | -1

0 | -1.

Επίλυση

Αυτό το πρόβλημα έχει διορθωθεί στις ακόλουθες αθροιστικές ενημερώσεις για SQL Server:

      Συγκεντρωτική ενημέρωση 1 για SQL Server 2017 

      Συγκεντρωτική ενημέρωση 5 για SQL Server 2016 SP1

Κάθε νέα συγκεντρωτική ενημέρωση για SQL Server περιέχει όλες τις άμεσες επιδιορθώσεις και όλες τις επιδιορθώσεις ασφαλείας που περιλαμβάνονταν στην προηγούμενη συγκεντρωτική ενημέρωση. Δείτε τις πιο πρόσφατες συγκεντρωτικές ενημερώσεις για SQL Server:

Τελευταία συγκεντρωτική ενημέρωση για SQL Server 2017

Τελευταίες συγκεντρωτικές ενημερώσεις για SQL Server 2016

Κατάσταση

Η Microsoft έχει επιβεβαιώσει ότι πρόκειται για πρόβλημα στα προϊόντα της Microsoft που αναφέρονται στην ενότητα "Ισχύει για".

Αναφορές

Ενημερωθείτε σχετικά με την ορολογίαπου χρησιμοποιεί η Microsoft για την περιγραφή ενημερώσεων λογισμικού.

Χρειάζεστε περισσότερη βοήθεια;

Θέλετε περισσότερες επιλογές;

Εξερευνήστε τα πλεονεκτήματα της συνδρομής, περιηγηθείτε σε εκπαιδευτικά σεμινάρια, μάθετε πώς μπορείτε να προστατεύσετε τη συσκευή σας και πολλά άλλα.

Οι κοινότητες σάς βοηθούν να κάνετε και να απαντάτε σε ερωτήσεις, να δίνετε σχόλια και να ακούτε από ειδικούς με πλούσια γνώση.

Σας βοήθησαν αυτές οι πληροφορίες;

Πόσο ικανοποιημένοι είστε με τη γλωσσική ποιότητα;
Τι επηρέασε την εμπειρία σας;
Πατώντας "Υποβολή" τα σχόλια σας θα χρησιμοποιηθούν για τη βελτίωση των προϊόντων και των υπηρεσιών της Microsoft. Ο διαχειριστής IT θα έχει τη δυνατότητα να συλλέξει αυτά τα δεδομένα. Δήλωση προστασίας προσωπικών δεδομένων.

Σας ευχαριστούμε για τα σχόλιά σας!

×