SQL Server自动备份无法删除过期的备份文件

 更新时间:2016年11月25日 16:44  点击:1958
数据库服务器每天凌晨两点进行数据库备份,同时对5天前的数据库备份文件进行删除,不然的话就会把硬盘给撑爆的
windows的日志里给出信息:
SQL Server Scheduled Job 'DB 维护计划“数据库维护计划1”的 DB 备份作业。' (0x2DA54A5BBEFC2B4A874428B91602C52A) - Status: 失败 - Invoked on: 2005-09-09 01:00:00 - Message: 作业失败。
  调度 28 (第 1 调度) 唤醒调用了该作业。最后运行的步骤是第 1 步(第 1 步)。
sql server里给出的日志:
sqlmaint.exe failed [SQLSTATE 42000]
相关的微软给出的kb
http://support.microsoft.com/?kbid=288577
http://support.microsoft.com/kb/303292/EN-US/
好像讲得一头雾水。
后来才发现是原来那些要备份的数据库中,其中有一个是脱机的,结果导致不能把它备份,也不能把它过期的删除掉,没办法,只好把它重新朕机上了。


作者:蒋勇 http://idoorsoft.51.net
  在数据库的应用系统中,充分的利用数据库的后台服务端的功能可以可以简化客户端前台的工作,更可以降低网络的负荷,同时使整个系统设计更合理,便于维护移植和升级,后台计划任务作业在很多数据库应用中经常会用到,当然是配合存储过程使用。
  在SQL Server2000中,可以手动一步一步的在企业管理器中建立后台计划任务作业,但这样既麻烦也不便于发布,因此本文给出使用T-SQL脚本创建作业的方法。
  需要下面三个SQL Server2000 msdb系统库中的存储过程来完成作业的建立,在此之前请先开启数据库实例的SQLServerAgent服务,SQL Server安装后默认是没有启动该服务的。
  顺便说一句,SQL Server在2000版本中才有了明显的“实例”的概念,在7.0版中没有明确的实例,因此在SQL Server2000默认安装时创建了一个默认实例,这是为了和SQl Server 7.0兼容,如果你是默认方式创建的实例,则实例名为空。啥子?你不晓得啥子是“实例”?个人去找点资料看看,oracel、sybase都有实例和表空间,所以我叫SQL Server2000之前的SQL Server为桌面数据库。
  进入正题,步骤是“作业”-〉“作业调度”-〉“作业步骤”,具体如下:
1、使用sp_add_job 添加由 SQLServerAgent 服务执行的新作业。
2、使用sp_add_jobschedule创建作业调度。
3、使用sp_add_jobstep将一个步骤(操作)添加到作业中
  下面以在汽车客运站票务系统中的脚本为例给出实际例子,在看例子之前,请先看一下上面三个系统存储过程的帮助。在例子中使用了一个自定义的存储过程“tksp_bakdata”,它的功能是处理当日之前售票数据(只需知道是一个自定义存储过程就行了)。
