¿Qué es un simple programa de línea de comandos o script para hacer copias de seguridad de bases de datos SQL server?


He sido demasiado laxo con la realización de copias de seguridad de bases de datos en nuestros servidores internos.

¿Hay un programa simple de línea de comandos que pueda usar para hacer copias de seguridad de ciertas bases de datos en SQL Server 2005? ¿O hay un simple VBScript?

Author: Frank Krueger, 2008-09-23

10 answers

Para hacer una copia de seguridad de una sola base de datos desde la línea de comandos, use osql o sqlcmd.

"C:\Program Files\Microsoft SQL Server\90\Tools\Binn\osql.exe" 
    -E -Q "BACKUP DATABASE mydatabase TO DISK='C:\tmp\db.bak' WITH FORMAT"

También querrá leer la documentación sobre BACKUP y RESTORE y procedimientos generales.

 99
Author: Craig Trader,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-30 23:24:53

Programe lo siguiente para respaldar todas las bases de datos:

Use Master

Declare @ToExecute VarChar(8000)

Select @ToExecute = Coalesce(@ToExecute + 'Backup Database ' + [Name] + ' To Disk =     ''D:\Backups\Databases\' + [Name]   + '.bak'' With Format;' + char(13),'')
From
Master..Sysdatabases
Where
[Name] Not In ('tempdb')
and databasepropertyex ([Name],'Status') = 'online'

Execute(@ToExecute)

También hay más detalles en mi blog: cómo Automatizar las copias de seguridad de SQL Server Express.

 9
Author: GateKiller,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-23 18:09:48

Utilizo ExpressMaint.

Para hacer una copia de seguridad de todas las bases de datos de usuarios que hago por ejemplo:

C:>ExpressMaint.exe - S (local)\sqlexpress-D ALL_USER-T DB-BU HOURS-BV 1-B c:\backupdir \ - DS

 9
Author: Martin Meixger,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-10 01:49:57

Encontré esto en una página de soporte de Microsoft http://support.microsoft.com/kb/2019698 .

Funciona muy bien! Y ya que vino de Microsoft, siento que es bastante legítimo.

Básicamente hay dos pasos.

  1. Cree un procedimiento almacenado en su base de datos maestra. Vea el enlace msft o si está roto intente aquí: http://pastebin.com/svRLkqnq
  2. Programe la copia de seguridad desde su programador de tareas. Es posible que desee poner en una .bat or .archivo cmd primero y luego programar ese archivo.

    sqlcmd -S YOUR_SERVER_NAME\SQLEXPRESS -E -Q "EXEC sp_BackupDatabases @backupLocation='C:\SQL_Backup\', @backupType='F'"  1>c:\SQL_Backup\backup.log            
    

Obviamente reemplaza TU_SERVER_NAME con el nombre de tu computadora u opcionalmente inténtalo .\SQLEXPRESS y asegúrese de que existe la carpeta de copia de seguridad. En este caso está tratando de ponerlo en c:\SQL_Backup

 5
Author: John W.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-05-25 22:18:52

Puede utilizar la aplicación de copia de seguridad de ApexSQL. Aunque es una aplicación GUI, tiene todas sus características soportadas en CLI. Es posible realizar operaciones de copia de seguridad de una sola vez o crear un trabajo que realice copias de seguridad de bases de datos especificadas de forma regular. Puede comprobar las reglas del interruptor y exampled en los artículos:

 5
Author: P.Thompson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-30 15:04:43

Estoy usando tsql en una infraestructura Linux/UNIX para acceder a bases de datos MSSQL. Aquí hay un script de shell simple para volcar una tabla a un archivo:

#!/usr/bin/ksh
#
#.....
(
tsql -S {database} -U {user} -P {password} <<EOF
select * from {table}
go
quit
EOF
) >{output_file.dump}
 4
Author: Ira C,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-20 00:22:17

Eventual si usted no tiene una conexión de confianza como el interruptor –E declara

Utilice la siguiente línea de comandos

"[program dir]\[sql server version]\Tools\Binn\osql.exe" -Q "BACKUP DATABASE mydatabase TO DISK='C:\tmp\db.bak'" -S [server] –U [login id] -P [password]

Donde

[program dir] es el directorio donde se encuentra el osql.exe exists

On 32bit OS c:\Program Files\Microsoft SQL Server\
On 64bit OS c:\Program Files (x86)\Microsoft SQL Server\

[versión de sql server] su versión de sql server 110 o 100 o 90 u 80 comienza con el número más grande

[server] su nombre de servidor o ip del servidor

[id de inicio de sesión] su nombre de inicio de sesión de usuario de ms-sql server

[password] el inicio de sesión requerido contraseña

 2
Author: George Vrynios,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-25 12:49:44

A continuación se muestra el script simple para hacer copias de seguridad de la base de datos.

DECLARE @name VARCHAR(50) -- database name  
DECLARE @path VARCHAR(256) -- path for backup files  
DECLARE @fileName VARCHAR(256) -- filename for backup  
DECLARE @fileDate VARCHAR(20) -- used for file name


-- specify database backup directory
SET @path = 'C:\Backup\'  


-- specify filename format
SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112) 


DECLARE db_cursor CURSOR FOR  
SELECT name 
FROM master.dbo.sysdatabases 
WHERE name NOT IN ('master','model','msdb','tempdb')  -- exclude these databases


OPEN db_cursor   
FETCH NEXT FROM db_cursor INTO @name   


WHILE @@FETCH_STATUS = 0   
BEGIN   
       SET @fileName = @path + @name + '_' + @fileDate + '.BAK'  
       BACKUP DATABASE @name TO DISK = @fileName  


       FETCH NEXT FROM db_cursor INTO @name   
END   


CLOSE db_cursor   
DEALLOCATE db_cursor
 2
Author: Jitendra Pancholi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-19 08:13:08

Podría usar un script VB que escribí exactamente para este propósito: https://github.com/ezrarieben/mssql-backup-vbs /

Programe una tarea en el "Programador de tareas" para ejecutar el script como desee y hará una copia de seguridad de toda la base de datos en un archivo BAK y la guardará donde usted especifique.

 0
Author: ezrarieben,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-11 20:10:41

Si puede encontrar los archivos DB... "cp DBFiles backup /"

Casi seguro no es recomendable en la mayoría de los casos, pero es simple como todo el atuendo.

 -10
Author: BCS,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-04-14 16:36:46