una todas sentencia seguridad script restauracion respaldo respaldar procedimiento para las hacer datos crear copia como bases almacenado sql-server command-line backup

todas - Declaración de copia de seguridad de línea de comando de SQL Server



script para hacer backup sql server (6)

¿Alguien sabe si existe una forma de crear una copia de seguridad de la copia de seguridad de SQL Server en un archivo por lotes, para que se pueda ejecutar desde una línea de comandos?


Aquí hay un ejemplo que puede ejecutar como un script por lotes (copiar y pegar en un archivo .bat), usando la utilidad SQLCMD en las herramientas del cliente del servidor Sql:

APOYO:

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

RESTAURAR:

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


Código de , en caso de que necesite tiempo en su nombre de archivo (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


Combine Remove Old Backup files con la secuencia de comandos anterior, luego puede realizar la copia de seguridad mediante un planificador, mantenga los últimos 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"


Estoy usando SQL Server 2005 Express, y tuve que habilitar la conexión de Canalizaciones con nombre para poder hacer una copia de seguridad desde el Comando de Windows. Mi guión final es este:

@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í!



si necesita el archivo de proceso por lotes para programar la copia de seguridad, las herramientas de administración de SQL tienen tareas programadas integradas ...