ΕΝΗΜΕΡΩΣΗ: Μήνυμα λάθους όταν προσπαθείτε να εισαγάγετε δεδομένα στο συνδρομητή ένα αναπαραγωγής συγχώνευσης του SQL Server 2005: "μήνυμα λάθους 548, 16, κατάσταση 2, επίπεδο 1 γραμμή. Απέτυχε η εισαγωγή"

Μεταφράσεις άρθρων Μεταφράσεις άρθρων
Αναγν. άρθρου: 953481 - Δείτε τα προϊόντα στα οποία αναφέρεται το συγκεκριμένο άρθρο.
Σφάλμα #: 50002854 (SQL επείγουσας επιδιόρθωσης)
Η Microsoft διανέμει ενημερώσεις κώδικα του Microsoft SQL Server 2005 ως ένα αρχείο με δυνατότητα λήψης. Επειδή οι ενημερώσεις κώδικα είναι αθροιστικές, κάθε νέα έκδοση περιέχει όλες τις επείγουσες επιδιορθώσεις και να διορθώσετε όλες τις ενημερώσεις κώδικα ασφαλείας που είχαν περιληφθεί σε προηγούμενες SQL Server 2005, έκδοση.
Ανάπτυξη όλων | Σύμπτυξη όλων

Σε αυτήν τη σελίδα

Συμπτώματα

Ας εξετάσουμε το ακόλουθο σενάριο. Στον SQL Server 2005, μπορείτε να ρυθμίσετε μια δημοσίευση συγχώνευσης. Μπορείτε να προσθέσετε έναν πίνακα που περιέχει μια στήλη αναγνωριστικών στη δημοσίευση συγχώνευσης. Στη συνέχεια, εισάγετε δεδομένα σε πίνακα του publisher. Συγχρονισμός των δεδομένων μεταξύ του συνδρομητή και τον εκδότη του και, στη συνέχεια, προσπαθήσετε να εισαγάγετε πρόσθετα δεδομένα από τον εκδότη. Σε αυτό το σενάριο, λαμβάνετε το ακόλουθο μήνυμα λάθους στον εκδότη:
Msg 548, επίπεδο 16, κατάσταση 2, γραμμή 1
Η εισαγωγή απέτυχε. Τη διένεξη με έναν περιορισμό ελέγχου περιοχή ταυτότητας στη βάση δεδομένων 'Όνομα βάσης δεδομένων', αναπαραγωγή πίνακα 'Διάταξη.TableName', στήλη 'ColumnName'. Εάν η στήλη ταυτότητας γίνεται αυτόματα από αναπαραγωγή, ενημερώστε την περιοχή ως εξής: για το Publisher, η εκτέλεση sp_adjustpublisheridentityrange, ενώ για το συνδρομητή, εκτελείται ο παράγοντας διανομής ή ο παράγοντας συγχώνευση.
Εάν προσπαθήσετε να εκτελέσετε το sp_adjustpublisheridentityrange αποθηκευμένη διαδικασία από τον εκδότη, όπως αναφέρεται στο μήνυμα λάθους, και πάλι δεν μπορείτε να επιλύσετε αυτό το ζήτημα.

Αυτό το ζήτημα παρουσιάζεται όταν πολλοί παράγοντες συγχώνευσης συγχρονίσετε τα δεδομένα ταυτόχρονα για την ίδια δημοσίευση συγχώνευσης. Αυτό το ζήτημα μπορεί να exacerbated εάν έχετε πολλούς συνδρομητές στη δημοσίευση συγχώνευσης.

Αιτία

Αυτό το ζήτημα παρουσιάζεται επειδή η τρέχουσα τιμή της ταυτότητας του πίνακα από τον εκδότη δεν είναι εντός της περιοχής της ταυτότητας του περιορισμού ελέγχου ταυτότητας περιοχής. Αυτή η συμπεριφορά προκύπτει όταν πολλοί παράγοντες συγχώνευση προσπαθούν να αυξήσετε την περιοχή ταυτότητας την ίδια στιγμή, δημιουργώντας την επόμενη περιοχή ταυτότητας από τον εκδότη.

Προτεινόμενη αντιμετώπιση

