Как планировать и автоматизировать резервное копирование баз данных SQL Server в SQL Server Express

Переводы статьи Переводы статьи
Код статьи: 2019698 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

Аннотация

Выпуски SQL Server Express не предлагают возможность планировать выполнение заданий или планы обслуживания, поскольку компонент агента SQL Server не входит в эти выпуски. Таким образом, необходимо использовать другой подход, чтобы создать резервную копию базы данных при использовании этих выпусков.   

В настоящее время пользователям SQL Server Express можно архивировать свои базы данных с помощью одного из следующих методов:

С помощью SQL Server Management Studio Express. Это приложение устанавливается вместе с SQL Server Express для расширенное обслуживание или SQL Server Express набор средств. Для получения дополнительных сведений посетите следующий веб-узел Microsoft Developer Network (MSDN):

Создание резервной копии всей базы данных (SQL Server)

  • Используйте сценарий Transact-SQL, использующий семейства резервного КОПИРОВАНИЯ базы данных команд. Для получения дополнительных сведений перейдите на веб-сайте MSDN:

    Резервной копии (Transact-SQL)

    В данной статье описывается, как использовать сценарий Transact-SQL вместе с планировщиком заданий Windows для автоматического создания резервной копии баз данных на SQL Server Express на регулярной основе.

  • Дополнительная информация

    Необходимо выполнить следующие три действия для резервного копирования баз данных SQL Server с помощью планировщика заданий Windows.

    Шаг А: управление использовать SQL Server Studio Express или Sqlcmd, чтобы создать следующую хранимую процедуру в базе данных master:

    © Корпорация Майкрософт.  Все права защищены.

    Этот код выпущен на условиях

    / / Общая лицензия Майкрософт (MS-PL, http://opensource.org/licenses/ms-pl.html.)

    Использование [Основной]
    GO 
    / *** Объект: StoredProcedure [dbo].[sp_BackupDatabases] *** /
    SET ANSI_NULLS ON
    Перейти
    SET QUOTED_IDENTIFIER ON
    Перейти
    --===
    --Автор: Microsoft
    --Дата создания: 2010-02-06
    --Описание: резервного копирования баз данных для SQLExpress
    --параметр1: имя базы данных
    --параметр2: Тип_архива F = Полный, D = разностная резервная копия, L = журнал
    --параметр3: расположение файла резервной копии
    --===
    Создать ПРОЦЕДУРЫ [dbo]. [[sp_BackupDatabases]
    @databaseName sysname = null,
    @backupType CHAR(1),
    @backupLocation nvarchar(200)
    как
    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
                      @DBs удалить где DBNAME в ("tempdb", "Northwind", "pubs", "AdventureWorks")
    конец
    ELSE IF @backupType = было "
    НАЧАТЬ
    @DBs удалить где DBNAME в ("tempdb","Northwind","pubs""Шаблоны","AdventureWorks")
    конец
    ELSE IF @backupType = 'L'
    НАЧАТЬ
    @DBs удалить где DBNAME в ("tempdb","Northwind","pubs""Шаблоны","AdventureWorks")
    конец
    ELSE
    НАЧАТЬ
    возврата
    конец
    --объявления переменных
    DECLARE @BackupName varchar(100)
    DECLARE @BackupFile varchar(100)
    DECLARE @DBNAME varchar(300)
    DECLARE @sqlCommand NVARCHAR(1000)
    DECLARE @dateTime тип
    int ОБЪЯВИТЬ @ цикл
    --цикл по базам данных по одному
    @ ВЫБЕРИТЕ цикл = @DBs от min(ID)
    при @Loop IS NOT NULL
    НАЧАТЬ
    --имена баз данных должны быть в формате [dbname], так как некоторые из них имеют - или _ имя
          @DBNAME НАБОР = "[" +(SELECT DBNAME FROM @DBs WHERE ID = @Loop) +""]
    --задать текущее n yyyyhhmmss формат даты и времени
    @dateTime НАБОР = ЗАМЕНА (преобразовать (VARCHAR, "_" + GETDATE(),101),'/','') + заменить (преобразовать (VARCHAR, GETDATE(),108),':','')
    --Создание резервной копии файла в формате path\filename.extension для полной, копирования и резервных копий журналов
    @backupType Если = "F"
    @BackupFile НАБОР = @backupLocation + ЗАМЕНА (заменить (@DBNAME, "[",''), "]",'') "_FULL_" + @dateTime+ ".BAK "
    ELSE IF @backupType = было"
    @BackupFile НАБОР = @backupLocation + ЗАМЕНА (заменить (@DBNAME, "[",''), "]", ")"_DIFF_"+ @dateTime+".BAK "
    @backupType ELSE IF = 'L'
    НАБОР @BackupFile = @backupLocation + ЗАМЕНА (заменить (@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

    B шаг: В текстовом редакторе, создайте пакетный файл с именем Sqlbackup.bat, а затем скопируйте текст из одного из следующих примеров в этот файл, в зависимости от конкретного сценария:

    Example1:Полное резервное копирование всех баз данных в локальный именованный экземпляр SQLEXPRESS, используя проверку подлинности Windows

    SqlBackup.bat

    sqlcmd -S. \EXPRESS-E -Q "EXEC sp_BackupDatabases @backupLocation = было: \SQLBackups\", @backupType "F" =" 

    Example2: разностных резервных копий всех баз данных в локальный именованный экземпляр SQLEXPRESS, используя SQLLogin и пароль

    SqlBackup.bat

    SQLCMD - U SQLLogin -P пароль -S. \SQLEXPRESS -Q "EXEC sp_BackupDatabases @backupLocation ="D:\SQLBackups", @BackupType = было" "

    Примечание: shouldhave SQLLogin на менее роли оператора резервного копирования в SQL Server.


    Пример 3:Резервные копии журналов для всех баз данных в локальный именованный экземпляр SQLEXPRESS, используя проверку подлинности Windows

    SqlBackup.bat

    sqlcmd -S. \SQLEXPRESS -E -Q "EXEC sp_BackupDatabases @backupLocation = было: \SQLBackups\", @backupType = 'L' "

    Пример 4:Полные резервные копии базы данных USERDB в локальный именованный экземпляр SQLEXPRESS, с использованием проверки подлинности Windows

    SqlBackup.bat

    sqlcmd -S. \SQLEXPRESS -E -Q "EXEC sp_BackupDatabases @backupLocation = было: \SQLBackups\", @databaseName = 'USERDB' @backupType = 'F' "

    Аналогичным образом, можно сделать разностной резервной копии резервной копии USERDB путем вставки в "для параметра @backupType и резервная копия журнала USERDB, вставляя в них 'L' для параметра @backupType .

    Этап c.Расписания задания с помощью планировщика заданий Windows для выполнения пакетного файла, который был создан на шаге B. Чтобы сделать это, выполните следующие действия:

    1. На компьютере, на котором выполняется SQL Server Express, нажмите кнопку Пуск, выделите пункт Все программы, Стандартные, Служебныеи выберите команду Назначенные задания. 
    2. Дважды щелкните значок Добавить задание. 
    3. В мастере планирования заданий нажмите кнопку Далее. 
    4. Обзор, выберите командный файл, созданный на шаге B и нажмите кнопку Открыть. 
    5. Введите имя задачи SQLBACKUP , выберите деньи нажмите кнопку Далее. 
    6. Укажите данные для расписания выполнения задания. (Корпорация Майкрософт рекомендует выполнять эту задачу по крайней мере один раз каждый день.) Нажмите кнопку Далее.
    7. В поле имя пользователя введите имя пользователя и введите пароль в поле пароль введите .

      Примечание Этот пользователь должен по крайней мере назначаться BackupOperator роль на уровне SQL Server при использовании одного из пакетных файлов в примере 1, 3 или 4.
    8. Нажмите кнопку Далее, а затем нажмите кнопку Готово. 
    9. Выполните задание по крайней мере один раз убедитесь, что резервная копия успешно создана.

      ПримечаниеПапка для программы SQLCMD обычно находится в переменных Path для сервера после установки SQL Server, но если эта папка не отображается в переменной Path, его можно найти в разделе < место установки > \90\Tools\Binn (например: C:\Program Server\90\Tools\Binn SQL создаваемую).

      Иметь в виду следующее при использовании процедуры, описанной в этой статье:

      • Должна быть запущена служба планировщика задач Windows во время выполнения задания по расписанию. Корпорация Майкрософт рекомендует установить как Автоматическийтип запуска для этой службы. Это гарантирует выполнение даже на перезапуск службы.
      • Должно быть много места на диске, в который записываются резервные копии. Мы рекомендуем чистить старые файлы в папке архива регулярно, чтобы убедиться, что не выполняются недостаточно места на диске. Сценарий не содержит логику, чтобы очистить старые файлы.

      Дополнительные ссылки

    Свойства

    Код статьи: 2019698 - Последний отзыв: 20 августа 2014 г. - Revision: 7.0
    Информация в данной статье относится к следующим продуктам.
    • 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
    Ключевые слова: 
    kbmt KB2019698 KbMtru
    Переведено с помощью машинного перевода
    ВНИМАНИЕ! Данная статья переведена с использованием программного обеспечения Майкрософт для машинного перевода и, возможно, отредактирована посредством технологии Community Translation Framework (CTF). Корпорация Майкрософт предлагает вам статьи, обработанные средствами машинного перевода, отредактированные членами сообщества Майкрософт и переведенные профессиональными переводчиками, чтобы вы могли ознакомиться со всеми статьями нашей базы знаний на нескольких языках. Статьи, переведенные с использованием средств машинного перевода и отредактированные сообществом, могут содержать смысловое, синтаксические и (или) грамматические ошибки. Корпорация Майкрософт не несет ответственности за любые неточности, ошибки или ущерб, вызванные неправильным переводом контента или его использованием нашими клиентами. Подробнее об CTF можно узнать по адресу http://support.microsoft.com/gp/machine-translation-corrections/ru.
    Эта статья на английском языке: 2019698

    Отправить отзыв

     

    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