无法识别 Restore-sqldatabase 中的 AutoRelocateFile 参数

SQL*_*tor 5 sql-server powershell

我一直在尝试使用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 
Run Code Online (Sandbox Code Playgroud)

-autorelocate当未提及该选项并使用该选项手动重新定位文件时,代码可以正常工作-RelocateFile

小智 6

此选项 -AutoRelocateFile 已在版本21.1.18102中引入 ,因此请检查您是否使用正确版本的模块

PS我看到你的更新了。您是否删除了旧版本的模块?或尝试使用 -RequiredVersion 选项导入模块,如下所示

导入模块 SqlServer -RequiredVersion 21.1.18102

如果上述导入不起作用,请尝试此操作

 Install-Module -Name SqlServer -RequiredVersion 21.1.18102
Run Code Online (Sandbox Code Playgroud)

  • 如果其他人遇到麻烦:通过运行“Install-Module -Name SqlServer -AllowClobber”进行升级后,我必须退出 PowerShell 并再次启动它才能使新模块版本生效。 (8认同)