我已经在我的server 2005服务器上创建了维护计划。备份应该写入另一台服务器。我用的是UNC的路径。运行SQL代理作业的用户可以完全访问另一台服务器。这是两个服务器上的管理员。
问题是该语句失败(当然服务器名正确):
执行master.dbo.xp_create_subdir N'\servername\c$\SqlServerBackup\Test‘
我得到的错误是: Msg 22048,级别16,状态1,第0行xp_create_subdir()返回错误123,“文件名、目录名或卷标签语法不正确。”
有人知道问题出在哪里吗?
发布于 2009-05-15 16:00:23
在我自己有了这个问题之后,由于上面的解决方案都不够清楚,我想我应该发布一个更清晰的答案。这个错误实际上与语法无关--它完全与权限有关。这里最重要的是尝试登录创建目录的是Server服务帐户,而不是Server代理帐户。您可以检查目标服务器上的事件查看器,并查看安全日志以查看另一台计算机上server帐户的失败登录(我的登录是以本地管理员身份运行的)。
要解决这个问题,请将您的Server服务帐户设置为允许写入远程共享的域用户。我本来希望Server代理能够使用自己的凭据来执行这些备份操作,但显然不是!
发布于 2009-11-17 04:02:03
SQL代理实际上不运行备份,它能够在执行备份的Server中执行命令。因此,Server服务帐户需要UNC共享的权限。
但是,我认为xp_create_subdir过程存在一个实际问题。我将停止使用维护计划,因为我每隔一段时间都会收到相同的错误。没有权限正在更改,而且它“通常”工作,但“通常”不会削减它。
发布于 2011-02-24 01:01:02
如果您以“LocalSystem”身份运行Server和/或Server代理服务,但拒绝将Server和Server代理帐户更改为域帐户,请尝试以下操作:
对于SQL服务以“LocalSystem”的形式运行但需要到达另一台服务器以删除备份的情况,这确实有效。
当然,最佳实践指出,对于每个SQL Service,它们都应该拥有自己的权限最小的域帐户,而不是添加服务器的计算机帐户,该帐户暴露了对共享的更多访问权限--本质上是以计算机帐户或“LocalSystem”的形式执行的。
https://stackoverflow.com/questions/216130
复制相似问题