Trenutno ste van mreže; čekamo da se ponovo povežete na internet

Duplicitné kľúčové riadky sys.syscommittab tabuľky v aplikácii SQL Server

DÔLEŽITÉ: Tento článok je preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft a možno ho opraviť prostredníctvom technológie Community Translation Framework (CTF). Microsoft ponúka strojovo preložené články, články upravené komunitou aj články preložené prekladateľmi, aby zabezpečil prístup ku všetkým článkom databázy Knowledge Base vo viacerých jazykoch. Strojovo preložené články aj upravené články môžu obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky. Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené neprávnym prekladom obsahu alebo jeho použitím zo strany našich zákazníkov. Ďalšie informácie o technológii CTF nájdete na lokalite http://support.microsoft.com/gp/machine-translation-corrections/sk.

Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem: 3083381
Príznaky
Pri porovnaní SYSCOMMITTABLE v pamäti a na disku sys.syscommittab súbor v programe Microsoft SQL Server, môžete vidieť duplicitný kľúč riadkov. Tieto duplicitné hodnoty môže spôsobiť zlyhanie zálohovania a kontrolný operácií.

Príčina
Príčinou tohto problému je známy problém v SQL Server sledovania zmien.
Riešenie
Na odstránenie faktorov, ktoré spôsobujú duplicitné kľúče, použite jeden z nasledujúce opravy, ktoré zodpovedajú vašej situácii:

FIX: Operáciu zálohovania na databáze SQL Server 2008 alebo SQL Server 2008 R2 zlyhá Ak zapnete sledovanie v tejto databáze zmien
http://support.Microsoft.com/kb/2522893

Oprava: Zlyháva zálohovanie SQL Server 2008, SQL Server 2008 R2 alebo SQL Server 2012 sa zobrazí v databáze sledovania zmien
http://support.Microsoft.com/kb/2603910

Oprava: Zálohovanie zlyhá v databáze SQL Server 2008, SQL Server 2008 R2 alebo SQL Server 2012 po zapnutí sledovania zmien
http://support.Microsoft.com/kb/2682488

Napriek tomu, že tieto opravy zabrániť duplicitné kľúčové riadky naďalej zobrazovať, nemajú automaticky odstrániť duplicitné riadky. Bez odstránenie duplicitných riadkov, príslušné databázy nemôže dokončiť databázy prechody a zálohovanie môže zlyhať.

Odstrániť duplicitné riadky, použite jeden z nasledujúcich postupov.

Metóda 1: Vypnutie a zapnutie sledovania zmien

  1. Vypnite zmene sledovanie príslušné tabuľky a databázy.
  2. Problém manuálne databázy kontrolný bod.
  3. Povoliť príslušné databázy a tabuľky sledovania zmien.

Ďalšie informácie o zmene sledovanie nájdeteZapnutie a vypnutie sledovania zmien.

Informácie o vydanie manuálne kontrolný nájdete KONTROLNÝ (Transact-SQL)

Postup 2: Manuálne odstrániť duplicitné riadky

  1. Skopírujte Transact-SQL skriptu na konci časti "Riešenie" do textového editora.
  2. Vyhľadajte <AFFECTED_DB>zástupný symbol v skripte, a nahradiť názov príslušného databázy.</AFFECTED_DB>
  3. Uložte upravený skript na pevný disk ako súbor .sql. Napríklad:
    C:\temp\remove_duplicates.SQL
