¿Alguien sabe si hay una forma de secuenciar la copia de seguridad de SQL Server en un archivo por lotes, para que se pueda ejecutar desde una línea de comandos?Declaración de copia de seguridad de la línea de comandos del Servidor SQL
Respuesta
He aquí un ejemplo que puede ejecutarse como un archivo por lotes (copiar y pegar en un archivo .bat), mediante la utilidad SQLCMD en las herramientas de cliente de 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
¿Qué hay de restaurar la base de datos del archivo? –
Además, agregar una referencia al manual original sería increíble. ¡Gracias! –
@ hamish-grubijan - Agregué Restaurar a la respuesta –
si necesita el archivo por lotes para programar la copia de seguridad, las herramientas de administración de SQL han construido las tareas programadas en ...
Comparando a otras respuestas esto no es suficientemente informativo. –
¿Estás hablando de esto? "https://support.microsoft.com/en-us/kb/930615" –
Estoy usando SQL Server 2005 Express, y tuve que habilitar la conexión de Canalizaciones con nombre para poder realizar una copia de seguridad desde el Comando de Windows. Mi script final es el siguiente:
@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.
¡Está funcionando bien aquí!
Seba Illingworth código 's, en caso de que necesite tiempo en su nombre de archivo (que da 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
Combinar Remove Old Backup files con script de arriba, entonces esto puede llevar a cabo la copia de seguridad por un programador, mantenga última 10 archivos de copia de seguridad
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"
Puede usar sqlcmd para ejecutar una copia de seguridad o cualquier otra secuencia de comandos T-SQL. Puede encontrar las instrucciones detalladas y ejemplos en varios modificadores sqlcmd útiles en este artículo: Working with the SQL Server command line (sqlcmd)
- 1. secuencia de comandos de copia de seguridad del servidor sql
- 2. Copia de seguridad de servidor SQL a UNC
- 3. ¿Generar scripts del servidor SQL desde la línea de comandos?
- 4. ¿Cómo funciona la copia de seguridad en el servidor SQL?
- 5. Error al realizar una copia de seguridad con mysqldump en la línea de comandos de mysql
- 6. ¿Cómo hacer una copia de seguridad del servidor de git?
- 7. ¿Qué es un programa o script de línea de comandos simple para hacer una copia de seguridad de las bases de datos del servidor SQL?
- 8. ¿Es posible restaurar la copia de seguridad de Sql Server 2008 en el servidor sql 2005
- 9. Copia de seguridad y restauración de MySQL desde la línea de comandos
- 10. Cómo copiar la base de datos del servidor sql de uno a otro servidor sin ninguna copia de seguridad
- 11. Nombre del servidor PHP de la línea de comandos
- 12. Copia de seguridad del repositorio local Mercurial
- 13. Restaurar la última copia de seguridad del archivo bak con la secuencia de comandos
- 14. Problemas de restauración de copia de seguridad de SQL Server?
- 15. Permisos de copia de seguridad
- 16. Copia de seguridad del historial de comandos del terminal mac OSX
- 17. Restauración de una copia de seguridad en un servidor diferente - Permisos de usuario
- 18. SQL Server 2008 - cómo comprimir archivos de copia de seguridad y moverlos al servidor remoto
- 19. Restablecer acceso de copia de seguridad denegado
- 20. línea de comandos TFS: ¿qué servidor?
- 21. SQL Declaración servidor caso
- 22. Usando C# y SMO, ¿cómo agrego un dispositivo de copia de seguridad a un servidor SQL?
- 23. plan de copia de seguridad de MongoDB
- 24. Copia de seguridad automática de la base de datos MySQL en el servidor de Linux
- 25. Copia de trabajo de Subversion más nueva que el servidor debido a la reversión de la copia de seguridad
- 26. SQL Server: ¿cómo consultar cuándo se realizó la última copia de seguridad del registro de transacciones?
- 27. mysqldump copia de seguridad y restauración en el servidor remoto
- 28. Despliegue de la base de datos: secuencia de comandos o copia de seguridad
- 29. Línea de comando del lado del servidor
- 30. Copia de seguridad del área de trabajo de Eclipse
http://stackoverflow.com/questions/122690/what-is-a-simple-command-line-program-or-script -to-backup-sql-server-databases –