Ошибка «неправильный параметр» попытка импорта файла LDF для принудительного восстановления

Переводы статьи Переводы статьи
Закрыть Закрыть
Код статьи: 2014074 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

Проблема

Когда объекты Active Directory на контроллере домена будут удалены или повреждены, необходимо восстановить их с помощью резервной копии состояния системы, который содержит базу данных Active Directory. Затем необходимо помечать восстановленные версии этих объектов как заслуживающий доверия с помощью средства Ntdsutil.exe.

На контроллере домена, на котором выполняется по крайней мере Windows Server 2003 с пакетом обновления 1 или более поздних версий Windows, средство Ntdsutil записывает обратно ссылок для объектов, которые будут восстановлены принудительно LDF-файлы.

При включенном перемещения учетных данных для некоторых пользователей, который требуется восстановить, может возникнуть следующее сообщение об ошибке:

ldifde -i -f ar_xxxx.ldf -k
Подключение к «dc01.contoso.com»
Вход под именем текущего пользователя, используя SSPI
Импорт каталогов из файла «ar_20090710 084606_links_adb.contoso.com.ldf»
Загрузка операций...............................
Ошибка при добавлении строки <xxx>: синтаксическая ошибка
Ошибки со стороны сервера является «неверный параметр».
28 элементов успешно изменено.
Произошла ошибка в программе
Файлы журнала не записываются.  Для создания файла журнала, укажите путь к файлу журнала через параметр -j.

Причина

Проблема вызвана неверный формат LDF-файл, созданный при выполнении принудительного восстановления средство Ntdsutil.

LDF-файл содержит синтаксическую ошибку в строке, изменяя следующие атрибуты:

  • msPKIDPAPIMasterKeys
  • msPKIAccountCredentials
  • msPKIRoamingTimeStamp

Эти атрибуты можно найти на пользовательские объекты, когда включен режим перемещения учетных данных.

Решение

Следующий сценарий можно использовать для удаления атрибутов msPKI, вызывающие неполадки из файла LDF.

----remove_msPKI_entries.vbs----

Const forReading = 1
Const forWriting = 2
Const insideEntry = 0
Const foundNewEntry = 1
Dim deleteEntry
Dim strNextLine
Dim состояния
Dim state1
Dim strPath
Dim strLdifdeFileName
Dim strLdifdeFileFullPath
Dim strNewLdifdeFileName
Dim strNewLdifdeFileFullPath
Dim strtempFileName
Dim strtempFileFullPath
Если wscript.Затем arguments.Count <> 2
wscript.echo( "=======================================================================================" )
WScript.Echo ("Использование: cscript remove-msPKI-attrs.vbs <old_ldifde_back_links_file> <new_ldifde_back_links_file>")
WScript.Echo ("")
WScript.Echo («пример: cscript new_ar_20091102 удаление msPKI attrs.vbs ar_20091102-135937_links_mydom.com.ldf-135937_links_mydom.com.ldf»)
WScript.Echo ("")
WScript.Echo ("msPKIDPAPIMasterKeys, msPKIAccountCredentials, msPKIRoamingTimeStamp обратной ссылки будут удалены из")
WScript.Echo ("<old_ldifde_back_links_file> и остальные элементы будут записаны в <new_ldifde_back_links_file>»)
WScript.Echo ("")
WScript.Echo ("Примечание: Если <new_ldifde_back_links_file> уже существующие в текущем каталоге... его содержимое будет перезаписано»)
wscript.echo( "=======================================================================================" )
WScript.Закройте -1
End If
Значение objFSO = CreateObject("Scripting.FileSystemObject")
"Предполагается, что все файлы в текущем каталоге
strPath = "."
strLdifdeFileName = wscript.Arguments(0)
strLdifdeFileFullPath = objFSO.BuildPath (strPath, strLdifdeFileName)

strNewLdifdeFileName = wscript.Arguments(1)
strNewLdifdeFileFullPath = objFSO.BuildPath (strPath, strNewLdifdeFileName)
strtempFileName = objFSO.GetTempName
strtempFileFullPath = objFSO.BuildPath (strPath, strtempFileName)
"Открыть файл заданного ldifde для чтения
SET objLdifdeFile = objFSO.OpenTextFile (strLdifdeFileFullPath, forReading)
' Открыть временный файл для записи
SET objNewLdifdeFile = objFSO.OpenTextFile (strNewLdifdeFileFullPath, forWriting, true)
состояние = foundNewEntry
Сделать до objLdifdeFile.AtEndOfStream

strNextLine = objLdifdeFile.Readline
Если состояние = foundNewEntry затем
состояние = insideEntry
значение objtempFile = objFSO.OpenTextFile (strtempFileFullPath, forWriting, true)
End If
objtempFile.WriteLine (strNextLine)
Если StrComp (strNextLine, «-») затем = 0
состояние = foundNewEntry
objtempFile.Close
значение objtempFile = objFSO.OpenTextFile (strtempFileFullPath, forReading)
state1 = foundNewEntry
deleteEntry = 0
Сделать до objtempFile.AtEndOfStream
strNextLine = objtempFile.ReadLine
Если state1 = insideEntry, затем
state1 = foundNewEntry
Если затем Instr (strNextLine, «msPKIDPAPIMasterKeys») <> 0
deleteEntry = 1
Затем ElseIf Instr (strNextLine, «msPKIAccountCredentials») <> 0
deleteEntry = 1
Затем ElseIf Instr (strNextLine, «msPKIRoamingTimeStamp») <> 0
deleteEntry = 1
End If
ElseIf InStr (strNextLine, «ChangeType:») затем = 0
state1 = insideEntry
End If
Цикл
objtempFile.Close
значение objtempFile = objFSO.OpenTextFile (strtempFileFullPath, forReading)
Если deleteEntry = 0, затем
Сделать до objtempFile.AtEndOfStream
StrNextLine = objtempFile.ReadLine
objNewLdifdeFile.WriteLine (strNextLine)
Цикл
End If
objtempFile.Close
objFSO.DeleteFile (strtempFileFullPath)
End If
Цикл
objLdifdeFile.Close
objNewLdifdeFile.Close

--------

Примечание. Это ЭКСПРЕСС-ПУБЛИКАЦИЯ, подготовленная непосредственно службой технической поддержки Майкрософт . Сведения, содержащиеся в данном документе, предоставлены в качестве отклика на возникшие проблемы. Из-за срочности в материалах могут быть опечатки, и в любое время и без уведомления в них могут быть внесены изменения. Чтобы получить дополнительные сведения, см. Условия использования.

Свойства

Код статьи: 2014074 - Последний отзыв: 4 февраля 2011 г. - Revision: 6.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
  • Microsoft Windows Server 2003 R2 Enterprise x64 Edition
  • Windows Server 2008 Enterprise
  • Windows Server 2008 R2 Enterprise
Ключевые слова: 
kbmt KB2014074 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:2014074

Отправить отзыв

 

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