Ak používate SQL Server 2014, musíte poskytnúť za služby SID úplný mssqlsystemresource.ldf a mssqlsystemresource.mdf súbory. Postupovať, postupujte nasledovne:
  1. Prejdite do adresára Binn, ktoré zodpovedá vašej identifikáciu inštancie Napríklad:

    C:\Program Files\Microsoft SQL Server\<Instance id="">\MSSQL\Binn</Instance>
  2. Otvorte vlastnosti mssqlsystemresource.ldf a mssqlsystemresource.mdf a potom kliknite na kartu zabezpečenie .
  3. Vyhľadajte službu SQL Server za služby SID a poznačte predvolené povolenia:

    * Čítanie & spustiť
    * Čítanie
  4. Povoliť službu SQL Server SID úplný prístup na službu a potom zatvorte povolenia dialógové okná.
  5. Spustiť SQL Server v režime jedného používateľa. Ďalšie informácie nájdete v témeSpustiť SQL Server v režime jedného používateľa.
  6. Usea Sqlcmdpríkaz pripojiť na server SQL Server podľa vyhradené Správca pripojenia (DAC). Napríklad:

    Sqlcmd -S PRODSERV1\MSSQLSERVER -E -i c:\temp\remove_duplicates.sql
    Spustite upraveného Transact-SQL skriptu.
  7. Spustiť SQL Server v režime s viacerými používateľmi, a potom skontrolujte zálohovania a operácie kontrolný príslušné databázy úspešne dokončiť. Ak sa v kroku 4, obnoviť povolenia na predvolené hodnoty.

Transact-SQL skriptu

--Create a temporary database to store the necessary rows required to remove the duplicate dataif exists(select 1 from sys.databases where name = 'dbChangeTrackingMetadata')begindrop database dbChangeTrackingMetadataendgocreate database dbChangeTrackingMetadatago --Table to store the contents of the SYSCOMMITTABLEuse dbChangeTrackingMetadatagocreate table dbo.t_SYSCOMMITTABLE (commit_ts bigint,xdes_id bigint,commit_lbn bigint,commit_csn bigint,commit_time datetime)go --Table to store the duplicate rows to be removed from the sys.syscommittab tablecreate table dbo.t_syscommittab (commit_ts bigint,xdes_id bigint,commit_lbn bigint,commit_csn bigint,commit_time datetime,dbfragid int)go --Enable the usage of OPENROWSETexec sys.sp_setbuildresource 1go --Change <AFFECTED_DB> to the database that contains the duplicate valuesUSE <AFFECTED DB>godeclare @rowcount bigintSET @rowcount = 0 --Copy all rows from the SYSCOMMITTABLE into the temporary databaseinsert into dbChangeTrackingMetadata.dbo.t_SYSCOMMITTABLESELECT commit_ts, xdes_id, commit_lbn, commit_csn, commit_timeFROM OpenRowset (table SYSCOMMITTABLE, db_id (), 0, 0) --Save the duplicate values into the temporary databaseinsert into dbChangeTrackingMetadata.dbo.t_syscommittabselect ondisk_ct.* from sys.syscommittab as ondisk_ctjoin dbChangeTrackingMetadata.dbo.t_SYSCOMMITTABLE as inmem_cton ondisk_ct.xdes_id = inmem_ct.xdes_id --Delete the duplicate valuesdelete from sys.syscommittabwhere xdes_id in ( select xdes_id from dbChangeTrackingMetadata.dbo.t_syscommittab )set @rowcount = @@rowcountif (@rowcount > 0)beginprint ''print 'DELETED '+CAST(@rowcount as NVARCHAR(10))+' rows from sys.syscommittab that were also stored in SYSCOMMITTABLE'print ''endelsebeginprint ''print 'Failed to DELETE DUP rows from sys.syscommittab'print ''endexec sys.sp_setbuildresource 0go

Upozornenie: Tento článok bol preložený automaticky.

Svojstva

ID članka: 3083381 - Poslednji pregled: 09/26/2015 08:17:00 - Verzija: 2.0

Microsoft SQL Server 2008 Standard, Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 Workgroup, Microsoft SQL Server 2008 R2 Standard, Microsoft SQL Server 2008 R2 Developer, Microsoft SQL Server 2008 R2 Enterprise, Microsoft SQL Server 2008 R2 Workgroup, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2012 Web, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Web

  • kbmt KB3083381 KbMtsk
Povratne informacije