2015-01-24 7 views
0

Я использую этот пакетный файл для резервного копирования всех баз данных в моей SQL сервере, кроме тех, поставляется с SQL сервером,для Windows пакетный файл для резервного копирования базы данных SQL

@ECHO OFF 
SETLOCAL 

REM Get date in format YYYY-MM-DD (assumes the locale is the United States) 
FOR /F “tokens=1,2,3,4 delims=/ ” %%A IN (‘Date /T’) DO SET NowDate=%%D-%%B-%%C 

REM Build a list of databases to backup 
SET DBList=%SystemDrive%SQLDBList.txt 
SqlCmd -E -S MY-PC\SQLEXPRESS -h-1 -W -Q “SET NoCount ON; SELECT Name FROM master.dbo.sysDatabases WHERE [Name] NOT IN (‘master’,’model’,’msdb’,’tempdb’)” > “%DBList%” 

REM Backup each database, prepending the date to the filename 
FOR /F “tokens=*” %%I IN (%DBList%) DO (
ECHO Backing up database: %%I 
SqlCmd -E -S MY-PC\SQLEXPRESS -Q “BACKUP DATABASE [%%I] TO Disk=’D:\SQLdata\Backup\%NowDate%_%%I.bak'” 
ECHO. 
) 

REM Clean up the temp file 
IF EXIST “%DBList%” DEL /F /Q “%DBList%” 

ENDLOCAL 

Я получил имя сервера с помощью запроса - SELECT @@SERVERNAME на всякий случай, и путь точно такой же.

Я запустил его вручную и через планировщик задач Windows с правами администратора, но я не получаю никаких резервных копий в указанной папке. Я не знаю, что не так, я здесь. Я совершенно новичок в этом, пожалуйста, если кто-нибудь знает, тогда посоветуйте мне, спасибо.

+0

SQL Server Management Studio имеет ** планы обслуживания **, которые делают это для вас в гораздо более простой, гораздо более простой в использовании моде ..... –

ответ

2

Я бы использовал текстовый редактор, например Editplus, или, если нужно, Notepad - не WP для создания пакетных файлов.

Batch не понимает «..» - это нужно ". - То же самое касается апострофы

Также вы не указываете whay вы имеете в виду the specified folder Ваши имена путей являются relative так, например. вы выбираете MY-PC\SQLEXPRESS относительно текущего каталога. Вы можете установить текущий каталог с помощью инструкции cd "c:\desired\directory\name", или вы можете использовать абсолютный путь (из корня диска). Но используйте сортировку цитат из propoer.

+0

Нет проблем с путями, предполагая 'D: \ SQLdata \ Backup' существует. Единственная проблема, которую я вижу, это смешные цитаты. Удостоверьтесь, что вы используете прямые кавычки, а не те, с которыми связаны файлы MS. Видя скрипт прямо с http://www.howtogeek.com/50299/batch-script-to-backup-all-your-sql-server-databases/ Я не вижу, чтобы у него была какая-то проблема, он был протестирован и работает. Попробуйте скопировать и вставить оригинальную страницу прямо в блокнот. –

+0

@Magoo Изменение котировок, работающих для меня, спасибо – Learner

1

Вы можете получить сценарии резервного копирования от https://ola.hallengren.com/ для резервного копирования баз данных на вашем SQL Express db mark_s, упомянутых с помощью SQL Management Studio, и я согласен с тем, что это упрощает управление SQL Express.

Если вы решите использовать сценарии из Ola Hallengren, вы в основном запускаете сценарий настройки, который вы загружаете с главной страницы. Затем просмотрите страницу «DatabaseBackup» (связанную с домашней страницей). Примерно на полпути вниз страница представляет собой список примеров, которые должны прояснить, как использовать запросы.

Смежные вопросы