我一直在尝试使用powershell中的restore-sqldatabase模块还原数据库,除非存在多个数据文件,否则该模块似乎工作得很好。
为解决此问题,我尝试使用参数AutoRelocateFile。以下是用于执行具有多个数据文件的数据库备份的脚本。
Restore-SqlDatabase -SqlCredential $credentialName -ServerInstance $DestinationSQLInstanceName -Database $DestinationDBName -BackupFile $BackupPath -Verbose -ReplaceDatabase -AutoRelocateFile
该脚本应该替换了服务器中的现有数据库。但是,它会引发以下错误。
Restore-SqlDatabase : A parameter cannot be found that matches parameter name 'AutoRelocateFile'.
注意:备份和还原在两个不同的服务器中进行,并且BLOB中存在备份。
Update-1:找出缺少的cmdlet,这是由于模块过时造成的。更新了模块,该cmdlet出现在智能感知中。但是,还原仍然会引发错误。下面是当前代码段。
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
选项手动重定位文件时,代码可以正常工作。
答案 0 :(得分:0)
此选项-AutoRelocateFile已在版本21.1.18102中引入 所以请检查您是否使用了正确版本的模块
P.S。我看到了您的更新。您是否删除了该模块的旧版本? 或尝试使用-RequiredVersion选项导入模块
Import-Module SqlServer -RequiredVersion 21.1.18102