Η επιδιόρθωση για αυτό το θέμα κυκλοφόρησε πρώτα στην αθροιστική ενημερωμένη έκδοση 8. Για περισσότερες πληροφορίες σχετικά με τον τρόπο απόκτησης αυτού του πακέτου αθροιστική ενημερωμένη έκδοση για το SQL Server 2005 Service Pack 2, κάντε κλικ στον αριθμό του άρθρου παρακάτω για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:
951217Αθροιστική ενημερωμένη έκδοση πακέτου 8 για SQL Server 2005 Service Pack 2
ΣΗΜΕΙΩΣΗΕπειδή το εκδόσεις είναι αθροιστικές, κάθε νέα έκδοση της ενημέρωσης κώδικα θα περιέχει όλες τις επείγουσες επιδιορθώσεις και όλες τις ενημερώσεις κώδικα ασφαλείας που είχαν περιληφθεί σε προηγούμενες SQL Server 2005 διορθώσει την έκδοση. Η Microsoft συνιστά να λάβετε υπόψη σας εφαρμόζοντας την πιο πρόσφατη έκδοση της ενημέρωσης κώδικα που περιέχει αυτήν την επείγουσα επιδιόρθωση. Για περισσότερες πληροφορίες, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft (Knowledge Base):
937137Οι δομές του SQL Server 2005 που κυκλοφόρησαν μετά την κυκλοφορία του SQL Server 2005 Service Pack 2
Οι επείγουσες επιδιορθώσεις του Microsoft SQL Server 2005 που δημιουργούνται για συγκεκριμένο SQL Server service pack. Πρέπει να εφαρμόσετε μια επείγουσα επιδιόρθωση του SQL Server 2005 Service Pack 2 σε μια εγκατάσταση του SQL Server 2005 Service Pack 2. Από προεπιλογή, επείγουσα επιδιόρθωση που παρέχεται σε ένα service pack του SQL Server περιλαμβάνεται στο επόμενο service pack του SQL Server.

Εναλλακτικός τρόπος αντιμετώπισης

Για να επιλύσετε αυτό το ζήτημα, πρέπει να τους συγχρονισμούς πολλές ταυτόχρονες συγχώνευσης. Για να γίνει αυτό, ρυθμίστε τοmax_concurrent_mergeη ιδιότητα στη δημοσίευση συγχώνευσης, εκτελώντας την ακόλουθη πρόταση:
sp_changemergepublication '<PublicationName>', 'max_concurrent_merge', 1
ΣΗΜΕΙΩΣΗΑφού χρησιμοποιήσετε αυτόν τον εναλλακτικό τρόπο αντιμετώπισης, επιδόσεις μπορεί να μειωθεί αν έχετε πολλούς συνδρομητές για τη δημοσίευση. Αυτή η συμπεριφορά παρουσιάζεται επειδή μόνο ένα συνδρομητή να συγχρονίσετε δεδομένα κάθε φορά.

Κατάσταση

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

Περισσότερες πληροφορίες

Τρόπος διαπίστωσης αν αντιμετωπίζετε αυτό το πρόβλημα

