要求.每周日的0:00:00对northwind进行完全备份
老师说用什么,sp_add_jobstep,sp_add_job,sp_add_jobschedule做 
看了联机丛书,还是搞不太懂啊

解决方案 »

  1.   

    -- 添加作业
      EXECUTE @ReturnCode = msdb.dbo.sp_add_job @job_id = @JobID OUTPUT , @job_name = N'model 备份', @owner_login_name = N'JHYSVR\Administrator', @description = N'没有可用的描述。', @category_name = N'[Uncategorized (Local)]', @enabled = 1, @notify_level_email = 0, @notify_level_page = 0, @notify_level_netsend = 0, @notify_level_eventlog = 2, @delete_level= 0
      IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback   -- 添加作业步骤
      EXECUTE @ReturnCode = msdb.dbo.sp_add_jobstep @job_id = @JobID, @step_id = 1, @step_name = N'第 1 步', @command = N'BACKUP DATABASE [model] TO  DISK = N''E:\数据库备份文件夹\model\MODEL_BACKUP'' WITH  NOINIT ,  NOUNLOAD ,  NAME = N''model 备份'',  NOSKIP ,  STATS = 10,  NOFORMAT ', @database_name = N'master', @server = N'', @database_user_name = N'', @subsystem = N'TSQL', @cmdexec_success_code = 0, @flags = 0, @retry_attempts = 0, @retry_interval = 0, @output_file_name = N'', @on_success_step_id = 0, @on_success_action = 1, @on_fail_step_id = 0, @on_fail_action = 2
      IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback 
      EXECUTE @ReturnCode = msdb.dbo.sp_update_job @job_id = @JobID, @start_step_id = 1   IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback   -- 添加作业调度
      EXECUTE @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id = @JobID, @name = N'第 1 调度', @enabled = 1, @freq_type = 8, @active_start_date = 20060919, @active_start_time = 800, @freq_interval = 1, @freq_subday_type = 1, @freq_subday_interval = 0, @freq_relative_interval = 0, @freq_recurrence_factor = 1, @active_end_date = 99991231, @active_end_time = 235959
      IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback   -- 添加目标服务器
      EXECUTE @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @JobID, @server_name = N'(local)' 备份作业脚本里面拷的随便看看
      

  2.   

    --对数据库进行备份
    BACKUP DATABASE Db_test TO DISK='c:\test_data.bak' WITH FORMAT
    GO
      

  3.   

    备份到本机--你是否有足够的权限?如果有足够的权限,可以备份到本机--如果有,可以用下面的方法,查询分析器中操作:-- 创建共享目录
    exec master.dbo.XP_cmdshell 'md c:\bak'
    exec master.dbo.XP_cmdshell 'net share bak=c:\bak'--进行数据备份
    backup database 数据库 to disk='c:\bak\备份.bak'
    /*--以下操作在我的电脑中进行:   打开我的电脑,地址栏中输入:
       \\SQL服务器的计算机名\bak\
       复制里面的备份.bak到你的电脑就行了--我的电脑中的操作结束--*/
    --删除备份生成的文件
    exec master..xp_cmdshell 'del c:\bak\备份.bak'--删除共享
    exec master.dbo.XP_cmdshell 'net share c:\bak /delete /y'
    exec master.dbo.XP_cmdshell 'rd c:\bak'--否则,你还是完全共享你本机的目录,用下面的方法备份:
    backup database 数据库 to disk='\\你的计算机名\共享目录名\备份文件名'---或通过映射网络驱动器(这样可以解决权限问题)--1.映射
    exec master..xp_cmdshell 'net use z: \\xz\c$ "密码" /user:xz\administrator'/*--说明:
    z: 是映射网络路径对应本机的盘符,与下面的备份对应
    \\xz\c$ 是要映射的网络路径
    xz\administrator xz是远程的计算机名,administrator是登陆的用户名
    密码                        上面指定的administrator用户的密码
    --*/--2.进行数据库备份
    backup database 数据库名 to disk='z:\备份文件名'
    --3.备份完成后删除映射
    exec master..xp_cmdshell 'net use z: /delete'
      

  4.   

    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_backupdb]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
    drop procedure [dbo].[p_backupdb]
    GO/*--备份数据库的通用存储过程--邹建 2003.10(引用时请保留此信息)--*//*--调用示例--备份当前数据库
    exec p_backupdb @bkpath='c:\',@bkfname='\DBNAME\_\DATE\_db.bak'--差异备份当前数据库
    exec p_backupdb @bkpath='c:\',@bkfname='db_\DATE\_df.bak',@bktype='DF'--备份当前数据库日志
    exec p_backupdb @bkpath='c:\',@bkfname='db_\DATE\_log.bak',@bktype='LOG'
    --*/
    create proc p_backupdb
    @dbname sysname='', --要备份的数据库名称,不指定则备份当前数据库
    @bkpath nvarchar(260)='', --备份文件的存放目录,不指定则使用SQL默认的备份目录
    @bkfname nvarchar(260)='', --备份文件名,文件名中可以用\DBNAME\代表数据库名,\DATE\代表日期,\TIME\代表时间
    @bktype nvarchar(10)='DB', --备份类型:'DB'备份数据库,'DF' 差异备份,'LOG' 日志备份
    @appendfile bit=1, --追加/覆盖备份文件
    @password nvarchar(20)='' --为备份文件设置的密码(仅sql2000支持),设置后,恢复时必须提供此密码
    as
    declare @sql varchar(8000)
    if isnull(@dbname,'')='' set @dbname=db_name()
    if isnull(@bkpath,'')=''
    begin
    select @bkpath=rtrim(reverse(filename)) from master..sysfiles where name='master'
    select @bkpath=substring(@bkpath,charindex('\',@bkpath)+1,4000)
    ,@bkpath=reverse(substring(@bkpath,charindex('\',@bkpath),4000))+'BACKUP\'
    end
    if isnull(@bkfname,'')='' set @bkfname='\DBNAME\_\DATE\_\TIME\.BAK'
    set @bkfname=replace(replace(replace(@bkfname,'\DBNAME\',@dbname)
    ,'\DATE\',convert(varchar,getdate(),112))
    ,'\TIME\',replace(convert(varchar,getdate(),108),':',''))
    set @sql='backup '+case @bktype when 'LOG' then 'log ' else 'database ' end +@dbname
    +' to disk='''+@bkpath+@bkfname
    +''' with '+case @bktype when 'DF' then 'DIFFERENTIAL,' else '' end
    +case @appendfile when 1 then 'NOINIT' else 'INIT' end
    +case isnull(@password,'') when '' then '' else ',PASSWORD='''+@password+'''' end
    exec(@sql)
    go
      

  5.   

    TO:dawugui(潇洒老乌龟) ( ) 信誉:100    Blog 
    这个行。。邹老的看看