• xp_delete_files不起作用解决方法


      xp_delete_file用来删除数据库的备份文件和维护计划文本报告。示例:

    EXECUTE master.dbo.xp_delete_file 0,N'D:BackupDiff',N'bak',N'2019-05-29T10:03:41'

    第一个参数表示文件类型,0表示备份文件,1表示文本报告

    第二个参数表示要删除的文件存放路径

    第三个参数表示要删除的文件后缀,不能带点号。比如写成bak,不能写成.bak

    第四个参数是一个日期,文件修改日期(不是创建日期)比这个参数旧的,就删除。(日期相等不删除)

    第五个参数为010表示不查找子目录的文件,1表示在当前路径和下一层路径中查找要删除的文件(最多只遍历一层)。默认值是0,可以省略。

    xp_delete_files会校验备份文件和报告文本文件的头,只有合法的备份文件和报告文本才会被删除,其他文件改个后缀,是不会被删除的。

      今天碰到的现象是执行这个脚本后,旧备份文件并没有被删除。最后,在https://stackoverflow.com/questions/212603/sql-server-xp-delete-file-not-deleting-files/35384431#35384431找到原因,数据库需要有登录名NT SERVICEMSSQLSERVER

     

    并且需要sysadmin角色。

    另外,添加完这个用户还顺便解决了SQL SERVER日志打不开的情况。

    之前打开SQL SERVER日志,弹出如下报错:

    事件查看器有如下两条相关报错日志:

    用户 'TICPDservername$' 登录失败。 原因: 找不到与提供的名称匹配的登录名。 [客户端: <local machine>]
    严重性: 16 错误: 18456,操作系统: 18456 [Microsoft][SQL Server Native Client 11.0][SQL Server]用户 'TICPDservername$' 登录失败。
    
    消息资源存在,但在字符串/消息表中找不到该消息
    

    执行exec master.dbo.sp_enumerrorlogs报错:

    消息 22004,级别 16,状态 1,第 105 行
    无法打开环回连接。有关详细信息,请参阅事件日志。
    消息 22004,级别 16,状态 1,第 105 行
    找不到错误日志位置。
    

    添加完NT SERVICEMSSQLSERVER登录名,上面报错也都解决了。

  • 相关阅读:
    Nhibernate 在一个项目中连接不同的数据库。记录
    sql2005 向2000导入数据。一些注意事项
    iis发布系统问题总结 .....关于handler的重写的应用
    ExecutorService 线程池
    Spring Boot 访问静态资源
    spring boot的核心注解
    日期处理工具类
    Json解析工具类
    (技能篇)Mysql在linux下的全量热备份
    Linux相关命令
  • 原文地址:https://www.cnblogs.com/wangguanguo/p/10973371.html
Copyright © 2020-2023  润新知