如何安排和自动 SQL Server 速成版的 SQL Server 数据库的备份

文章翻译 文章翻译
文章编号: 2019698
展开全部 | 关闭全部

概要

SQL Server Express 版本不提供一种安排作业或维护计划,因为这些版本中不包括 SQL Server 代理组件的方法。因此,您需要采用不同的方法来备份您的数据库时使用这些版本。  

当前 SQL Server Express 用户可以备份其数据库使用下列方法之一:

使用 SQL Server 管理 Studio 速成版。这被安装与 SQL Server 快速高级服务或 SQL Server Express Toolkit。有关详细信息,请转到下面的 Microsoft 开发人员网络 (MSDN) 网站:

创建完整的数据库备份 (SQL Server)

  • 使用事务处理性 SQL 脚本使用命令的备份数据库系列。有关详细信息,请转到下面的 MSDN 网站:

    备份 (处理 SQL)

    本文介绍如何使用 Windows 任务计划程序与 ? SQL 脚本来自动执行定期 SQL Server Express 数据库的备份。

  • 更多信息

    您必须按照以下三个步骤通过使用 Windows 任务计划程序来备份您的 SQL Server 数据库:

    步骤 A: 使用 SQL Server 管理 Studio 明示或 Sqlcmd,在主数据库中创建以下存储的过程:

    / / 版权所有 ? Microsoft 公司。保留所有权利。

    / / 此代码发布的条款

    / / Microsoft 公共许可证 (MS-PL http://opensource.org/licenses/ms-pl.html。)

    使用 [主机]
    GO 
    / ****** 对象: StoredProcedure [dbo]。[sp_BackupDatabases] ****** /
    设置 ANSI_NULLS ON
    设置 QUOTED_IDENTIFIER ON
    -=============================================
    -作者: Microsoft
    -创建日期: 2010年-02-06
    -说明: SQLExpress 的备份数据库
    -Parameter1: '数据库名称'
    -Parameter2: backupType F = 完全,D = 差异,L = 日志
    -Parameter3: 备份文件位置
    -=============================================
    创建过程 [dbo]。 [sp_BackupDatabases]
    @ '数据库名称' sysname = null,
    @ backupType char (1),
    @ backupLocation nvarchar(200)
    AS
    集就 ON;
               
                DECLARE @DBs TABLE
                (
                      ID int IDENTITY PRIMARY KEY,
                      DBNAME nvarchar(500)
                )
               
                 -- Pick out only databases which are online in case ALL databases are chosen to be backed up
                 -- If specific database is chosen to be backed up only pick that out from @DBs
                INSERT INTO @DBs (DBNAME)
                SELECT Name FROM master.sys.databases
                where state=0
                AND name=@DatabaseName
                OR @DatabaseName IS NULL
                ORDER BY Name
               
                -- Filter out databases which do not need to backed up
                IF @backupType='F'
                      BEGIN
    删除 @ DBs 其中 DBNAME IN (tempdb,罗斯文,pubs,AdventureWorks)
    结束
    ELSE IF @ backupType = 有
    开始
    删除 @ DBs 其中 DBNAME IN (tempdb,罗斯文,pubs,主机,AdventureWorks)
    结束
    ELSE IF @ backupType = L
    开始
    删除 @ DBs 其中 DBNAME IN (tempdb,罗斯文,pubs,主机,AdventureWorks)
    结束
    ELSE
    开始
    返回
    结束
    -声明变量
    声明 @ BackupName varchar(100)
    声明 @ BackupFile varchar(100)
    声明 @ DBNAME varchar(300)
    DECLARE @ sqlCommand NVARCHAR(1000)
    DECLARE @ 日期时间 NVARCHAR(20)
    声明 @ 循环 int
    -逐个遍历数据库
    选择 @ 循环 = min(ID) FROM @ DBs
    WHILE 循环 IS NOT NULL @
    开始
    -数据库名称必须在 [dbname] 格式,因为一些具有-或 _ 名称中的
    设置 @ DBNAME = [+(SELECT DBNAME FROM @DBs WHERE ID = @Loop) +]
    — 将当前的日期和时间 n yyyyhhmmss 格式设置
    集 @ 日期时间 = 替换 (转换 (VARCHAR GETDATE(),101),'/','') + _ +替换 (转换 (VARCHAR、 GETDATE(),108),':','')
    --创建 path\filename.extension 格式的完整、 差异和日志备份的备份文件名
    如果 @ backupType = F
    设置 @ BackupFile @ backupLocation + 替换 = (替换 (@ DBNAME,[,'),],') + '_FULL_' + @ 日期时间 +。BAK
    ELSE IF @ backupType = 有
    设置 @ BackupFile @ backupLocation + 替换 = (替换 (@ DBNAME,[,),],') + '_DIFF_' + @ 日期时间 +。BAK
    ELSE IF @ backupType = 'L'
    设置 @ BackupFile @ backupLocation + 替换 = (替换 (@ DBNAME,[,),],') + '_LOG_' + @ 日期时间 +。TRN
    -提供备份存储媒体中的名称
    如果 @ backupType = F
    设置 @ BackupName = REPLACE(REPLACE(@DBNAME,'[',''),']','') + 完整备份的 + @ 日期时间
    如果 @ backupType = 有
    设置 @ BackupName = REPLACE(REPLACE(@DBNAME,'[',''),']','') + 差异备份的 + @ 日期时间
    如果 @ backupType = L
    设置 @ BackupName = REPLACE(REPLACE(@DBNAME,'[',''),']','') + 日志备份 + @ 日期时间
    -生成动态的 SQL 命令,以执行
    如果 @ backupType = F
    开始
    集 @ sqlCommand = 备份数据库 +@DBNAME+保存到磁盘 = '' +@BackupFile+' 与初始化, NAME= ''' +@BackupName+''', NOSKIP, NOFORMAT'
                      END
           IF @backupType = 'D'
                      BEGIN
                   SET @sqlCommand = 'BACKUP DATABASE ' +@DBNAME+  ' TO DISK = '''+@BackupFile+ ''' WITH DIFFERENTIAL, INIT, NAME= ''' +@BackupName+''', NOSKIP, NOFORMAT'        
                      END
           IF @backupType = 'L' 
                      BEGIN
                   SET @sqlCommand = 'BACKUP LOG ' +@DBNAME+  ' TO DISK = '''+@BackupFile+ ''' WITH INIT, NAME= ''' +@BackupName+''', NOSKIP, NOFORMAT'        
                      END
     
    -- Execute the generated SQL command
           EXEC(@sqlCommand)
     
    -- Goto the next database
    SELECT @Loop = min(ID) FROM @DBs whereID > @ 循环
    结束

    步骤 B: 在文本编辑器中,创建名为 Sqlbackup.bat,一个批处理文件,然后从下面的示例将文本复制到该文件,具体取决于您的情况:

    Example1:通过使用 Windows 身份验证为 SQLEXPRESS 的本地命名实例中的所有数据库的完整备份

    / / Sqlbackup.bat

    -S sqlcmd。 \EXPRESS –E-Q"EXEC sp_BackupDatabases @ backupLocation = 有: \SQLBackups\,@ backupType = F" 

    则: SQLEXPRESS 使用 SQLLogin 和其密码的本地命名实例中的所有数据库差异备份

    / / Sqlbackup.bat

    sqlcmd-U SQLLogin-P 密码-S。 \SQLEXPRESS-Q"EXEC sp_BackupDatabases @ backupLocation = D:\SQLBackups、 @ BackupType = 有 '"

    : 在 SQLLogin shouldhave SQL Server 中的最小备份操作员角色。


    示例 3:通过使用 Windows 身份验证为 SQLEXPRESS 的本地命名实例中的所有数据库的日志备份

    / / Sqlbackup.bat

    -S sqlcmd。 \SQLEXPRESS E-Q"EXEC sp_BackupDatabases @ backupLocation='D:\SQLBackups\',@backupType='L'"

    示例 4:USERDB SQLEXPRESS 通过使用 Windows 身份验证的本地命名实例中的数据库的完整备份

    / / Sqlbackup.bat

    -S sqlcmd。 \SQLEXPRESS E-Q"EXEC sp_BackupDatabases @ backupLocation = 有: \SQLBackups\' @ '数据库名称' = 'USERDB'、 @ backupType = F"

    同样,您可以进行差异备份的 USERDB 粘贴在将@ backupType参数和粘贴 L 中的@ backupType参数通过 USERDB 的日志备份。

    步骤 c:通过使用 Windows 任务计划程序执行的批处理文件的步骤 B.中创建的作业的计划若要执行此操作,请按照下列步骤:

    1. 在计算机上运行 SQL Server Express,单击开始,指向所有程序都附件、 都指向系统工具,然后单击任务计划。 
    2. 双击添加任务计划 
    3. 在计划任务向导中,单击下一步 
    4. 单击浏览,单击您在步骤 B 中创建的批处理文件,然后单击 $打开 
    5. 键入SQLBACKUP的任务的名称作为每日,再单击然后单击 $下一步 
    6. 指定要运行任务计划的信息。(我们建议您运行此任务每天至少一个时间。然后,单击下一步
    7. 输入用户名称字段中,键入用户的名称,然后在输入密码字段中键入密码。

      注意此用户应至少分配 SQL Server 级别的 BackupOperator 角色如果使用示例 1、 3 或 4 中的批处理文件之一。
    8. 单击下一步,然后单击完成 
    9. 至少一个次执行计划的任务以确保备份创建成功。

      注意SQLCMD 可执行文件的文件夹通常是在服务器路径的变量之后安装 SQL Server,但是如果 Path 变量不会列出该文件夹,您可以找到它在< 安装位置 > \90\Tools\Binn下 (例如: 名是 SQL Server\90\Tools\Binn)。

      使用本文中介绍的过程时,应注意以下任一操作:

      • 安排该作业运行时,必须运行 Windows 任务计划程序服务。我们建议您将此服务的启动类型设置为自动。这将确保该服务将运行即使在重新启动。
      • 有应大量正在向其写入备份驱动器上的空间。我们建议您清除旧文件备份文件夹中的定期以确保您不要运行磁盘空间不足。该脚本不包含可清除旧文件的逻辑。

      其他参考

    属性

    文章编号: 2019698 - 最后修改: 2012年6月29日 - 修订: 1.0
    关键字:?
    kbmt KB2019698 KbMtzh
    机器翻译
    注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
    点击这里察看该文章的英文版: 2019698
    Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

    提供反馈

     

    Contact us for more help

    Contact us for more help
    Connect with Answer Desk for expert help.
    Get more support from smallbusiness.support.microsoft.com