我一直在尝试使用powershell中的restore-sqldatabase模块恢复数据库,该模块似乎工作得很好,除非存在多个数据文件的情况。
为了解决这个问题,我尝试使用参数AutoRelocateFile。下面是用于执行数据库备份的脚本,其中有多个数据文件。Restore-SqlDatabase -SqlCredential $credentialName -ServerInstance $DestinationSQLInstanceName -Database $DestinationDBName -BackupFile $BackupPath -Verbose -ReplaceDatabase -AutoRelocateFile
此脚本应该替换服务器中的现有DB。但是它抛出了以下错误。Restore-SqlDatabase : A parameter cannot be found that matches parameter name 'AutoRelocateFile'.
注意:备份和还原发生在两个不同的服务器上,并且备份以BLOB形式存在。
Update-1:已找出遗失的Cmdlet,这是因为模块已过时。已更新模块,且Cmdlet会出现在Intellisense中。不过,还原仍会掷回错误。以下是目前的片段。Restore-SqlDatabase -AutoRelocateFile -ServerInstance $DestinationSQLInstanceName -Database $DestinationDBName -BackupFile $BackupPath -SqlCredential $credentialName
这将引发以下错误。
Restore-SqlDatabase : An exception occurred while executing a Transact-SQL statement or batch.
At F:\ps_test\Backup-Restore\Restore-BLOB.ps1:543 char:10
+ Restore-SqlDatabase -AutoRelocateFile -ServerInstance $Dest
如果没有提到-autorelocate
选项,并且使用-RelocateFile
选项手动重新定位文件,则代码可以正常工作。
2条答案
按热度按时间plupiseo1#
此选项-AutoRelocateFile已在21.1.18102版本中引入,因此请检查您使用的模块版本是否正确
附言:我看到了你的更新。你删除了模块的旧版本吗?或者尝试用-RequiredVersion选项导入模块,如下所示
uajslkp62#
即使在导入21.1.18102 sql server模块之后,伊势仍然无法识别自动重定位,而且我也没有看到智能感知中出现这种情况