需要帮助解决使用Ola Hallengren 的存储过程将数据库备份到共享文件夹的问题。
我有一个在 SQL Server 启动时执行的过程。它运行Ola Hallengren的DatabaseBackup
程序。SQL Server 服务在NT Service
.
共享对运行 SQL 的计算机具有权限。
现在,如果DatabaseBackup
手动执行它就可以了。当它在启动时自动执行时,它会失败并出现以下错误:
Msg 50000, Level 16, State 1, Procedure DatabaseBackup, Line 786 [Batch Start Line 0] 目录 \\*** 不存在
如果我用一个子句更改过程Execute As DBO
,它会失败并出现同样的错误。
我还尝试Alter
了 SP withExecute As Self
子句 - 再次出现同样的错误。
所以问题是:
我应该怎么做才能让它工作?
- 文件路径作为 UNC 路径提供(例如
\\machine2\backup\
) - 这是 SQL Express,所以我无权访问 SQL 代理作业。
- 因此,这是配置为在 SQL Server 实例启动时运行的存储过程,而不是设置为在 SQL 代理启动时运行的 SQL 作业。
社区维基回答:
使用对共享具有访问权限的域帐户,那么这应该可以工作。
NT_Service
将无法到达它。如果由于某种原因无法使用域帐户,您可以尝试将计算机帐户权限授予共享。机器帐户遵循以下格式:
DOMAIN\MachineName$
.$
需要表示它是计算机而不是用户。事实证明,当在共享文件夹下执行并检查共享文件夹时
xp_fileexist
,在Ola Hallengren的DatabaseBackup
存储过程中使用的未记录命令存在一个已知问题。sa
这个问题有几种解决方案。但我更喜欢评论使用存储过程的块。现在它工作正常。特别感谢sql.ru论坛。