27,579
社区成员
发帖
与我相关
我的任务
分享
从SQL2000升级到2005,不知是否没装好,数据库维护计划不能使用。换了一台机试了下,打上SP2或SP3后可以正常使用维护计划,但由于种种原因,这台机不能打SP2或SP3,这下麻烦了,备份怎么办?不用怕,维护计划不能用,可以用作业备份:
SQL SERVER代理--作业--新建作业--设好“常规、步骤、计划、警报、通知、目标”等项。在步骤里面输入如下命令:
DECLARE @sql VARCHAR(500),@DBNAME SYSNAME
SET @DBNAME = 'AIS20070830192910' --修改为要备份数据库名字
SET @sql = 'BACKUP DATABASE [' + @DBNAME + '] TO DISK = ''F:\SQL-MDF\bak\' + @DBNAME + '_FULL_BAK_' +CONVERT(VARCHAR,GETDATE(),112)+ '.BAK'''
EXEC(@sql)
另外别忘了在SQL SERVER CONFIGURATION MANAGER里面将AGENT服务打开。
还有一些网友写的,没有试过,以后有空用来试试:
--自动删除三天前的备份
declare @data_3ago nvarchar(50)
declare @cmd varchar(50)
set @data_3ago = 'F:\SQL-MDF\bak\ '+convert(varchar(10),getdate()-3,112)
set @cmd = 'del '+ @data_3ago
exec master..xp_cmdshell @cmd
--自动备份
go --中间加一个go
declare @data nvarchar(50)
set @data= 'F:\SQL-MDF\bak\ '+convert(varchar(10),getdate(),112)
BACKUP DATABASE job TO DISK = @data
with init
删除15天前备份文件
--备份
declare @sql varchar(8000)
set @sql='backup database mis to disk=''d:\databack\mis\mis'
+rtrim(convert(varchar,getdate(),112))+'.bak'''
exec(@sql)
--删除15天前备份文件
set @sql='del d:\databack\mis\mis'
+rtrim(convert(varchar,getdate()-15,112))+'.bak'''
exec master..xp_cmdshell @sql
例子:
数据库TEST中存在表
mc qcid jg bz
-------------------- ----------- ----------- ----------
name1 1 4 g
name1 2 4 g
name2 1 4 g
name2 2 4 g
name3 1 4 g
name3 2 4 g
name4 1 4 g
name5 1 4 g
name6 1 4 g
name7 1 4 g
name8 1 4 g
name9 1 4 g
现在要将字段qcid清为0
建立JOB:
点击SQL SERVER 代理-》作业-》新建作业-》名称填(随便填) E-》点击步骤-》新建-》步骤名称填E-》
数据库选择TEST-》命令里面写上update test set qcid=0-》点击计划-》新建-》计划名称E-》频率那选择你的JOB执行的时间(具体看自己的需要)-》最后点击确定
下面来执行下JOB,再看看表里的数据
-----------
mc qcid jg bz
-------------------- ----------- ----------- ----------
name1 0 4 g
name1 0 4 g
name2 0 4 g
name2 0 4 g
name3 0 4 g
name3 0 4 g
name4 0 4 g
name5 0 4 g
name6 0 4 g
name7 0 4 g
name8 0 4 g
name9 0 4 g
(12 行受影响)
JOB执行成功。。
JOB执行时间来你自己根据需要选择。可以设计在某个时间段内某个时间点循环执行
具体定时的将某些表的数据导出excel
你参考下:
生成表里的数据生成TXT文件
DECLARE @date datetime
DECLARE @sql_query varchar(6000)
set @date=getdate()
declare @r_date char(10)
declare @sql varchar(200)
set @r_date = convert(char(10),DATEADD(dd,-1,getdate()),20)
set @sql='select * from [tradedb].[dbo].[store_report_'+@r_date+']'
delete from [tradedb].[dbo].[store_yestoday]
insert into [tradedb].[dbo].[store_yestoday]
exec(@sql)
set @sql_query='select * from [tradedb].[dbo].[store_yestoday] order by orderid'
select len(@sql_query)
EXEC sp_sql_query_to_file 'HDWAPPDB-03','sa','"Olu#9%!7&kL"',@sql_query,'d:\report\lz_report',@date -- 'd:\report\report'为文件存放的绝对路径,不需要文件后缀,如d:\report\report表示放在d:\report文件夹下的report_***.txt,其中‘.txt’为自动生成的后缀)
上面为执行的JOB,里面的存储过程sp_sql_query_to_file如下:
create PROCEDURE sp_sql_query_to_file(
@servername varchar(50), --服务器名
@username varchar(50), --用户名,如果用NT验证方式,则为空''
@password varchar(50) , --密码
@sql_query varchar(2000) , --SQL查询语句,有字符条件时用单引号
@filePath_name varchar(1000), --导出路径和文件名
@date datetime --保存文件时的生成日期戳
)AS
DECLARE @sql varchar(8000)
SET @sql='bcp "'+@sql_query + '" queryout '+' "'+@filePath_name+'_'+
convert(varchar(12),@date,112)+'.txt " /t "," /w'
+' /S '+@servername
+CASE WHEN ISNULL(@username,'')='' THEN '' ELSE ' /U '+@username END
+' /P '+ISNULL(@password,'')
select @sql
EXEC master..xp_cmdshell @sql
IF @@Error<>0 BEGIN
print '生成文件时出错了,请查看!'+@@Error
END
GO