【问题标题】:SQL Maintenance Cleanup task not deleting any files, SQL installed on a DCSQL 维护清理任务不删除任何文件,SQL 安装在 DC 上
【发布时间】:2018-04-25 22:24:39
【问题描述】:

一般问题在此处列出SQL Maintenance Cleanup Task Working but Not Deleting,但没有适用的解决方案。环境:Windows Server 2012R2、AD DS(当然还有策略)、RDSH/TS Licensing、1C-server。主要问题是 SQL Server 每次备份计划运行都会产生大量事件,每个要删除的文件记录一对 18456+17052 错误。错误如下:

  • 17052:[Microsoft][SQL Server Native Client 11.0][SQL Server]用户 'DOMAIN\mssql_srv' 登录失败
  • 18456:原因:找不到与提供的名称匹配的登录名。 [客户:192.168.x.x](匹配本地主机)

鉴于每个要删除的文件都会出现每对错误(已经有大约 6000 个文件!),算法如下所示:

  • 首先,备份计划任务运行xp_delete_file,它会枚举目标文件夹中的所有文件;
  • 其次,通过使用服务凭据创建与机器的单独连接来删除每个文件;
  • 由于默认 DC 策略应用的任何限制,每个连接都会失败,从而生成事件对。当然,该文件仍然存在。

例如,解决方法当然是将文件删除任务分配给作为系统运行的本地脚本,但 SQL Server 无法删除文件的真正原因仍然未知。已检查权限并验证 SQL Server 代理和 SQL Server 服务帐户都可以完全控制该文件夹。

【问题讨论】:

  • 提供的链接有不同的问题。相反,您的登录名错误
  • 转到 SQL Server 错误日志,找到 18456 错误,您会看到登录名错误
  • @sepupic "Wrong login name" - 备份计划和它的工作从 "mssql_agent" 帐户开始,那么 "mssql_srv" 怎么会出现呢?
  • 所以您检查了错误日志,发现“用户 mssql_agent 登录失败”?
  • 如果是 T-SQL 步骤且作业所有者是 sysadmin 服务器角色的成员,则该步骤在服务帐户下执行

标签: sql-server permissions active-directory


【解决方案1】:

事实证明,这个“登录缺失”不是 Windows 登录,而是服务帐户不存在的 SQL“登录”。所以我需要在 SSMS 中创建一个“DOMAIN\mssql_srv”登录,给它“公共”访问权限,瞧,文件开始被正确删除。原因在评论中解释:

如果是 T-SQL 步骤且作业所有者是 sysadmin 服务器角色的成员,则该步骤在服务帐户下执行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-20
    • 2013-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多