Зараз ви перебуваєте в автономному режимі; очікується повторне підключення до Інтернету

Основні рядки з sys.syscommittab-таблицю в SQL Server

ВАЖЛИВО! Ця стаття перекладена засобами машинного перекладу Microsoft. Статтю можна редагувати в середовищі Community Translation Framework (CTF). Щоб якомога швидше перекласти всі статті у своїй базі знань різними мовами, компанія Microsoft не лише звертається до професійних перекладачів, але й вдається до машинного перекладу, який потім редагується спільнотою. Такі статті можуть містити лексичні, синтаксичні та граматичні помилки. Microsoft не несе відповідальності за будь-які неточності, помилки або збитки, до яких може призвести неправильний переклад статей або їх використання. Докладніше про CTF див. на веб-сторінці http://support.microsoft.com/gp/machine-translation-corrections/uk-ua.

Клацніть тут, щоб переглянути цю статтю англійською мовою: 3083381
Ознаки
Якщо порівняти SYSCOMMITTABLE-в пам'яті, так і на диску sys.syscommittab exe у Microsoft SQL Server може відображатися повторювані рядки з ключем. архівувати та контрольна точка операції не може призвести до цих повторюваних значень.

причина
Ця проблема виникає, через відомі проблеми у SQL Server виправлень.
Розв'язанн
Для усунення чинників, які викликають повторювані розділи, застосувати один із таких виправлення, відповідно до ситуації:

ВИПРАВЛЕННЯ: архівувати бази даних SQL Server 2008 або SQL Server 2008 R2 не працює, якщо ввімкнуто виправлень, з базою даних
http://support.Microsoft.com/kb/2522893

ВИПРАВЛЕННЯ: архівувати не вдасться запустити SQL Server 2008, SQL Server 2008 R2 або SQL Server 2012, якщо ввімкнуто відстеження на базі даних змін
http://support.Microsoft.com/kb/2603910

ВИПРАВЛЕННЯ: Архівації не вдалося виконати операцію в базі даних SQL Server 2008, SQL Server 2008 R2 або SQL Server 2012 після ввімкнення відстеження
http://support.Microsoft.com/kb/2682488

Незважаючи на те, ці виправлення заборонити повторювані рядки з ключем продовжує з'являтися, вони не автоматично видалити повторювані рядки. Без видалення повторюваних рядків, задіяні бази даних не вдалося виконати бази даних, контрольні точки та резервні копії може не вдатися.

Щоб видалити повторювані рядки, використовуйте один із наведених нижче способів.

Спосіб 1: Вимкнення а також увімкнути відстеження

  1. Вимкнення відстеження впливу таблиць і баз даних змін.
  2. Випуск вручну бази даних контрольна точка.
  3. увімкнути відстеження впливу даних і в таблиці змін.

Щоб отримати додаткові відомості про відстеження див.Увімкнення й вимкнення відстеження.

Щоб отримати відомості про проблеми з вручну контрольна точка див. КОНТРОЛЬНОЇ (Transact-SQL)

Спосіб 2: Видаліть повторювані рядки.

  1. Скопіюйте Transact-SQL сценарій у кінці в розділі "Заходи усунення", у текстовому редакторі.
  2. Знайдіть у <AFFECTED_DB>покажчик місця заповнення, у цьому сценарії і замінити його ім'я бази даних впливу.</AFFECTED_DB>
  3. Збережіть змінено сценарію на жорсткому диску як файл. SQL. Наприклад:
    C:\temp\remove_duplicates.SQL
Якщо використовується SQL Server 2014 потрібно надати дозвіл SID служби повний доступ до mssqlsystemresource.ldf та mssqlsystemresource.mdf файлів. Завдань, виконайте такі дії:
  1. Перейдіть до каталогу Binn, що відповідає свій ідентифікатор екземпляра. Наприклад:

    C:\Program Files\Microsoft-SQL для Server\<Instance id="">\MSSQL\Binn</Instance>
  2. Відкрийте властивості mssqlsystemresource.ldf і mssqlsystemresource.mdf і відкрийте вкладку безпеки .
  3. Знайдіть SID за застосунок-служба служби SQL Server і дозволи за промовчанням, зверніть увагу:

    * Читання & виконання
    * Читання
  4. Надання служби SQL Server, SID, повний контроль за застосунок-служба, а потім закрийте дозволи діалогових вікон.
  5. Запустити SQL Server, у режимі одного користувача. Щоб отримати додаткові відомості див.Запустити SQL Server у режимі одного користувача.
  6. Usea sqlcmdкомандний рядок для підключення до SQL Server у розділі з допоміжними адміністратора підключення Мікросхему. Наприклад:

    sqlcmd -S PRODSERV1\MSSQLSERVER - A -Е -i c:\temp\remove_duplicates.sql
    Після цього для виконання сценарію змінено Transact-SQL.
  7. Запустити SQL Server в багатокористувацькому режимі і переконайтеся, що архівувати та контрольна точка операції з відповідного базу даних успішно завершити. Якщо у кроці 4, було використано, повернутися до дозволи на значення за промовчанням.

Transact-SQL сценарій.

--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

Попередження. Цю статтю переведено автоматично

Властивості

Ідентифікатор статті: 3083381 – останній перегляд: 09/26/2015 08:19:00 – виправлення: 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 KbMtuk
Зворотний зв’язок
>