Est-ce que quelqu'un sait s'il existe un moyen de mettre en script la sauvegarde de SQL Server dans un fichier de commandes, afin qu'il puisse être exécuté à partir d'une ligne de commande?Instruction de sauvegarde de la ligne de commande SQL Server
Répondre
Voici un exemple, vous pouvez exécuter un script batch (copier-coller dans un fichier .bat), en utilisant l'utilitaire SQLCMD dans les outils client SQL Server:
BACKUP:
echo off
cls
echo -- BACKUP DATABASE --
set /p DATABASENAME=Enter database name:
:: filename format Name-Date (eg MyDatabase-2009.5.19.bak)
set DATESTAMP=%DATE:~-4%.%DATE:~7,2%.%DATE:~4,2%
set BACKUPFILENAME=%CD%\%DATABASENAME%-%DATESTAMP%.bak
set SERVERNAME=your server name here
echo.
sqlcmd -E -S %SERVERNAME% -d master -Q "BACKUP DATABASE [%DATABASENAME%] TO DISK = N'%BACKUPFILENAME%' WITH INIT , NOUNLOAD , NAME = N'%DATABASENAME% backup', NOSKIP , STATS = 10, NOFORMAT"
echo.
pause
RESTORE:
echo off
cls
echo -- RESTORE DATABASE --
set /p BACKUPFILENAME=Enter backup file name:%CD%\
set /p DATABASENAME=Enter database name:
set SERVERNAME=your server name here
sqlcmd -E -S %SERVERNAME% -d master -Q "ALTER DATABASE [%DATABASENAME%] SET SINGLE_USER WITH ROLLBACK IMMEDIATE"
:: WARNING - delete the database, suits me
:: sqlcmd -E -S %SERVERNAME% -d master -Q "IF EXISTS (SELECT * FROM sysdatabases WHERE name=N'%DATABASENAME%') DROP DATABASE [%DATABASENAME%]"
:: sqlcmd -E -S %SERVERNAME% -d master -Q "CREATE DATABASE [%DATABASENAME%]"
:: restore
sqlcmd -E -S %SERVERNAME% -d master -Q "RESTORE DATABASE [%DATABASENAME%] FROM DISK = N'%CD%\%BACKUPFILENAME%' WITH REPLACE"
:: remap user/login (http://msdn.microsoft.com/en-us/library/ms174378.aspx)
sqlcmd -E -S %SERVERNAME% -d %DATABASENAME% -Q "sp_change_users_login 'Update_One', 'login-name', 'user-name'"
sqlcmd -E -S %SERVERNAME% -d master -Q "ALTER DATABASE [%DATABASENAME%] SET MULTI_USER"
echo.
pause
Pourquoi ne pas restaurer la base de données à partir du fichier? –
En outre, ajouter une référence au manuel d'origine serait génial. Merci! –
@ hamish-grubijan - J'ai ajouté Restaurer à la réponse –
si vous avez besoin du fichier batch pour planifier la sauvegarde, les outils de gestion SQL ont des tâches planifiées construit en ...
En comparaison avec d'autres réponses, ce n'est pas assez informatif. –
Parlez-vous de ça? "https://support.microsoft.com/en-us/kb/930615" –
J'utilise SQL Server 2005 Express, et j'ai dû activer la connexion de Canaux nommés pour pouvoir sauvegarder à partir de la commande Windows. Mon dernier script est le suivant:
@echo off
set DB_NAME=Your_DB_Name
set BK_FILE=D:\DB_Backups\%DB_NAME%.bak
set DB_HOSTNAME=Your_DB_Hostname
echo.
echo.
echo Backing up %DB_NAME% to %BK_FILE%...
echo.
echo.
sqlcmd -E -S np:\\%DB_HOSTNAME%\pipe\MSSQL$SQLEXPRESS\sql\query -d master -Q "BACKUP DATABASE [%DB_NAME%] TO DISK = N'%BK_FILE%' WITH INIT , NOUNLOAD , NAME = N'%DB_NAME% backup', NOSKIP , STATS = 10, NOFORMAT"
echo.
echo Done!
echo.
Ça marche très bien ici !!
Seba Illingworth le code « , Dans le cas où vous avez besoin de temps dans votre nom de fichier (il donne 2014-02-21_1035)
echo off
cls
echo -- BACKUP DATABASE --
set /p DATABASENAME=Enter database name:
For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%c-%%a-%%b)
For /f "tokens=1-2 delims=/:" %%a in ("%TIME%") do (set mytime=%%a%%b)
:: filename format Name-Date (eg MyDatabase-2009.5.19.bak)
set DATESTAMP=%mydate%_%mytime%
set BACKUPFILENAME=%CD%\%DATABASENAME%-%DATESTAMP%.bak
set SERVERNAME=.
echo.
sqlcmd -E -S %SERVERNAME% -d master -Q "BACKUP DATABASE [%DATABASENAME%] TO DISK = N'%BACKUPFILENAME%' WITH INIT , NOUNLOAD , NAME = N'%DATABASENAME% backup', NOSKIP , STATS = 10, NOFORMAT"
echo.
pause
Combine Remove Old Backup files avec le script ci-dessus, cela peut effectuer une sauvegarde par un planificateur, gardez dernier 10 fichiers de sauvegarde
echo off
:: set folder to save backup files ex. BACKUPPATH=c:\backup
set BACKUPPATH=<<back up folder here>>
:: set Sql Server location ex. set SERVERNAME=localhost\SQLEXPRESS
set SERVERNAME=<<sql host here>>
:: set Database name to backup
set DATABASENAME=<<db name here>>
:: filename format Name-Date (eg MyDatabase-2009-5-19_1700.bak)
For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%c-%%a-%%b)
For /f "tokens=1-2 delims=/:" %%a in ("%TIME%") do (set mytime=%%a%%b)
set DATESTAMP=%mydate%_%mytime%
set BACKUPFILENAME=%BACKUPPATH%\%DATABASENAME%-%DATESTAMP%.bak
echo.
sqlcmd -E -S %SERVERNAME% -d master -Q "BACKUP DATABASE [%DATABASENAME%] TO DISK = N'%BACKUPFILENAME%' WITH INIT , NOUNLOAD , NAME = N'%DATABASENAME% backup', NOSKIP , STATS = 10, NOFORMAT"
echo.
:: In this case, we are choosing to keep the most recent 10 files
:: Also, the files we are looking for have a 'bak' extension
for /f "skip=10 delims=" %%F in ('dir %BACKUPPATH%\*.bak /s/b/o-d/a-d') do del "%%F"
Vous pouvez utiliser sqlcmd pour exécuter une sauvegarde ou tout autre script T-SQL. Vous pouvez trouver les instructions détaillées et des exemples sur divers commutateurs sqlcmd utiles dans cet article: Working with the SQL Server command line (sqlcmd)
- 1. SQL SERVER, instruction SELECT avec auto générer la ligne id
- 2. Sauvegarde par mot de passe Sauvegarde SQL Server
- 3. Ligne de commande Script pour le nettoyage du projet VS + sauvegarde SQL + zipping?
- 4. Sauvegarde MS SQL Server 2005?
- 5. SQL Server 2005 erreur d'installation de la ligne de commande ADD_LOCAL propriété déjà installée
- 6. Sql Server Commande SHRINKDATABASE
- 7. Quelle est la meilleure façon de démarrer et d'arrêter SQL Server à partir de la ligne de commande?
- 8. Arguments de la ligne de commande WinMain
- 9. oracle ligne de commande de la question
- 10. Décalage de ligne dans SQL Server
- 11. Récupération de "messages de sortie" à partir de la commande SQL par lots (SQL Server)
- 12. SQL Server: affichage de la première ligne d'enregistrements groupés
- 13. Comment faire une sauvegarde complète de la base de données mysql en utilisant l'utilitaire de ligne de commande mysqldump
- 14. Quelle est la meilleure façon de comparer deux fichiers de sauvegarde de base de données avec MS Sql Server 2005?
- 15. arguments de ligne de commande
- 16. Analyse de ligne de commande
- 17. Déboguer avec la ligne de commande
- 18. La restauration de la sauvegarde SQL Server Express ne fonctionne pas pour l'abonnement asp.net
- 19. Importation de la base de données Sql Server 2005 dans Sql Server express 2008
- 20. SQL Server le meilleur moyen de calculer datediff entre la ligne actuelle et la ligne suivante?
- 21. Bogue de SQL Server?
- 22. Meilleure stratégie de réplication de serveur de sauvegarde chaud/chaud (SQL Server 2005)
- 23. Génération de la ligne de commande de Platform Builder
- 24. application de ligne de commande de débogage
- 25. Sortie vers la ligne de commande si elle est démarrée à partir de la ligne de commande
- 26. SQL Server 2005 - Comment créer un nouveau jeu de sauvegarde pour une sauvegarde unique d'une base de données?
- 27. Quels sont les outils de sauvegarde Windows Server 2003 recommandés?
- 28. Rétrogradation de SQL Server 2008 vers SQL Server 2005
- 29. SQL Server - Quelle est la date/heure de la dernière ligne insérée d'une table?
- 30. Utilitaire de ligne de commande personnalisé. Comment?
http://stackoverflow.com/questions/122690/what-is-a-simple-command-line-program-or-script -to-backup-sql-server-databases –