如何调用远程 T-SQL 过程将远程 .bak 数据库文件恢复到远程 SQL 服务器实例?

How do I call a remote T-SQL procedure to restore a remote .bak database file to a remote SQL Server instance?

我已将 SQL 服务器数据库备份到名为 HACK_BACK.bak 的文件中。我已将该 .bak 文件复制到托管另一个 SQL 服务器实例的远程服务器。

该远程服务器有一个名为 RestoreDatabase 的过程,它具有将 .bak 文件恢复到该远程 SQL 服务器实例的代码。

在我的本地 SQL 服务器数据库上,我有一个连接到我调用 RestoreDatabase 过程的服务器的链接服务器。

当我使用链接服务器调用该远程过程时,出现此错误:

Cannot open backup device 'G:\DROPZONE\HACK_MACK.bak'. Operating system error 2(The system cannot find the file specified.).

正在从我的本地 SQL 服务器调用此远程过程,但执行的上下文似乎是本地的,这就是我收到错误的原因。我希望程序使用远程服务器的 G: 驱动器并将该 .bak 文件还原到该远程 SQL 服务器实例。

我该怎么做?

嗯,如果你在本地像这样调用远程过程,它应该可以工作

--linked server = REMOTE 
EXEC REMOTE.DB.RestoreDatabase 'G:\fileToRestore.bak'

应该 运行 它在具有本地 G: 的远程 SQL 实例上,不是吗?

我不确定你运行现在的确切顺序

另一种选择可能是使用 PowerShell(SQL 之外)连接到远程 SQL 实例以启动恢复过程。哎呀,看看 dbatools.io 甚至