Я пытаюсь создать сценарий Powershell для восстановления базы данных на моем ноутбуке с моего рабочего стола. У меня есть сценарий, который создает файлы резервных копий, и почти заработал сценарий восстановления, за исключением странной ошибки, которую я получаю с базой данных с поддержкой CDC. В итоге я получаю автономную однопользовательскую базу данных. Я должен вернуть его в сеть и вручную изменить его на многопользовательский. Вот соответствующие биты моего кода powershell...
$instance = "(local)"
$server = New-Object Microsoft.SqlServer.Management.Smo.Server $instance
$restore = New-Object Microsoft.SqlServer.Management.Smo.Restore
$restore.Action = "Database"
$restore.Database = $dbname
$restore.NoRecovery = $false
$restore.ReplaceDatabase = $true
$restore.Devices.AddDevice($filename, "File")
$restore.SqlRestore($server)
Я получаю сообщение об ошибке, говорящее...
*System.Data.SqlClient.SqlException: не удалось обновить метаданные, указывающие, что база данных xxxxx не включена для отслеживания измененных данных. Сбой произошел при выполнении команды '[sys].[sp_MScdc_ddl_database запускает 'drop''. Была возвращена ошибка 15517: «Невозможно выполнить в качестве участника базы данных, поскольку принципал «dbo» не существует, этот тип принципала не может быть олицетворен или у вас нет разрешения» *
и чуть ниже...
*База данных отключена. См. раздел MSSQL_ENG003165 в электронной документации по SQL Server*.
дальше ...
Преобразование базы данных "xxxxx" из версии 655 в текущую версию 661.
База данных "xxxxx" выполняет этап обновления с версии 655 до версии 660.
База данных "xxxxx" выполняет этап обновления с версии от 660 до 661.
Хотя я могу вернуть базу данных в пригодное для использования состояние, в идеале я бы хотел, чтобы она была полностью написана сценарием. Идея этого заключается в том, что я могу запустить сценарий резервного копирования на своем рабочем столе, а затем запустить сценарий восстановления на моем ноутбуке, который затем восстанавливает базы данных на моем ноутбуке, поэтому у меня есть рабочая копия той же базы данных, когда мне нужно работать удаленно. .
Любое понимание было бы здорово, даже лучше, если бы кто-то столкнулся и решил ту же проблему.