Για να εξακριβώσετε αν αντιμετωπίζετε αυτό το ζήτημα, ακολουθήστε τα εξής βήματα:
  1. Βεβαιωθείτε ότι η τρέχουσα τιμή του αναγνωριστικού είναι μικρότερο από το κάτω όριο της πρώτης περιοχής ταυτότητα του περιορισμού ελέγχου ταυτότητας περιοχής.

    Για να αποκτήσετε την τρέχουσα τιμή της ταυτότητας, εκτελέστε την ακόλουθη πρόταση:
    SELECT IDENT_CURRENT ('<TableName>')
    Για να αποκτήσετε τις περιοχές της ταυτότητας του περιορισμού ελέγχου ταυτότητας περιοχής, εκτελέστε μία από τις ακόλουθες δηλώσεις:
    Πρόταση 1
    sp_helpconstraint '<TableName>'
    Πρόταση 2
    select * from MSmerge_identity_range
    where is_pub_range <>1
    AND artid IN 
     (select artid from sysmergearticles where name='<TableName>')
    AND subid in 
     (select subid from sysmergesubscriptions  MS
    join sysmergepublications MP 
    on MS.subscriber_server=MP.publisher
    AND MS.db_name = MP.publisher_db
    WHERE name='<PublicationName>'
    )
    
  2. Χρησιμοποιήστε ένα ίχνος Profiler διακομιστή SQL για να προσδιορίσετε αν έχουν ξεκινήσει παρεμβολή εκτελέσεις της διαδικασίας sp_MSsetup_publisher_idrange αποθηκεύονται με ξεχωριστές περιόδους λειτουργίας συγχώνευσης παράγοντα για την ίδια δημοσίευση.

    Ωστόσο, παρεμβολή εκτελέσεις της διαδικασίας sp_MSsetup_publisher_idrange αποθηκευτεί δεν πάντα υποδηλώνουν ότι αντιμετωπίζετε αυτό το ζήτημα. Αυτό συμβαίνει επειδή ο SQL Server Profiler δεν λειτουργούσε κατά την αρχική εμφάνιση του το συγχρονισμό συγχώνευσης που δημιουργήθηκε το πρώτο μήνυμα σφάλματος. Ωστόσο, παρεμβολή εκτελέσεις της διαδικασίας sp_MSsetup_publisher_idrange αποθηκεύονται αυξάνουν την πιθανότητα να αντιμετωπίζετε αυτό το ζήτημα.
  3. Μπορείτε να βρείτε τους συγχρονισμούς επικαλυπτόμενες συγχώνευσης που προκύπτουν όταν λαμβάνετε το μήνυμα λάθους "548". To do this, you can review the merge history in the distribution database. Για να γίνει αυτό, εκτελέστε τις ακόλουθες δηλώσεις:
    Use distribution
    GO
    select session_id, agent_id, B.publication, min(time) as StartTime, max(time) as EndTime
    into #sessiontimes
    from dbo.MSmerge_history A
    join dbo.msmerge_agents B
    on A.agent_id = B.id
    group by session_id, agent_id, publication
    order by 3 desc
    GO
    -- The left side result is the original session. The right side result is the overlapping session.
    select A.*, B.* 
    from #sessiontimes A
    Join #sessiontimes B
    On B.StartTime >= A.StartTime
    AND B.StartTime <= A.EndTime
    AND A.session_id <> B.session_id
    And A.publication=B.publication
    Order By A.StartTime asc
    GO
    drop table #sessiontimes
    

How to correct existing damaged identity ranges for a problematic table

After you install the cumulative update or after you use the method that is described in the workaround section, an existing damaged identity range in a table is not corrected. You will still receive the "548" error message if you try to insert data into the table and synchronize data on a subscriber. Therefore, you must manually correct the damaged identity ranges for the table. Για να το κάνετε αυτό, ακολουθήστε τα εξής βήματα: (Use the tools in the Windows Recovery Environment to repair Windows Vista. To do this, follow these steps:).

