我正在尝试创建一个 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 triggers 'drop'' 时发生故障。返回的错误为 15517:'无法作为数据库主体执行,因为主体“dbo”不存在,无法模拟此类主体,或者您没有权限'*
再往下一点...
*数据库已离线。请参阅 SQL Server 联机丛书中的主题 MSSQL_ENG003165。*
再向下 ...
正在将数据库“xxxxx”从版本 655 转换为当前版本 661。
数据库“xxxxx”正在运行从版本 655 到版本 660
的升级步骤。数据库“xxxxx”正在运行从版本 660 到 661 的升级步骤。
虽然我可以让数据库恢复到可用状态,但理想情况下我希望它完全编写脚本。这样做的想法是,我可以在我的桌面上运行备份脚本,然后在我的笔记本电脑上运行恢复脚本,然后在我的笔记本电脑上恢复数据库,这样当我需要远程工作时,我就有了同一个数据库的工作副本.
如果有人遇到并解决了同样的问题,任何见解都会很棒,甚至更好。