Cómo programar y automatizar las copias de seguridad de bases de datos de SQL Server Express de SQL Server

Seleccione idioma Seleccione idioma
Id. de artículo: 2019698 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

Resumen

De SQL Server Express Edition no ofrece una manera de programar trabajos o planes de mantenimiento, ya que el componente agente de SQL Server no se incluye en estas ediciones. Por lo tanto, debe tomar un enfoque diferente para realizar una copia de las bases de datos al utilizar estas ediciones.   

Actualmente los usuarios de SQL Server Express, copias de sus bases de datos mediante uno de los métodos siguientes:

Utilice SQL Server Management Studio Express. Se instala junto con SQL Server Express Advanced Service o SQL Server Express Toolkit. Para obtener más información, visite el siguiente sitio Web de Microsoft Developer Network (MSDN):

Crear una copia de seguridad completa de la base de datos (SQL Server)

  • Utilice una secuencia de comandos de Transact-SQL que utiliza la familia de comandos de base de datos de copia de seguridad. Para obtener más información, visite el siguiente sitio Web de MSDN:

    Copia de seguridad (Transact-SQL)

    En este artículo se describe cómo utilizar una secuencia de comandos de Transact-SQL junto con el programador de tareas de Windows para automatizar las copias de seguridad de bases de datos de SQL Server Express de forma programada.

  • Más información

    Tienes que seguir estos tres pasos para hacer la copia de seguridad de las bases de datos de SQL Server mediante el uso de programador de tareas de Windows:

    Paso un: utilice SQL Server Management Studio Express o Sqlcmd para crear el siguiente procedimiento almacenado en la base de datos master:

    Copyright © Microsoft Corporation.  Reservados todos los derechos.

    Este código bajo los términos de la

    / / Licencia pública de Microsoft (MS-PL, http://opensource.org/licenses/ms-pl.html.)

    Uso [master]
    GO 
    / *** Objeto: StoredProcedure [dbo].[sp_BackupDatabases] *** /
    SET ANSI_NULLS ON
    Ir
    SET QUOTED_IDENTIFIER ON
    Ir
    --==
    --Autor: Microsoft
    : fecha de creación: 2010-02-06
    --Descripción: copia de seguridad de las bases de datos de SQLExpress
    --parámetro1: databaseName
    --parámetro2: tipoDeCopiaDeSeguridad F = completo, D = diferencial, L = registro
    --parámetro3: ubicación del archivo de copia de seguridad
    --==
    CREATE PROCEDURE [dbo]. [sp_BackupDatabases]
    @databaseName sysname = null,
    @backupType char (1),
    @backupLocation nvarchar (200)
    AS
    SET NOCOUNT 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
                      Eliminar @DBs donde en DBNAME ('tempdb', 'Northwind', 'pubs', 'AdventureWorks')
    final
    ELSE IF @backupType = tenía '
    comenzar
    @DBs eliminar donde en DBNAME ('tempdb', 'Northwind', 'pubs', 'master', 'AdventureWorks')
    final
    ELSE IF @backupType = 'L'
    comenzar
    @DBs eliminar donde en DBNAME ('tempdb', 'Northwind', 'pubs', 'master', 'AdventureWorks')
    final
    ELSE
    comenzar
    devolver
    final
    --declarar variables
    DECLARE @BackupName varchar
    DECLARE @BackupFile varchar
    DECLARE @DBNAME varchar(300)
    DECLARE @sqlCommand tipo
    DECLARE @dateTime nvarchar (20)
    int DECLARE @ bucle
    --bucle a través de las bases de datos uno a uno
    SELECT @ bucle = min(ID) de @DBs
    al @Loop IS NOT NULL
    comenzar
    --los nombres de base de datos tienen que estar en formato de [dbname], ya que algunos tienen - o _ en su nombre
          @DBNAME conjunto = '[' +(SELECT DBNAME FROM @DBs WHERE ID = @Loop) +']'
    --establecer el formato de yyyyhhmmss n de fecha y hora actual
    SET @dateTime = reemplazar (convertir (VARCHAR, GETDATE(),101),'/','') + '_' + reemplazar (convertir (VARCHAR, GETDATE(),108),':','')
    : crear el nombre de archivo de copia de seguridad en formato de path\filename.extension para las copias de seguridad completa, diferencias y registro de
    IF @backupType = 'F'
    SET @BackupFile = @backupLocation + reemplazar (reemplazar (@DBNAME, ' [', ''),'] ','') + '_FULL_' + @dateTime+ '.BAK'
    ELSE IF @backupType = tenía '
    SET @BackupFile = @backupLocation + reemplazar (reemplazar (@DBNAME, ' [', ''),'] ','') + '_DIFF_' + @dateTime+ '.BAK'
    ELSE IF @backupType = 'L'
    SET @BackupFile = @backupLocation + reemplazar (reemplazar (@DBNAME, ' [', ''),'] ','') + '_LOG_' + @dateTime+ '.TRN'
     
    -- Provide the backup a name for storing in the media
          IF @backupType = 'F'
                SET @BackupName = REPLACE(REPLACE(@DBNAME,'[',''),']','') +' full backup for '+ @dateTime
          IF @backupType = 'D'
                SET @BackupName = REPLACE(REPLACE(@DBNAME,'[',''),']','') +' differential backup for '+ @dateTime
          IF @backupType = 'L'
                SET @BackupName = REPLACE(REPLACE(@DBNAME,'[',''),']','') +' log backup for '+ @dateTime
     
    -- Generate the dynamic SQL command to be executed
     
           IF @backupType = 'F' 
                      BEGIN
                   SET @sqlCommand = 'BACKUP DATABASE ' +@DBNAME+  ' TO DISK = '''+@BackupFile+ ''' WITH INIT, 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 where ID > @Loop

    Paso B: en un editor de texto, cree un archivo por lotes denominado Sqlbackup.bat y, a continuación, copie el texto de uno de los siguientes ejemplos en ese archivo, dependiendo de su situación:

    Ejemplo1:Copias de seguridad completas de las bases de datos en la instancia con nombre local de SQLEXPRESS mediante la autenticación de Windows

    SQLBackup.bat

    sqlcmd -S. \EXPRESS: E -Q "EXEC sp_BackupDatabases @backupLocation = tenía: \SQLBackups\', @backupType = 'F'" 

    Ejemplo2: copias de seguridad diferenciales de todas las bases de datos en la instancia con nombre local de SQLEXPRESS con un SQLLogin y su contraseña

    SQLBackup.bat

    Sqlcmd - U SQLLogin -P contraseña -S. \SQLEXPRESS -Q "EXEC sp_BackupDatabases @backupLocation = 'D:\SQLBackups', @BackupType = tenía '"

    Nota: SQLLogin el haber en por lo menos la función de operador de copia de seguridad de SQL Server.


    Ejemplo 3:Copias de seguridad de registro de todas las bases de datos en una instancia con nombre local de SQLEXPRESS mediante la autenticación de Windows

    SQLBackup.bat

    Sqlcmd -S. \SQLEXPRESS -E -Q "EXEC sp_BackupDatabases @backupLocation = tenía: \SQLBackups\', @backupType = 'L'"

    Ejemplo 4:Copias de seguridad completas de la base de datos USERDB en la instancia con nombre local de SQLEXPRESS mediante la autenticación de Windows

    SQLBackup.bat

    Sqlcmd -S. \SQLEXPRESS -E -Q "EXEC sp_BackupDatabases @backupLocation = tenía: \SQLBackups\', @databaseName = 'USERDB', @backupType = 'F'"

    De forma similar, que tiene una diferencia de copia de seguridad de USERDB pegando en ' para el parámetro de @backupType y una copia de seguridad del registro de USERDB pegando 'L' para el parámetro @backupType .

    Paso C:Programación de un trabajo mediante el uso de programador de tareas de Windows para ejecutar el archivo por lotes que creó en el paso B. Para ello, siga estos pasos:

    1. En el equipo que está ejecutando SQL Server Express de, haga clic en Inicio, seleccione Programas, Accesorios, herramientas del Sistemay, a continuación, haga clic en tareas programadas. 
    2. Haga doble clic en Agregar tarea programada. 
    3. En el Asistente para tareas programadas, haga clic en siguiente. 
    4. Examinar, haga clic en el archivo por lotes que creó en el paso B y, a continuación, haga clic en Abrir. 
    5. Escriba SQLBACKUP para el nombre de la tarea, haga clic en diariamentey, a continuación, haga clic en siguiente. 
    6. Especificar la información de un plan ejecutar la tarea. (Se recomienda ejecutar esta tarea al menos una vez al día). A continuación, haga clic en siguiente.
    7. En el campo Escriba el nombre de usuario , escriba un nombre de usuario y, a continuación, escriba una contraseña en el campo Escriba la contraseña .

      Nota Este usuario debe por lo menos asignarse la función BackupOperator en SQL Server si utiliza uno de los archivos de proceso por lotes de ejemplo 1, 3 o 4.
    8. Haga clic en siguientey, a continuación, haga clic en Finalizar. 
    9. Ejecutar la tarea programada al menos una vez para asegurarse de que la copia de seguridad se ha creado correctamente.

      NotaLa carpeta para el archivo ejecutable SQLCMD es generalmente en las variables de ruta de acceso para el servidor después de que SQL Server está instalado, pero si la variable de ruta de acceso no incluye esta carpeta, puede encontrar en \90\Tools\Binn < ubicación de instalación > (por ejemplo: C:\Program Files\Microsoft SQL Server\90\Tools\Binn).

      Tenga en cuenta lo siguiente cuando utilice el procedimiento que se describe en este artículo:

      • El servicio Programador de tareas de Windows se debe ejecutar en el momento en que el trabajo está programado para ejecutarse. Se recomienda que establezca el tipo de inicio para este servicio como automático. Esto garantiza que el servicio se ejecutará incluso en un reinicio.
      • Se debería ser mucho espacio en la unidad a la que se escriben las copias de seguridad. Le recomendamos que limpie los archivos antiguos en la carpeta de copia de seguridad con regularidad para asegurarse de que no tiene espacio en disco. La secuencia de comandos no contiene la lógica para limpiar los archivos antiguos.

      Referencias adicionales

    Propiedades

    Id. de artículo: 2019698 - Última revisión: lunes, 23 de junio de 2014 - Versión: 2.0
    La información de este artículo se refiere a:
    • Microsoft SQL Server 2014 Express
    • Microsoft SQL Server 2012 Express
    • Microsoft SQL Server 2008 Express
    • Microsoft SQL Server 2008 Express with Advanced Services
    • Microsoft SQL Server 2005 Express Edition
    • Microsoft SQL Server 2005 Express Edition with Advanced Services
    Palabras clave: 
    kbmt KB2019698 KbMtes
    Traducción automática
    IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
    Haga clic aquí para ver el artículo original (en inglés): 2019698

    Enviar comentarios

     

    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