DatabaseBackup - USER_DATABASES - LOG:此作业失败,提示“以用户身份执行:Domain\XXXX-SVC。无法打开步骤输出文件。步骤失败。”
该错误仅与 LOG 备份作业有关。
其他 DatabaseBackup 作业(FULL、DIFF)在相同的 SVC 帐户下工作得很好。因此服务帐户具有适当的权限。
输出文件(作业步骤属性--> 高级)是 F:\SQLAgentLog\,这对于所有作业都是相同的。唯一的问题是 LOG 备份作业。有没有其他人经历过这种情况,有什么解决办法吗?
当前环境:
SQL Server:2012 SP3 CU8
操作系统:Windows Server 2012
注意:这在 Windows Server 2008 上运行良好!!
事实证明,将作业从旧服务器迁移到新服务器的人手动编辑了作业。
其中一项编辑是将
"Output File: (Job Step properties-->Advanced)"
其设置为旧服务器上的默认日志位置C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Log
。在迁移的服务器上,它被编辑到
"F:\SQLAgentLog\Log\"
该目录Log
不存在的位置。(那个人错过了删除Log
路径中的文本)在其他工作(FULL 和 DIFF)上,文本
Log
已被删除,因此设置为这样"F:\SQLAgentLog\"
,并且这两个工作正常!尝试将 Type in 更改
Job Step Properties
为Transact SQL Script
,然后通过删除sqlcmd -E -S $(ESCAPE_SQUOTE(SRVR)) -d master -Q "
脚本末尾的引号来更改脚本本身。然后尝试执行该作业并通知我们它是否有效。有同样的问题,在我们的例子中,带有日志的驱动器已满。
可以像 George Ks 的帖子一样从 SQL 运行作业,因为它不会写入磁盘。然后必须释放空间,检查输出文件清理(oops)的时间表,然后一切恢复正常。
如果
Jobname
包含双冒号 (':') 在 Windows 系统上也会发生此错误。OutputFileName 通常使用以下宏构建:
...$(ESCAPE_SQUOTE(JOBNAME))…
所以这个双冒号在作业运行时使用。(请参阅作业步骤的高级页面) 在 Windows 系统上,双冒号是保留符号,并且禁止在文件名中使用。