例子1:每日0点30分处理售票数据
www.111cn.net
use msdb
EXEC sp_add_job @job_name = 'tk_bakdata',
@enabled = 1,
@description = '每日00:30处理售票数据',
@start_step_id = 1,
@owner_login_name = 'tkuser'
exec sp_add_jobserver @job_name = 'tk_bakdata'
go
EXEC sp_add_jobschedule @job_name = 'tk_bakdata',
@name = 'Bakdata003000',
@freq_type = 4,
@freq_interval = 1,
@active_start_time = 003000
go
EXEC sp_add_jobstep @job_name = 'tk_bakdata',
@step_name = 'bakdata',
-- =============================================
-- Create scalar function (NWGetPYFirst)
-- =============================================
IF EXISTS (SELECT *
FROM sysobjects
WHERE name = N'NWGetPYFirst')
DROP FUNCTION NWGetPYFirst
GO
CREATE FUNCTION NWGetPYFirst
(@str varchar(500) = '')
RETURNS varchar(500)
AS
BEGIN
Declare @strlen int,
@return varchar(500),
@ii int,
@c char(1),
@chn nchar(1)
--//初始化变量
Declare @pytable table(
chn char(2) COLLATE Chinese_PRC_CS_AS NOT NULL,
py char(1) COLLATE Chinese_PRC_CS_AS NULL,
PRIMARY KEY (chn)
)
insert into @pytable values('吖', 'A')
insert into @pytable values('八', 'B')
insert into @pytable values('嚓', 'C')
insert into @pytable values(' sql server 2000以前的版本,例如7.0一般不存在多个版本,只有标准版跟桌面版,用户如果不清楚该装什么版本的话,可按安装上的安装先决条件指示安装,一般在WIN2000 服务器版上装标准版,其他的系统装桌面版的就可以;而SQL Server 2000安装问题就比较大,时常见问题有如下:
(1)配置服务器时中断.
(2)注册 ActiveX 时中断.
(3)显示到100%的时候中断.
(4)提示:command line option syntax error, type command /? for help,继续安装,最后在配置服务器的时候出现:无法找到动态链接SQLUNIRL.DLL于指定的路径……
(5)以前进行的程序创建了挂起的文件操作,运行安装程序前,必须重新启动
(1)(2)(3)的解决办法:
提醒:为避免误操作,先备份注册表和数据库进不了SQL Server 2000,可以备份 Program FilesMicrosoft SQL ServerMSSQLData 文件夹的文件.
1、先把SQL Server卸载(卸载不掉也没有关系,继续下面的操作)
2、把Microsoft SQL Server文件夹整个删掉。
3、运行注册表,删除如下项:
HKEY_CURRENT_USERSoftwareMicrosoftMicrosoft SQL Server
HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft SQL Server
HKEY_LOCAL_MACHINESOFTWAREMicrosoftMSSQLServer
4、需要的话就重新启动系统
5、重新安装
另外也可尝试单步运行安装 SQL Server 2000的方法:
1:放入 SQL Server 2000 光盘.
2:在"开始"--"运行"键入 "F:x86setup.exe k=dbg" (F是光盘)
注意:
一、不同的操作系统支持的SQL Server 2000版本以及对硬件的要求。
Windows 2000 Server可以安装SQL Server 2000的任何版本.
Windows 2000 Professional只能安装SQL Server 2000的个人版、开发版、评估版、MCDE
二、
SQL Server 2000各版本以及对硬件的要求。
(4)的解决办法
因为安装文件的路径(完整路径)里有中文.
比如 c:SQLSERVER中文企业版
改成 c:SQLSERVER
(5)的解决办法
a、重启机器,再进行安装,如果发现还有该错误,请按下面步骤
b、在开始->运行中输入regedit
c、到HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession Manager 位置
d、选择文件->倒出,保存
e、在右边窗口右击PendingFileRenameOperations,选择删除,然后确认
f、重启安装,问题解决
-------------------------------------------------------
我将提出一个挑战,谁能用SQLSEERVER提出计算素数最好的方法,
我用了一个新的特点CTE和某些TSQL实现,但均不理想,前者(CTE)有限制,而后者(TSQL)产生一百万个素数用了7分种
你可以干的更好么?
这儿是我的一些代码段落
(TSQL实现)
set nocount on
declare @prime table (prime int not null primary key)
--insert into @prime values (2)
--insert into @prime values (3)
--insert into @prime values (5)
--insert into @prime values (7)
--insert into @prime values (11)
declare @number int, @pc int
set @number = 13
set @pc = 1
while @pc < 1000000
begin
if not exists (select 1 from @prime where @number % prime = 0 and prime < sqrt(@number) )
begin
insert into @prime select @number
set @pc = @pc 1
end
set @number = @number
case when @number %2 = 1 then 2
when @number %3 = 2 then 2
when @number %5 = 4 then 2
when @number %7 = 6 then 2
when @number  = 10 then 2
else 1 end
end
select @pc

(CTE实现)
with seq
as( select 13 number
union all
select s.number
case when s.number %2 = 1 then 2
when s.number %3 = 2 then 2
when s.number %5 = 4 then 2
when s.number %7 = 6 then 2
when s.number  = 10 then 2
else 1 end
from seq s
where number < 32767
)
, prime as (
select s.number
from seq s
where not exists ( select 1 from seq s2 where s2.number < s.number and (s.number) % s2.number = 0)
)
select *
from prime
option (MAXRECURSION 32767)


[!--infotagslink--]

相关文章

  • MyBatis-Plus自动填充功能失效导致的原因及解决

    这篇文章主要介绍了MyBatis-Plus自动填充功能失效导致的原因及解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-04
  • C#实现延时并自动关闭MessageBox的方法

    这篇文章主要介绍了C#实现延时并自动关闭MessageBox的方法,非常实用的功能,需要的朋友可以参考下...2020-06-25
  • SpringMvc自动装箱及GET请求参数原理解析

    这篇文章主要介绍了SpringMvc自动装箱及GET请求参数原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-09-19
  • Postgresql 解决pg掉电后无法重启的问题

    这篇文章主要介绍了Postgresql 解决pg掉电后无法重启的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-18
  • 利用Redis如何实现自动补全功能

    这篇文章主要给大家介绍了关于如何利用Redis如何实现自动补全功能的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Redis具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧...2020-04-17
  • MySQL自动停机的问题处理实战记录

    这篇文章主要给大家介绍了关于MySQL自动停机的问题处理,文中通过示例代码介绍的非常详细,对大家学习或者使用MySQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧...2020-06-01
  • Email URL的判断和自动转换函数

    <?php function validateEmail($email) { return eregi("^[_a-z0-9-] (.[_a-z0-9-] )*@[a-z0-9-] (.[a-z0-9-] )*(.[a-z]{2,3})$", $email); } function validat...2016-11-25
  • 类的自动加载

    当你尝试使用一个未定义的类时,PHP会报告一个致命错误. 解决方法就是添加一个类,可以用include包含一个文件. 究竟你知道要用到哪个类. 但是,PHP提供了类的自动加载功...2016-11-25
  • 实例:实现自动清除日期目录shell脚本

    这次文章给大家带来的是一个简单使用的实例:实现自动清除日期目录shell脚本,对脚本感兴趣的下面我们一起来看看那具体的清除日期方法。 实现自动清除日期目录shell...2017-07-06
  • 关闭PayPal预付款,避免自动扣费的教程

    PayPal在国外就是支付宝一样强大了许多的平台都支持PayPal付款了,我信如果购买国外主机肯定会用到PayPal了,今天我们来给各位介绍关闭PayPal预付款,避免自动扣费吧,具体如...2016-10-10
  • 华为Mate9怎么自动删除通知信息 操作设置教程

    华为Mate9如何自动删除通知信息呢?这种操作方法有强迫症的朋友一定要来看一看。 有些华为Mate9用户想要将通知信息设置成自动删除,不过你清楚具体的操作吗?华为Mate9...2017-01-22
  • PHP微信开发之微信消息自动回复下所遇到的坑

    这篇文章是小编给大家介绍的微信消息自动回复下所遇到的坑的相关内容,在日常项目开发中经常遇到,非常具有参考借鉴价值,感兴趣的小伙伴一起学习吧...2016-05-13
  • 深入理解PHP类的自动载入机制

    下面小编就为大家带来一篇深入理解PHP类的自动载入机制。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-10-02
  • 用PHP脚本自动把纯文本文件转换成Web页面

    最近,我的一个老朋友向我打电话求助。他从事记者的职业有多年了,最近获得了重新出版他的很多早期专栏的权利。他希望把他的作品贴在Web上;但是他的专栏都是以纯文本文件的...2016-11-25
  • 利用PHP代码实现网页自动判断转向

    用户可接受的语言信息,放在$_SERVER['HTTP_ACCEPT_LANGUAGE']里,变量信息是类似这样的 "zh-cn", 假如是多语言列,是类似 "zh-cn,en;q=0.8,ko;q=0.5,zh-tw;q=0.3"   下...2016-11-25
  • MySql数据库自动递增值问题

    这篇文章主要介绍了MySql数据库自动递增值问题的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2016-07-29
  • windows 服务器自动备份任务(批处理)

    很久很久以前的资料了,现在整理一下分享出来。大家交流一下。也可以提取你需要的命令进行使用,很多方法都是整理于网络,没有版权什么的。随便转载。 ...2016-01-27
  • PHP实现网页自动更新块

      能不能让php为你的网页添加一些每隔一段时间就自动更新的内容,以更好的吸引访客呢?实现这一功能并不需要太高深的编程知识,请看以下例子:   (一)英语谚语   让我们...2016-11-25
  • ecshop自动分成二次开发实例

    自动分成功能在ecshop系统自带是没有的,如果我们需要对一单添加分成功能我们是需要进入二次开发的,下面小编来为各位介绍一个例子。 大概逻辑:后台操作一个订单发货...2016-11-25
  • PHP自动更新新闻DIY

    我们浏览一些网站的时候,往往看到一些新闻是刚刚更新不久的,假如要是人工维护的话,那会是一项非常繁琐的工作。然而,我们可以通过程序来控制实现更新操作,事情就会变得很方...2016-11-25