ΣΗΜΕΙΩΣΗThese steps involve manually overriding the current identity seed value for the table to correctly reseed the identity value at the publisher. In the damaged state, the current identity value is smaller than the first identity range in the merge replication identity range check constraint. The steps manually raise the identity value to fall inside the identity range that is defined by the merge replication identity range check constraint. These steps assume that identities are configured in an ascending manner and that the identity increment is configured to increase by a value of 1.
  1. Confirm that the identity increment value is 1 and that the identity proceeds in ascending manner. You can obtain the identity increment value by running the following statement on the publisher:
    SELECT IDENT_INCR( '<TableName>')
  2. Run the following statement on the publisher to find the current identity value on the problematic identity column:
    DBCC CHECKIDENT ('<TableName>')
    After you receive the result, note thecurrent identity valuevalue for comparison in the later steps. Προσέξτε ότι τοcurrent column valuevalye may be either larger or smaller than thecurrent identity valueΤιμή.

    Αν υπάρχει ήδη ο φάκελοςcurrent column valueη τιμή είναι μεγαλύτερη από τοcurrent identity valuevalue, the column value may have originated at other replications in the topology and merged successfully with the publisher replication. If thecurrent column valuevalue is smaller than thecurrent identity valuevalue, the values may have been inserted on the publisher at a earlier time by using the SET IDENTITY_INSERT ON statement before the merge replication configuration.
  3. Run the following statements on the publisher to determine the current identity ranges of the identity range check constraint for the problematic table:
    Use <PublishedDatabaseName>
    GO
    sp_helpconstraint '<TableName>'
    GO
    
    After you receive the result, note the value of theconstraint_keyscolumn of the record where the value of theconstraint_namecolumn is "repl_identity_range_Guid". The GUID value corresponds to the value of theartidcolumn for the article in the sysmergearticles system table. To obtain the GUID, run the following statement:
    select artid from sysmergearticles where name = '<TableName>'
    The identity range check constraint spans two separate ranges. The two sets of ranges do not have to be contiguous. For example, the value of theconstraint_keyscolumn can be as follows:
    ([ColumnName]>(1001) AND [ColumnName]<=(2001)></=(2001)>
    OR [ColumnName] > (9001) AND [ColumnName]<>
    ΣΗΜΕΙΩΣΗThis article uses this example to present code in the rest of steps.

    In this example, the ranges each span 1,000 values. 1,000 is the default range size. However, you can change the identity range size by using one of the following methods:
    • Specify the@pub_identity_rangeparameter when you run the sp_addmergearticle stored procedure.
    • Change theΜέγεθος περιοχής συνδρομητήη ιδιότητα στο άρθρο τουΙδιότητες του άρθρουπαράθυρο διαλόγου.
  4. Εάν αντιμετωπίζετε το ζήτημα που περιγράφεται στην ενότητα "Συμπτώματα", η τρέχουσα τιμή του αναγνωριστικού που σημειώσατε στο βήμα 2 πρέπει να είναι μικρότερο από το κατώτερο όριο στην πρώτη περιοχή ταυτότητας από τον περιορισμό ελέγχου ταυτότητας περιοχής που σημειώσατε στο βήμα 3.

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

    Για περισσότερες πληροφορίες σχετικά με την sp_adjustpublisheridentityrange αποθηκευμένη διαδικασία, επισκεφθείτε την ακόλουθη τοποθεσία της Microsoft Developer Network (MSDN) στο Web:
    http://MSDN.Microsoft.com/en-us/library/ms181527.aspx
  5. Εκτέλεση της ακόλουθης δήλωσης για να διαπιστώσετε αν τις γραμμές στις τρέχουσες περιοχές ταυτότητα του περιορισμού ελέγχου ταυτότητας περιοχής:
    SELECT COUNT(*) FROM TableName WHERE 
    ([ColumnName]>(1001) AND [ColumnName]<=(2001) 
    OR [ColumnName]>(9001) AND [ColumnName]<=(10001))
    
    ΣΗΜΕΙΩΣΕΙΣ
    • Εάν η εντολή επιστρέφει την τιμή 0, δεν υπάρχουν γραμμές είναι την τρέχουσα ταυτότητα περιοχών. Σε αυτήν την περίπτωση, προχωρήστε στο βήμα 6.
    • Εάν η εντολή επιστρέφει μια τιμή που είναι μεγαλύτερη από 0, εκτελέστε την ακόλουθη δήλωση για να λάβετε την τιμή μέγιστου ταυτότητα των περιοχών τρέχουσα ταυτότητα:
      SELECT MAX(ColumnName) as MaxValue FROM TableName WHERE 
      ([ColumnName]>(1001) AND [ColumnName]<=(2001) OR 
      [ColumnName]>(9001) AND [ColumnName]<=(10001))
      
      Σημειώστε την τιμή που επιστρέφεται και, στη συνέχεια, προχωρήστε στο βήμα 7.
  6. Reseed με μη αυτόματο τρόπο την τρέχουσα ταυτότητα για προβληματικά πίνακα για να βρίσκονται μέσα σε μια έγκυρη περιοχή.

    Reseed την τρέχουσα ταυτότητα στην τιμή μικρότερη από την τρέχουσα ταυτότητα περιοχές συν 1. Για παράδειγμα, εάν η τιμή μικρότερη από την τρέχουσα ταυτότητα περιοχές είναι 1001, η πρώτη τιμή είναι δυνατό στην περιοχή είναι 1002 επειδή το χαμηλό τέλος της περιοχής του περιορισμού ελέγχου ταυτότητας περιοχή χρησιμοποιεί το μεγαλύτερο από (&gt;). Για να γίνει αυτό, εκτελέστε την ακόλουθη δήλωση του εκδότη και, στη συνέχεια, προχωρήστε στο βήμα 8:
    DBCC CHECKIDENT ('TableName', RESEED, 1002)
  7. Reseed με μη αυτόματο τρόπο την τρέχουσα ταυτότητα για προβληματικά πίνακα για να βρίσκονται μέσα σε μια έγκυρη περιοχή.

    Ας υποθέσουμε ότι η προσαύξηση ταυτότητα είναι 1. Reseed την τρέχουσα ταυτότητα με την τιμή που σημειώσατε στο βήμα 5 και, στη συνέχεια, προσθέστε 1. Για παράδειγμα, εάν η τιμή που σημειώσατε στο βήμα 5 1507, reseed την τρέχουσα ταυτότητα να 1508. Για να γίνει αυτό, εκτελέστε την ακόλουθη δήλωση από τον εκδότη:
    DBCC CHECKIDENT ('TableName', RESEED, 1508)
  8. Εκτελεί μια δοκιμή για να εξακριβώσετε αν μπορούν να εισαχθούν νέες γραμμές στο τον πίνακα στη βάση δεδομένων του εκδότη χωρίς 548 παρουσιάζεται σφάλμα.
Για περισσότερες πληροφορίες σχετικά με το ποια αρχεία έχουν αλλάξει και για πληροφορίες σχετικά με τις προϋποθέσεις για την εφαρμογή του πακέτου αθροιστική ενημερωμένη έκδοση που περιλαμβάνει την επείγουσα επιδιόρθωση που περιγράφεται σε αυτό το άρθρο της Γνωσιακής Βάσης της Microsoft, κάντε κλικ στον αριθμό του άρθρου παρακάτω για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:
951217Cumulative update package 8 for SQL Server 2005 Service Pack 2

Αναφορές

For more information about the list of builds that are available after SQL Server Service Pack 2, click the following article number to view the article in the Microsoft Knowledge Base:
937137Οι δομές του SQL Server 2005 που κυκλοφόρησαν μετά την κυκλοφορία του SQL Server 2005 Service Pack 2
For more information about the Incremental Servicing Model for SQL Server, click the following article number to view the article in the Microsoft Knowledge Base:
935897Είναι διαθέσιμα από την ομάδα του SQL Server για την παράδοση επείγουσες επιδιορθώσεις για προβλήματα που έχουν αναφερθεί ένα Επαυξητικός τύπος μοντέλου διαχείρισης
For more information about how to obtain SQL Server 2005 Service Pack 2, click the following article number to view the article in the Microsoft Knowledge Base:
913089Τρόπος απόκτησης του τελευταίου service pack για τον SQL Server 2005
For more information about the new features and the improvements in SQL Server 2005 Service Pack 2, visit the following Microsoft Web site:
http://go.Microsoft.com/fwlink/?LinkId=71711
For more information about the naming schema for SQL Server updates, click the following article number to view the article in the Microsoft Knowledge Base:
822499Νέα διάταξη ονομασίας για πακέτα ενημερωμένων εκδόσεων λογισμικού του Microsoft SQL Server
Για περισσότερες πληροφορίες σχετικά με την ορολογία ενημερωμένων εκδόσεων λογισμικού, κάντε κλικ στον αριθμό του άρθρου παρακάτω για να προβάλετε το άρθρο της Γνωσιακής βάσης της Microsoft:
824684Περιγραφή της βασικής ορολογίας που χρησιμοποιείται για την περιγραφή ενημερώσεων λογισμικού της Microsoft

Ιδιότητες

Αναγν. άρθρου: 953481 - Τελευταία αναθεώρηση: Σάββατο, 25 Δεκεμβρίου 2010 - Αναθεώρηση: 2.0
Οι πληροφορίες σε αυτό το άρθρο ισχύουν για:
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Workgroup Edition
Λέξεις-κλειδιά: 
kbfix kbpubtypekc kbqfe kbexpertiseadvanced kbHotfixServer kbautohotfix kbsql2005repl kbmt KB953481 KbMtel
Μηχανικά μεταφρασμένο
ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της Microsoft και όχι ανθρώπινης μετάφρασης. Η Microsoft σάς προσφέρει άρθρα που είναι προϊόντα ανθρώπινης αλλά και μηχανικής μετάφρασης έτσι ώστε να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής Βάσης μας στη δική σας γλώσσα. Ωστόσο, ένα άρθρο που έχει προκύψει από μηχανική μετάφραση δεν είναι πάντα άριστης ποιότητας. Ενδέχεται να περιέχει λεξιλογικά, συντακτικά ή γραμματικά λάθη, όπως ακριβώς τα λάθη που θα έκανε ένας μη φυσικός ομιλητής επιχειρώντας να μιλήσει τη γλώσσα σας. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες της. Επίσης, η Microsoft πραγματοποιεί συχνά ενημερώσεις στο λογισμικό μηχανικής μετάφρασης.
Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη:953481

Αποστολή σχολίων

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com